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分析apache访问日志脚本分享
Feb 26 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
Django如何配置mysql数据库
May 04 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
Python数据持久化存储实现方法分析
Dec 21 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
Python 如何在字符串中插入变量
Aug 01 Python
python用opencv 图像傅里叶变换
Jan 04 Python
4种方法python批量修改替换列表中元素
Apr 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
php合并js请求的例子
2013/11/01 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
python格式化字符串实例总结
2014/09/28 Python
python中的编码知识整理汇总
2016/01/26 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
浪费资源的建议书
2014/03/12 职场文书
房屋买卖协议书
2014/04/10 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
贷款工资证明范本
2015/06/12 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis