当前位置: 首页 > 编程笔记 >

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

谢俊悟
2023-03-14
本文向大家介绍python通过BF算法实现关键词匹配的方法,包括了python通过BF算法实现关键词匹配的方法的使用技巧和注意事项,需要的朋友参考一下

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

 类似资料:
  • 主要内容:BF算法原理,BF算法实现,BF算法时间复杂度,总结串的模式匹配算法,通俗地理解,是一种用来判断两个串之间是否具有"主串与子串"关系的算法。 主串与子串:如果串 A(如 "shujujiegou")中包含有串 B(如 "ju"),则称串 A 为主串,串 B 为子串。主串与子串之间的关系可简单理解为一个串 "包含" 另一个串的关系。 实现串的模式匹配的算法主要有以下两种: 普通的模式匹配算法; 快速模式匹配算法; 本节,先来学习 普通模式匹配(BF)

  • 本文向大家介绍python TF-IDF算法实现文本关键词提取,包括了python TF-IDF算法实现文本关键词提取的使用技巧和注意事项,需要的朋友参考一下 TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词。所以我们需要一个重要性调整系数来衡量一个词是不是常见词。该权重为IDF(Inver

  • 本文向大家介绍1秒50万字!js实现关键词匹配,包括了1秒50万字!js实现关键词匹配的使用技巧和注意事项,需要的朋友参考一下 在论坛和聊天室这样的场景里,为了保证用户体验,我们经常需要屏蔽很多不良词语。对于单个关键词查找,自然是indexOf、正则那样的方式效率比较高。但对于关键词较多的情况下,多次重复调用indexOf、正则的话去匹配全文的话,性能消耗非常大。由于目标字符串通常来说体积都比较大

  • 本文向大家介绍python 实现敏感词过滤的方法,包括了python 实现敏感词过滤的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 测试结果: 1) 敏感词 100个 2) 敏感词 1000 个 从上面的实验我们可以看出,在DFA 算法只有在敏感词较多的情况下,才有意义。在百来个敏感词的情况下,甚至不如普通算法 下面从理论上推导时间复杂度,为了方便分析,首先假定消息文本是等长的,长度为

  • 本文向大家介绍字符串的模式匹配详解--BF算法与KMP算法,包括了字符串的模式匹配详解--BF算法与KMP算法的使用技巧和注意事项,需要的朋友参考一下 一.BF算法     BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后

  • 本文向大家介绍c语言实现的带通配符匹配算法,包括了c语言实现的带通配符匹配算法的使用技巧和注意事项,需要的朋友参考一下 原创代码。 ‘?'代表任意单个字符,‘*'代表任意0个或多个字符。常用于文件的搜素匹配。 以上所述就是本文的全部内容了,希望大家能够喜欢。