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对比C语言的编程思想差异
Aug 30 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python直接获取API传递回来的参数方法
Dec 17 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
python 写一个文件分发小程序
Dec 05 Python
Python关于拓扑排序知识点讲解
Jan 04 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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中soap的用法实例
2014/10/24 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python购物车程序简单代码
2018/04/18 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
python处理大日志文件
2019/07/23 Python
简述 Python 的类和对象
2020/08/21 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
益达广告词
2014/03/14 职场文书
软件项目开发计划书
2014/05/01 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
预备党员群众意见
2015/06/01 职场文书
党支部考察意见范文
2015/06/02 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers