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

本文实例讲述了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程序设计有所帮助。

时间: 2024-12-26 21:24:27

python通过BF算法实现关键词匹配的方法_python的相关文章

针对近期百度算法变动关键词消失解决方法!

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 近期百度算法的大调整可害死了一些专业的seo公司和站长.网站关键字排名下滑,甚至部分关键词在百度上消失.针对这个情况站长们也束手无策,不知道怎么才能挽救回来以前的排名.很多站长朋友和seoer说这次是百度人工了自己的网站,我看了之后很纳闷,的确百度是人工了一些网站,这是百度的一贯作风.但是大规模人工你的网站,你认为可能吗.试问百度公司的员工每

python标准算法实现数组全排列的方法_python

本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网站.分享给大家供大家参考.具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. def Mideng(li): if(type(li)!=list): return if(len(li)==1): return [li] result=[] for i in range(0,len(li[:])): bak=li[:] h

python实现计算资源图标crc值的方法_python

本文实例讲述了python实现计算资源图标crc值的方法,分享给大家供大家参考.具体方法如下: 实现该功能的关键在于解析资源信息,找到icon的数据,然后计算这些数据的crc 具体实现代码如下: def _get_iconcrc(self, file_path): """ Generates the crc32 hash of the icon of the file. @return: str, the str value of the file's icon "

Python实现网络端口转发和重定向的方法_python

本文实例讲述了Python实现网络端口转发和重定向的方法.分享给大家供大家参考,具体如下: [任务] 需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting). [解决方案] 两个使用threading和socket模块的类就能完成我们需要的端口转发和重定向. #encoding=utf8 #author: walker摘自<Python Cookbook(2rd)> #date: 2015-06-11 #function: 网络端口的转发和重

Python简单获取自身外网IP的方法_python

本文实例讲述了Python简单获取自身外网IP的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2016-03-07 #function: 获取自己的外网IP import requests from bs4 import BeautifulSoup #获取外网IP def GetOuterIP(): url = r'http://www.whereismyip.com/' r = requests.get(url) bTag

python基于windows平台锁定键盘输入的方法_python

本文实例讲述了python基于windows平台锁定键盘输入的方法.分享给大家供大家参考.具体分析如下: pywin32中没有BlockInput这个函数.VC++中有,发现这个方法就可以了. 该代码可阻断windows平台下的鼠标键盘输入,如下所示: # coding: UTF-8 import time from ctypes import * user32 = windll.LoadLibrary('user32.dll') user32.BlockInput(True); time.sl

Python实现从订阅源下载图片的方法_python

本文实例讲述了Python实现从订阅源下载图片的方法.分享给大家供大家参考.具体如下: 这段代码是基于python 3.4实现的,和python2.X 比起来有了好多差别啊. 这是一个练习,数据源来自网易订阅.代码如下: 复制代码 代码如下: __author__ = 'Saint' import os import urllib.request import json from html.parser import HTMLParser # 从获取的网页内容筛选图片的内容 class MyHt

Python获取网页上图片下载地址的方法_python

本文实例讲述了Python获取网页上图片下载地址的方法.分享给大家供大家参考.具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: 复制代码 代码如下: #!/user/bin/python3 import urllib2 from HTMLParser import HTMLParser class MyHtmlParser(HTMLParser):     links = []     def handle_starttag(self, tag, attrs):  

Python实现从百度API获取天气的方法_python

本文实例讲述了Python实现从百度API获取天气的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: __author__ = 'saint' import os import urllib.request import urllib.parse import json class weather(object):     # 获取城市代码的uri     code_uri = "http://apistore.baidu.com/microservice/cityinfo?