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多线程下的变量问题
Apr 28 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python利用socketserver实现并发套接字功能
Jan 26 Python
python学生管理系统代码实现
Apr 05 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
pandas 读取各种格式文件的方法
Jun 22 Python
selenium+python实现自动化登录的方法
Sep 04 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
简单的Python调度器Schedule详解
Aug 30 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
python模板入门教程之flask Jinja
Apr 11 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 变量定义方法
2009/06/14 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
JS简单计算器实例
2015/01/20 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
django ajax json的实例代码
2018/05/29 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
如何通过Python实现标签云算法
2019/07/02 Python
python如何统计代码运行的时长
2019/07/24 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
python解析多层json操作示例
2019/12/30 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL