擴充閱讀
分詞系列專題
jieba-fenci 01 結巴分詞原理講解 segment
jieba-fenci 02 結巴分詞原理講解之資料歸一化 segment
jieba-fenci 03 結巴分詞與繁簡體轉換 segment
jieba-fenci 04 結巴分詞之詞性標註實現思路 speechTagging segment
關鍵詞系列專題
NLP segment-01-聊一聊分詞
NLP segment-02-聊一聊關鍵詞提取 keyword
NLP segment-03-基於 TF-IDF 實現關鍵詞提取 java 開源實現
倒排索引原理與實現 reverse-index
TF-IDF 自動生成文章摘要
TF-IDF 自動提取關鍵詞
相似文章演算法之語義指紋-文字內容去重
TF-IDF 找出相似文章演算法
開源專案
為了便於大家學習,專案開源地址如下,歡迎 fork+star 鼓勵一下老馬~
nlp-keyword 關鍵詞
pinyin 漢字轉拼音
segment 高效能中文分詞
opencc4j 中文繁簡體轉換
nlp-hanzi-similar 漢字相似度
word-checker 拼寫檢測
sensitive-word 敏感詞
NLP 的分詞
在自然語言處理(NLP)中,分詞是指將一段文字按照一定規則分解為一個個單詞或片語的過程。
這是 NLP 的基礎步驟之一,尤其在中文處理裡尤為關鍵,因為中文沒有天然的空格分隔詞語。
分詞的必要性
- 中文語料:與英文不同,中文中沒有天然的分詞標記,分詞是理解文字的前提。例如,“我愛北京天安門”可以分成多個不同的片語,影響模型對文字的理解。
- 語義分析:正確的分詞可以幫助演算法準確地獲取文字含義,便於後續的詞頻統計、情感分析等任務。
- 資訊檢索:分詞能夠提高資訊檢索系統的精度,比如在搜尋引擎中,合理的分詞可以幫助使用者更好地找到相關內容。
分詞的難點
- 歧義問題:如“我是中國人”,“中國人”既可以是國家名字加“人”,也可以是“中”“國人”。
- 未登入詞:在詞庫中不存在的詞稱為未登入詞,比如新出現的網路詞彙、人名或地名等,需要識別這些詞語才能提升分詞的準確度。
- 多義性:同一個詞在不同上下文中的含義可能不同,例如“蘋果”既可能是水果,也可能是科技公司。
分詞方法
-
基於規則的分詞:
- 正向最大匹配法(MM):從文字開頭開始,嘗試匹配最長的詞,直到文字結束。缺點是可能會漏掉較短的詞彙。
- 逆向最大匹配法(RMM):從文字末尾開始,向前匹配最長詞語。可以與正向法組合,增加準確率。
- 雙向最大匹配法(Bi-MM):結合正向和逆向匹配,取分詞結果較少的分法。可以較好地減少歧義,但效果仍有限。
-
基於統計的分詞:
- N-gram 模型:將詞語按 N-gram(如二元組)的形式切分,利用詞語共現的頻率計算切分的機率。適合處理文字中的高頻詞。
- 隱馬爾科夫模型(HMM):將分詞問題轉化為狀態序列標註問題,利用已知的標註序列訓練模型並計算分詞機率。能處理一定的未登入詞問題,但依賴於標註資料的質量。
-
基於機器學習的分詞:
- 條件隨機場(CRF):一種常用的序列標註方法,能透過上下文資訊進行詞語邊界判斷。與 HMM 相比,CRF 不要求特徵的獨立性,適合更復雜的語言結構。
- 支援向量機(SVM)、決策樹等:將分詞轉化為分類問題,使用上下文特徵判斷分詞點。效果通常不如 CRF,但在特定任務中可能有效。
-
基於深度學習的分詞:
- 迴圈神經網路(RNN):RNN 模型(如 LSTM 和 GRU)可以處理長文字的上下文資訊,透過構建一個詞語序列標註模型來進行分詞。
- BERT、GPT 等預訓練模型:這類模型捕獲了豐富的上下文資訊和語義關係,經過微調後可用於分詞任務,尤其在處理複雜語境和歧義問題上表現優異。
分詞有哪些應用場景?
分詞在自然語言處理(NLP)的多個應用場景中起著重要的作用。以下是一些主要的應用場景:
1. 文字分類
- 分詞作為特徵提取的第一步:透過分詞,可以將文字轉換為詞袋模型(Bag of Words)或 TF-IDF 特徵向量,以便於分類演算法使用。
- 垃圾郵件分類:在郵件分類中,透過分詞可以提取關鍵詞,將文字分為正常郵件、廣告或垃圾郵件等類別。
- 情感分析:分詞能提取出情緒詞彙,為判斷文字的情感傾向(如正面、負面、中性)提供基礎資料。
2. 搜尋引擎
- 關鍵字提取:在搜尋引擎中,使用者的查詢詞透過分詞解析成多個關鍵詞,用於檢索和匹配文件內容。
- 相關性排序:透過分詞可以提取文件中的重要詞彙,幫助搜尋引擎對結果進行更準確的排序。
- 自動補全和糾錯:分詞和詞頻統計可以幫助實現搜尋時的自動補全,糾正使用者的拼寫錯誤或輸入錯誤的詞語。
3. 資訊抽取
- 實體識別:分詞與命名實體識別結合使用,可以提取人名、地名、機構名等特定資訊。
- 關係抽取:從文字中提取實體之間的關係(如“蘋果公司”與“收購”之間的關係),需要基於分詞獲取基礎的句子結構資訊。
- 事件抽取:透過分詞識別特定事件(如“地震”、“釋出會”等)並記錄相關資訊,在新聞監控和情報分析中非常重要。
4. 機器翻譯
- 中文分詞對齊:在翻譯中文文字時,分詞可以幫助分解複雜的詞彙結構,便於機器翻譯模型進行詞對齊處理。
- 提升語法分析效果:分詞能提升句法分析的準確率,進而提升翻譯的連貫性和準確性,特別是在複雜句和長句中效果明顯。
5. 對話系統和聊天機器人
- 意圖識別:透過分詞獲取使用者輸入中的關鍵詞,可以幫助聊天機器人識別使用者意圖(如查詢天氣、下訂單等)。
- 槽位填充:分詞幫助機器人識別出使用者意圖中的引數資訊,比如時間、地點等,為槽位填充提供基礎。
- 上下文理解:結合分詞可以幫助對話系統更好地理解使用者的上下文內容,從而提供更相關的回答。
6. 文字摘要
- 關鍵詞提取:在生成摘要時,透過分詞提取文中的高頻詞和重要詞,有助於生成概括性較強的文字摘要。
- 句子壓縮:分詞可以幫助在長句中提取重要的語義片段,從而去掉冗餘資訊,為摘要生成打下基礎。
7. 知識圖譜構建
- 實體和關係抽取:分詞能夠幫助從文字中識別實體和關係,便於構建知識圖譜。
- 資料整合:在將多個資料來源整合到知識圖譜時,分詞可以對同義詞、複合詞進行拆分和規範化處理,提升資料一致性。
- 自動構建:透過自動化分詞和實體識別,可以從海量文字中抽取知識點,形成結構化的知識圖譜。
8. 推薦系統
- 使用者興趣提取:透過分詞分析使用者的瀏覽記錄、評論、搜尋歷史,提取出使用者的興趣關鍵詞。
- 個性化推薦:基於分詞結果將使用者興趣和推薦內容進行匹配,實現個性化推薦,特別在新聞推薦和電商推薦中應用廣泛。
9. 輿情分析和社會媒體監控
- 主題和熱點分析:透過分詞提取出文字中的高頻詞,可以用於識別和追蹤社交媒體上的熱點話題。
- 情緒和情感分析:在評論、社交媒體等文字中,透過分詞識別出情感傾向詞彙,幫助判斷公眾的情緒(如滿意、不滿等)。
- 事件監控:對重大事件的文字實時分析,透過分詞和關鍵詞提取,自動檢測和監控事件進展。
10. 語音識別
- 分詞輔助語言模型:在語音識別中,分詞有助於構建語言模型,提高語音識別的準確度,尤其是對拼接單詞的識別。
- 後處理步驟:語音識別系統生成的文字往往沒有標點符號,分詞幫助進行句子劃分和標點恢復,提升文字可讀性。