本文实例讲述了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通过BF算法实现关键词匹配的方法相关推荐

  1. python关键字匹配_python通过BF算法实现关键词匹配的方法

    本文实例讲述了python通过BF算法实现关键词匹配的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: UTF-8 # filename ...

  2. python地图匹配_python通过BF算法实现关键词匹配的方法

    本文实例讲述了python通过BF算法实现关键词匹配的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: UTF-8 # filename ...

  3. python时间复杂度怎么算_python学习:算法和时间复杂度

    python学习:算法和时间复杂度 算法 什么是算法? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制. 算法也可以 ...

  4. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  5. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  6. python 字符串去空格_Python去除、替换字符串空格的处理方法

    个人想到的解决方法有两种,一种是 .replace(' old ',' new ') 第一个参数是需要换掉的内容比如空格,第二个是替换成的内容,可以把字符串中的空格全部替换掉. 第二种方法是像这样 s ...

  7. python实现冒泡排序视频_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

  8. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  9. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

最新文章

  1. Atom使用方法(快捷键,插件,汉化)
  2. 结合前段修改mysql表数据_jquery实现点击文字可编辑并修改保存至数据库
  3. 预测股票价格 模型_建立有马模型来预测股票价格
  4. Cannot resolve xxxx(依赖名):unknown
  5. 2017北理计算机考研复试线,北京理工大学2017年硕士研究生复试分数线
  6. SQL Server系统数据库–模型数据库
  7. Go语言学习之旅--初识GoLang
  8. dlibdotnet 人脸相似度源代码_C#开发的人脸左右相似度计算软件源码分析
  9. QD75D416轴PLC控制伺服电机16轴完整案例
  10. SPSS决策树和神经网络
  11. Nginx配置使用upstream负载均衡和proxy_cache缓存
  12. 武汉互联网公司和生活成本
  13. 读史笔记(I) 日光之下
  14. 我用unity开发的第一款游戏demo心得
  15. 用python画蜡笔小新的步骤_#6.1# 用python画出你的童年回忆
  16. Linux下的文件及文件后缀名
  17. [UE4C++程序]GameModule与Plugin
  18. TortoiseSVN文件夹及文件图标不显示解决方法
  19. Go 青年团聚召集令,2050,我们来了
  20. zt围棋是世界上最大的伪科学

热门文章

  1. matplotlib 横坐标少了一个点_收藏起来!比 matplotlib 效率高十倍的数据可视化神器!...
  2. plotloss记录
  3. Python unittest中初始化固件setUp和销毁固件tearDown详解
  4. Jmeter中JDBC Connection Configuration实现MySQL JDBC Request数据库处理
  5. java ArrayList的实现
  6. 004-linux常用命令-权限管理命令
  7. 【scarletthln 关于算法的一点总结】
  8. 感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?
  9. 软引用、弱引用、虚引用
  10. JasperReport里面的Demo