python通過(guò)BF算法實(shí)現(xiàn)關(guān)鍵詞匹配的方法
本文實(shí)例講述了python通過(guò)BF算法實(shí)現(xiàn)關(guān)鍵詞匹配的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
# -*- 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="為什么叫向量空間模型呢?其實(shí)我們可以把每個(gè)詞給看成一個(gè)維度,而詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構(gòu)成了一個(gè)i維空間圖,兩個(gè)文檔的相似度就是兩個(gè)空間圖的接近度。假設(shè)文章只有兩維的話,那么空間圖就可以畫(huà)在一個(gè)平面直角坐標(biāo)系當(dāng)中,讀者可以假想兩篇只有兩個(gè)詞的文章畫(huà)圖進(jìn)行理解。"
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
算法思想:目標(biāo)串t與模式串p逐詞比較,若對(duì)應(yīng)位匹配,則進(jìn)行下一位比較;若不相同,p右移1位,從p的第1位重新開(kāi)始比較。
算法特點(diǎn):整體移動(dòng)方向:可認(rèn)為在固定的情況下,p從左向右滑動(dòng);匹配比較時(shí),從p的最左邊位開(kāi)始向右逐位與t串中對(duì)應(yīng)位比較。p的滑動(dòng)距離為1,這導(dǎo)致BF算法匹配效率低(相比其他算法,如:BM,KMP,滑動(dòng)沒(méi)有跳躍)。
該算法的時(shí)間復(fù)雜度為O(len(t)*len(p)),空間復(fù)雜度為O(len(t)+len(p))
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- python制作填詞游戲步驟詳解
- python中文分詞教程之前向最大正向匹配算法詳解
- python實(shí)現(xiàn)中文分詞FMM算法實(shí)例
- Python自然語(yǔ)言處理之詞干,詞形與最大匹配算法代碼詳解
- python TF-IDF算法實(shí)現(xiàn)文本關(guān)鍵詞提取
- python實(shí)現(xiàn)機(jī)械分詞之逆向最大匹配算法代碼示例
- Python基于動(dòng)態(tài)規(guī)劃算法計(jì)算單詞距離
- python實(shí)現(xiàn)協(xié)同過(guò)濾推薦算法完整代碼示例
- Python聚類算法之凝聚層次聚類實(shí)例分析
- Python編程快速上手——瘋狂填詞程序?qū)崿F(xiàn)方法分析
相關(guān)文章
Python中的xml與dict的轉(zhuǎn)換方法詳解
這篇文章主要介紹了Python中的xml與dict的轉(zhuǎn)換方法詳解,xml 是指可擴(kuò)展標(biāo)記語(yǔ)言,一種標(biāo)記語(yǔ)言類似html,作用是傳輸數(shù)據(jù),而且不是顯示數(shù)據(jù)??梢宰远x標(biāo)簽,需要的朋友可以參考下2023-07-07
Python通過(guò)keyboard庫(kù)實(shí)現(xiàn)模擬和監(jiān)聽(tīng)鍵盤(pán)
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)keyboard庫(kù)實(shí)現(xiàn)模擬和監(jiān)聽(tīng)鍵盤(pán),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-10-10
python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python通過(guò)30秒就能學(xué)會(huì)的漂亮短程序代碼(過(guò)程全解)
這篇文章主要介紹了Python之30秒就能學(xué)會(huì)的漂亮短程序代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
python數(shù)據(jù)預(yù)處理方式 :數(shù)據(jù)降維
今天小編就為大家分享一篇python數(shù)據(jù)預(yù)處理方式 :數(shù)據(jù)降維,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
jupyter notebook運(yùn)行代碼沒(méi)反應(yīng)且in[ ]沒(méi)有*
本文主要介紹了jupyter notebook運(yùn)行代碼沒(méi)反應(yīng)且in[ ]沒(méi)有*,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Python常見(jiàn)字典內(nèi)建函數(shù)用法示例
這篇文章主要介紹了Python常見(jiàn)字典內(nèi)建函數(shù)用法,結(jié)合具體實(shí)例形式分析了Python字典內(nèi)建函數(shù)實(shí)現(xiàn)針對(duì)字典的長(zhǎng)度、hash運(yùn)算、鍵值對(duì)遍歷、獲取、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05

