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翻译软件实现代码(使用google api完成)
Nov 26 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
在python中实现强制关闭线程的示例
Jan 22 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
python处理写入数据代码讲解
Oct 22 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
Python数据类型最全知识总结
May 31 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 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
限制文本框输入N个字符的js代码
2010/05/13 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python实现截屏的函数
2015/07/25 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python使用RNN实现文本分类
2018/05/24 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python 3 判断2个字典相同
2019/08/06 Python
python 弧度与角度互转实例
2020/04/15 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
护理学毕业生自荐信
2013/10/02 职场文书
三年级数学教学反思
2014/01/31 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
护士个人自我鉴定
2014/03/24 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
团员年度个人总结
2015/02/26 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL