文本處理知識點總結
將word映射到一個新的空間中,並以多維的連續實數空間向量進行表示,叫做
word representation
,或者word embeding
.n-gram: n-gram是一種統計語言模型。根據前n-1個item預測第n個item,這些item可以是音素(語言識別應用),字符(輸入法應用),詞(分詞應用)或堿基對。一般可以從大規模文本或者語料庫中生成n-gram模型。
- 給定一串字母,如for ex_,希望預測下一個可能的字母是什麽?
- 假設T是由詞序列A1,A2,....An組成,則p(T)=p(A1,A2,...,An)=p(A1)p(A2|A1)p(A3|A1,A2)...p(An|A1,A2,...,A(n-1))
- 其實就是馬爾科夫假設:一個item出現的概率只與前m個item有關
詞袋:Bag of Words,假設對於一個文本,將其僅僅看作是一個詞集合,而忽略其詞序和語法。
在實際應用中,將這組詞變成一串數字(索引的集合)
John likes to watch movies. Mary like too. --->[1,2,1,1,1,0,0,0,1,1]
John also like to watch football games. --->[1,1,1,1,0,1,1,1,0,0]
其中,第i個元素表示字典中第i個單詞在句子中出現的次數。
上述構成了字典:{‘John‘:1,‘like‘:2,‘to‘:3,...,‘too‘:10}
Word2Vec
分為兩種語言模型:CBOW和Skip-gram
CBOW根據上下文的詞語預測當前詞語出現概率的模型。
最大化對數似然函數\(L=\sum _{w\in c}logP(w|context(w))\)
輸入層是上下文的詞向量(詞向量是CBOW的參數,其實際上是CBOW的副產物)
投影層是簡單的向量加法
輸出層是輸出最可能的w。由於詞料庫中詞匯量是固定的|c|個,可以將其看作是多分類問題。最後一層是Hierarchical softmax:
\[ p(w|context(w))=\prod_{j=2}^{l^w}p(d_j^w|x_w,\theta_{j-1}^w) \]從根節點到葉節點經過了\(l^{w}-1\)個節點,編碼從下標2開始(根節點無編碼),對應的參數向量下標從1開始。
skip-gram 已知當前詞語,預測上下文
與CBOW不同之處在於:
- 輸入層不再是多個詞向量,而是一個詞向量
- 投影層實際什麽都沒幹,直接將輸入層的詞向量傳遞給輸出層
模型:
\[ p(context(w)|w)= \prod_{w \in context(w)}p(u|w) \]這是一個詞袋模型,所以每個u都是無序,相互獨立的
doc2vec:
與word2vec唯一不同之處在於,串聯起word vector在上下文中預測下一個單詞。
上下文是固定長度且在段落中sliding window中采樣,段落向量在一段中共享在同一段中產生的所有窗口,但是不同段間不共享。
文本處理知識點總結