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生成指定长度的随机数密码
Jan 23 Python
Python的Flask框架与数据库连接的教程
Apr 20 Python
Python批量按比例缩小图片脚本分享
May 21 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
详解Python中is和==的区别
Mar 21 Python
对django views中 request, response的常用操作详解
Jul 17 Python
使用Python函数进行模块化的实现
Nov 15 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
python2和python3哪个使用率高
Jun 23 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
Jun 21 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
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
Yii框架登录流程分析
2014/12/03 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
js实现列表按字母排序
2020/08/11 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
学校安全责任书
2014/04/14 职场文书
医师定期考核实施方案
2014/05/07 职场文书
建设投标担保书
2014/05/13 职场文书
求职信怎么写
2014/05/23 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python