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网络爬虫实例讲解
Apr 28 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
Zabbix实现微信报警功能
Oct 09 Python
python去掉空白行的多种实现代码
Mar 19 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
Python闭包思想与用法浅析
Dec 27 Python
python中的global关键字的使用方法
Aug 20 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
我对PyTorch dataloader里的shuffle=True的理解
May 20 Python
python 中的@运算符使用
May 26 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获取程序执行的时间
2013/06/09 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
微信小程序 共用变量值的实现
2017/07/12 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
工作中个人的自我评价
2013/12/31 职场文书
假面舞会策划方案
2014/05/29 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
客房领班岗位职责
2015/02/11 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
nginx七层负载均衡配置详解
2022/07/15 Servers
spring 项目实现限流方法示例
2022/07/15 Java/Android