NLP學習筆記04---文本處理(分詞、詞過濾、文本表示、one-hot、文本相似度、TF-IDF)


1.文本處理的一般流程

上圖中:

清洗包括無用的標簽(例如從網上爬取的文本中可能包含html標簽)、特殊的符號(!感嘆號、省略號等)、停用詞、大寫轉小寫

標准化包括stemming、lemmazatic(就是對英文詞匯中的名詞、動詞轉換化標准形態)

本篇博客主要包括:分詞(word segmentation)、spell correction(拼寫糾錯)、stop words removal(停用詞)、stemming(標准化)

2.分詞

(1)主要的分詞工具

利用conda安裝jieba分詞庫

具體參見:https://www.cnblogs.com/luckyplj/p/12673055.html

jieba分詞入門案例:

import jieba

# 基於jieba的分詞
seg_list = jieba.cut("貪心學院專注於人工智能教育", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))

jieba.add_word("貪心學院")
seg_list = jieba.cut("貪心學院專注於人工智能教育", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))

效果圖:

(2)分詞算法介紹:

<1>前向匹配算法(forward-max matching)---它是一種貪心算法

上圖過程解釋:設置最大匹配長度為5,對句子從前到后與詞典進行匹配,若未匹配到詞,則縮減匹配詞的長度,再進行嘗試,直到匹配到為止。

算法區別:

貪心算法-----只能選擇當前的最有解。

DP(動態規划)-----能夠找到全局的最優解(能夠看到全局)

<2>后向匹配(back-ward max matching)

推薦閱讀博客:中文分詞引擎 java 實現 — 正向最大、逆向最大、雙向最大匹配法

https://blog.csdn.net/selinda001/article/details/79345072    

最大匹配算法的缺點:局部最優,效率低,不能考慮語義

<3>考慮語義(Incorporate semantic)

執行過程如下圖:

上圖中,利用語言模型 unigram language model,計算各個詞在出現的聯合分布概率。

注意:直接使用unigram 語言模型多個概率相乘極有可能出現underflow(向下溢出,即double或float類型無法表示)

優化方法:對概率P取對數,將相乘轉換為相加

3.拼寫糾錯

找到詞的最短編輯距離

 

方法優化:通過replace(替換)、add(添加)、delete(刪除)生成編輯距離為1或2的字符串。

上圖中對生成的字符串進行過濾方法如下所示:

上圖中的argmax公式表示選擇p(c/s)最大的c,將其返回給用戶。

利用貝葉斯公式將其簡化為p(s/c)*p(c),貝葉斯公式的推導見上圖

4.詞過濾

對於NLP的應用,我們通常將停用詞、出現頻率很低的詞過濾掉。

5.文本表示

(1)one-hot表示

<1>單詞的表示形式

將詞典看成一個一維向量,若詞典里的單詞就是該單詞,則一維數組的對應位置標為1

 

<2>句子的表達形式(不統計詞頻)

將詞典看成一個一維向量,若詞典里的單詞在句子中出現,則一維數組的對應位置標為1

<3>句子的表達形式(統計詞頻)

注意:

並不是出現的越多就越重要

並不是出現的越少就越不重要。

6.文本的相似度

(1)基於歐式距離的文本相似度

歐式距離越小,句子相似度越大(成反比)。

(2)余弦相似度

余弦相似度越大,句子的相似度也越大。(成正比)

7.TF-IDF文本表示

tf表示在文檔d中w這個詞出現的次數(詞頻),idf表示單詞的重要性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM