python通过BF算法实现关键词匹配的方法


Posted in Python onMarch 13, 2015

本文实例讲述了python通过BF算法实现关键词匹配的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/python

# -*- coding: UTF-8

# filename BF

import time

"""

t="this is a big apple,this is a big apple,this is a big apple,this is a big apple."

p="apple"

"""

t="为什么叫向量空间模型呢?其实我们可以把每个词给看成一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近度。假设文章只有两维的话,那么空间图就可以画在一个平面直角坐标系当中,读者可以假想两篇只有两个词的文章画图进行理解。"

p="读者"

i=0

count=0

start=time.time()

while (i <=len(t)-len(p)):

    j=0

    while (t[i]==p[j]):

                i=i+1

                j=j+1

        if j==len(p):

            break         

        elif (j==len(p)-1):

            count=count+1

    else:

        i=i+1

        j=0

print count

print time.time()-start

 
算法思想:目标串t与模式串p逐词比较,若对应位匹配,则进行下一位比较;若不相同,p右移1位,从p的第1位重新开始比较。

算法特点:整体移动方向:可认为在固定的情况下,p从左向右滑动;匹配比较时,从p的最左边位开始向右逐位与t串中对应位比较。p的滑动距离为1,这导致BF算法匹配效率低(相比其他算法,如:BM,KMP,滑动没有跳跃)。

该算法的时间复杂度为O(len(t)*len(p)),空间复杂度为O(len(t)+len(p))

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
python实现网页链接提取的方法分享
Feb 25 Python
Python守护线程用法实例
Jun 23 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
python 实现矩阵按对角线打印
Nov 29 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
详解scrapy内置中间件的顺序
Sep 28 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 #Python
python实现简单温度转换的方法
Mar 13 #Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 #Python
Python比较两个图片相似度的方法
Mar 13 #Python
python通过urllib2获取带有中文参数url内容的方法
Mar 13 #Python
python将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 #Python
python通过正则查找微博@(at)用户的方法
Mar 13 #Python
You might like
优化PHP代码的53条建议
2008/03/27 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
Python如何批量生成和调用变量
2020/11/21 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
绿色环保标语
2014/06/12 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
先进单位申报材料
2014/12/25 职场文书
指导教师推荐意见
2015/06/05 职场文书
风之谷观后感
2015/06/11 职场文书
Python面向对象编程之类的概念
2021/11/01 Python
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis