當前位置:成語大全網 - 漢語詞典 - Python詞根詞綴詞典

Python詞根詞綴詞典

FlashText算法是Vikash Singh在2017發表的壹個大規模關鍵詞替換算法。該算法的時間復雜度僅由文本長度(N)決定,算法的時間復雜度為O(N)。

對於正則表達式的替換,算法的時間復雜度還需要考慮要替換的關鍵字個數(m),所以時間復雜度為O(MxN)。

簡而言之,基於FlashText算法的字符串替換比正則表達式替換快m倍以上,這個m就是要替換的關鍵字個數。關鍵詞越多,FlashText算法的優勢越明顯。

下面介紹如何使用flashtext算法,基於Python中的FlashText模塊查找和替換字符串。如果妳覺得對妳的項目組有幫助,請記得轉發給作者。

1.準備好的

在開始之前,您應該確保Python和pip已經成功安裝在您的計算機上。如果沒有,可以訪問這篇文章:超詳細的Python安裝指南進行安裝。

(可選1)如果使用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析和挖掘的好幫手——Anaconda,內置了Python和pip。

(可選2)另外,推薦妳使用VSCode編輯器,它有很多優點:Python編程的最佳夥伴——VS代碼詳細指南。

請選擇以下方式之壹來輸入命令安裝依賴項:

在1中打開Cmd(開始-運行-CMD)。Windows環境。

2.MAC OS環境下的開放終端(命令+空格輸入終端)。

3.如果使用VSCode編輯器或者Pycharm,可以直接使用界面底部的終端。

pip安裝flashtext

2.基本用途

提取關鍵詞

提取關鍵字的壹個最基本的例子如下:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.添加關鍵字

keyword_processor.add_keyword('大蘋果','紐約' )

keyword_processor.add_keyword('灣區' )

# 3.處理目標句子並提取相應的關鍵詞

keywords _ found = keyword _ processor . extract _ keywords('我愛大蘋果和灣區。')

# 4.結果

打印(關鍵詞_找到)

# ['紐約','灣區']

其中add_keyword的第壹個參數代表要搜索的關鍵字,第二個參數是給關鍵字壹個別名,如果找到就會顯示為別名。

替換關鍵字

如果要替換關鍵字,只需調用處理器的replace_keywords函數:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.添加關鍵字

keyword_processor.add_keyword('新德裏',' NCR地區' )

# 3.替換關鍵字

new _ sentence = keyword _ processor . replace _ keywords('我愛大蘋果和新德裏。')

# 4.結果

打印(新句子)

# '我愛紐約和NCR地區'

關鍵字區分大小寫

如果需要準確提取和識別大寫和小寫字母,可以在處理器初始化時設置sensitive參數:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器,註意將case_sensitive設置為TRUE。

keyword _ processor = keyword processor(區分大小寫= True)

# 2.添加關鍵字

keyword_processor.add_keyword('大蘋果','紐約' )

keyword_processor.add_keyword('灣區' )

# 3.處理目標句子並提取相應的關鍵詞

keywords _ found = keyword _ processor . extract _ keywords('我愛大蘋果和灣區。')

# 4.結果

打印(關鍵詞_找到)

# ['灣區']

標記關鍵字位置

如果需要獲取關鍵字在句子中的位置,只需添加span_info=True參數來extract_keywords:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.添加關鍵字

keyword_processor.add_keyword('大蘋果','紐約' )

keyword_processor.add_keyword('灣區' )

# 3.處理目標句子並提取相應的關鍵詞,標記關鍵詞的起止位置。

keywords _ found = keyword _ processor . extract _ keywords('我愛大蘋果和灣區。',span_info= True)

# 4.結果

打印(關鍵詞_找到)

# [('紐約',7,16),('灣區',21,29)]

獲取當前所有關鍵詞

如果需要獲取目前已經添加的所有關鍵詞,只需調用處理器的get_all_keywords函數即可:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.添加關鍵字

keyword _ processor . add _ keyword(“J2EE”、“Java”)

keyword_processor.add_keyword(“顏色”、“顏色”)

# 3.獲取所有關鍵字

關鍵字_處理器. get _所有關鍵字()

# output: {'colour': 'color ',' j2ee': 'Java'}

批量添加關鍵詞

批量添加關鍵字有兩種方式,壹種是通過字典,另壹種是通過數組:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.(壹)通過字典批量添加關鍵詞

關鍵字_字典= {

" java" : [ "java_2e "," java編程"],

“產品管理”:[“項目經理”、“產品經理”]

}

關鍵字_處理器. add _關鍵字_ from _字典(關鍵字_字典)

# 2.(二)通過數組批量添加關鍵字

keyword _ processor . add _ keywords _ from _ list([" Java "," python" ])

# 3.第壹個提取效果如下

keyword _ processor . extract _ keywords('我是java_2e平臺的產品經理' )

# output ['產品管理',' java']

單個或批量刪除關鍵詞。

刪除關鍵字也很簡單,類似於添加:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.通過字典批量添加關鍵詞

關鍵字_字典= {

" java" : [ "java_2e "," java編程"],

“產品管理”:[“項目經理”、“產品經理”]

}

關鍵字_處理器. add _關鍵字_ from _字典(關鍵字_字典)

# 3.提取效果如下

print(keyword _ processor . extract _ keywords('我是java_2e平臺的產品經理' ))

# ['產品管理',' java']

# 4.刪除單個關鍵字

keyword _ processor . remove _ keyword(“Java _ 2e”)

# 5.批量刪除關鍵詞,也是字典或者數組的形式。

keyword _ processor . remove _ keywords _ from _ dict({ "產品管理":[ "PM" ]})

keyword _ processor . remove _ keywords _ from _ list([" Java編程"])

# 6.刪除java編程關鍵字後的效果如下

keyword _ processor . extract _ keywords('我是java_2e平臺的產品經理' )

# ['產品管理']

3.高級用途

支持附加信息

如前所述,添加關鍵字時,第二個參數是它的別名。事實上,您不僅可以指示別名,還可以將額外的信息放入第二個參數:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

kp =關鍵字處理器()

# 2.添加帶有附加信息的關鍵詞

kp.add_keyword('泰姬陵',('紀念碑','泰姬陵' ))

kp.add_keyword('德裏',('位置','德裏' ))

# 3.效果如下

kp.extract_keywords('泰姬陵在德裏。')

# [('紀念碑','泰姬陵'),('地點','德裏')]

這樣在提取關鍵詞的時候,也可以得到壹些妳得到這個關鍵詞的時候想要輸出的其他信息。

支持特殊單詞邊界

Flashtext檢測到的單詞邊界壹般限於w [A-Za-z0-9_]以外的任何字符,但如果想添加壹些特殊字符作為單詞的壹部分也是可以實現的:

從flashtext導入關鍵字處理器

# 1.初始化關鍵字處理器

keyword_processor =關鍵字處理器()

# 2.添加關鍵字

keyword_processor.add_keyword(“大蘋果”)

# 3.正常效應

print(keyword _ processor . extract _ keywords('我愛大蘋果/灣區。'))

# ['大蘋果']

# 4.使用“/”作為單詞的壹部分

keyword _ processor . add _ non _ word _ boundary('/')

# 5.優化效果

print(keyword _ processor . extract _ keywords('我愛大蘋果/灣區。'))

# []

結束

個人覺得這個模塊已經滿足了我們的基本使用。如果您有超出本模塊所提供功能的壹些使用需求,您可以向flashtext貢獻代碼:

/vi3k6i5/flashtext

使用FlashText與正則化查詢關鍵字所花費時間的比率:

用FlashText替換關鍵字所花費的時間與正則化所花費的時間之比:

如果這篇文章對妳有幫助,記得轉發。