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处理文本文件实现生成指定格式文件的方法
Jul 31 Python
python optparse模块使用实例
Apr 09 Python
python requests 使用快速入门
Aug 31 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
Django+JS 实现点击头像即可更改头像的方法示例
Dec 26 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
Python PyCharm如何进行断点调试
Jul 05 Python
python判断变量是否为列表的方法
Sep 17 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 16 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
Python基础 括号()[]{}的详解
Nov 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python实现学生信息管理系统
2020/04/05 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
一份比较全的PHP面试题
2016/07/29 面试题
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
荷叶圆圆教学反思
2014/02/01 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
室内设计专业自荐信
2014/05/31 职场文书
高中同学会活动方案
2014/08/14 职场文书
自查自纠工作总结
2014/10/15 职场文书
面试通知短信
2015/04/20 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Python find()、rfind()方法及作用
2022/12/24 Python