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编写分析Python程序性能的工具的教程
Apr 01 Python
在Django的session中使用User对象的方法
Jul 23 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
Python流程控制 if else实现解析
Sep 02 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
Python -m参数原理及使用方法解析
Aug 21 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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/09/30 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
php中strtotime函数性能分析
2016/11/20 PHP
javascript事件问题
2009/09/05 Javascript
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
HTML的select控件美化
2017/03/27 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
python实现的文件同步服务器实例
2015/06/02 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python 进程池pool使用详解
2020/10/15 Python
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
大型会议接待方案
2014/03/01 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
先进个人主要事迹范文
2015/11/04 职场文书