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编程中字符串和列表的基本知识讲解
Oct 14 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
Django中如何使用sass的方法步骤
Jul 09 Python
python爬虫之遍历单个域名
Nov 20 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
pyqt5实现井字棋的示例代码
Dec 07 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生成随机密码方法汇总
2015/08/27 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
实例讲解python中的协程
2018/10/08 Python
python3 读取Excel表格中的数据
2018/10/16 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
Weblogic的布署方式
2013/08/23 面试题
项目合作协议书
2014/04/16 职场文书
树转促学习心得体会
2014/09/10 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
十岁生日答谢词
2015/01/05 职场文书
挂职个人工作总结
2015/03/05 职场文书
农村党员干部承诺书
2015/05/04 职场文书
家长会主持词开场白
2015/05/29 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP