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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
Python实现的一个简单LRU cache
Sep 26 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
python黑魔法之编码转换
Jan 25 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
Django Celery异步任务队列的实现
Jul 24 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Python进行区间取值案例讲解
Aug 02 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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 !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
图片完美缩放
2006/09/07 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
javascript 动态创建表格
2015/01/08 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
详解JavaScript的流程控制语句
2015/11/30 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
angular共享依赖的解决方案分享
2020/10/15 Javascript
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
numpy排序与集合运算用法示例
2017/12/15 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
历史学专业推荐信
2013/11/06 职场文书
商务主管岗位职责
2013/12/08 职场文书
中秋节主持词
2014/04/02 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
广播体操比赛口号
2014/06/10 职场文书
党员民主评议总结
2014/10/20 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
防暑降温通知书
2015/04/27 职场文书