當前位置:成語大全網 - 書法字典 - 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 = 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 = keyword processor()

# 2.添加關鍵詞

keyword _ processor . add _ keyword(‘新德裏’,‘NCR地區’)

# 3.替換關鍵詞

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

# 4.結果

打印(新句子)

#“我愛紐約州和NCR地區。”

關鍵字區分大小寫

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

從flashtext導入關鍵字處理器

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

keyword_processor =關鍵字處理器(區分大小寫= True)

# 2.添加關鍵詞

keyword _ processor . add _ keyword(‘大蘋果’,‘紐約’)

keyword_processor.add_keyword(“灣區”)

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

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

# 4.結果

打印(關鍵字_已找到)

#【‘灣區‘】

標記關鍵字位置

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

從flashtext導入關鍵字處理器

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

keyword _ processor = 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 = keyword processor()

# 2.添加關鍵詞

keyword _ processor . add _ keyword(‘J2EE’,‘Java’)

keyword _ processor . add _ keyword(‘colour’,‘color’)

# 3.獲取所有關鍵詞

keyword _ processor . get _ all _ keywords()

# output:{“colour“:“color“,“J2EE“:“Java“}

批量添加關鍵詞

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

從flashtext導入關鍵字處理器

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

keyword _ processor = keyword processor()

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

關鍵字_字典= {

“java“:【“Java _ 2e“,“Java編程“】,

“產品管理”:【“項目經理”、“產品經理”】

}

關鍵字處理器。添加關鍵字來源字典(關鍵字字典)

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

keyword _ processor . add _ keywords _ from _ list(【“Java“,“python“】)

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

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

#輸出【‘產品管理‘,java】

單個或批量刪除關鍵詞。

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

從flashtext導入關鍵字處理器

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

keyword _ processor = keyword processor()

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

關鍵字_字典= {

“java“:【“Java _ 2e“,“Java編程“】,

“產品管理”:【“項目經理”、“產品經理”】

}

關鍵字處理器。添加關鍵字來源字典(關鍵字字典)

# 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 = KeywordProcessor()

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

KP . add _ keyword(‘泰姬陵’,(‘紀念碑’,‘泰姬陵’)

KP . add _ keyword(‘德裏‘,(‘位置‘,‘德裏‘))

# 3.效果如下

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

#【(‘紀念碑’,‘泰姬陵’),(‘地點’,‘德裏’)】

這樣,在提取關鍵字時,您還可以獲得壹些其他信息,這些信息是您在獲得該關鍵字時想要輸出的信息。

支持特殊單詞邊界

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

從flashtext導入關鍵字處理器

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

keyword _ processor = 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替換關鍵字所花費的時間比率:

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