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判断、获取一张图片主色调的2个实例
Apr 10 Python
pycharm 使用心得(四)显示行号
Jun 05 Python
Python中除法使用的注意事项
Aug 21 Python
Python找出list中最常出现元素的方法
Jun 14 Python
python中ASCII码和字符的转换方法
Jul 09 Python
python实现多进程代码示例
Oct 31 Python
python实现五子棋小程序
Jun 18 Python
详解Django 时间与时区设置问题
Jul 23 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
python list的index()和find()的实现
Nov 16 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弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
asp批量修改记录的代码
2008/06/25 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JS前端笔试题分析
2016/12/19 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
Python实现获取操作系统版本信息方法
2015/04/08 Python
python使用socket连接远程服务器的方法
2015/04/29 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
医院保洁服务方案
2014/06/11 职场文书
师范大学生求职信
2014/06/13 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
护士个人年度总结范文
2015/02/13 职场文书
工作岗位职责范本
2015/02/15 职场文书
如何写新闻稿
2015/07/18 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
mysql 带多个条件的查询方式
2021/06/05 MySQL