目錄
當我們需要進行文本挖掘的時候,必須先了解我們的數據到底是個啥,才知道應該怎麼做對吧。
1. 文本數據是什麼?
文本數據是指不能參與算術運算的任何字符,也稱爲字符型數據。如英文字母、漢字、不作爲數值使用的數字(以單引號開頭)和其他可輸入的字符。
文本數據具有哪些特點呢?
- 半結構化
文本數據既不是完全無結構的也不是完全結構化的。例如文本可能包含結構字段,如標題、作者、出版日期、長度、分類等,也可能包含大量的非結構化的數據,如摘要和內容。
- 高維
文本向量的維數一般都可以高達上萬維,一般的數據挖掘、數據檢索的方法由於計算量過大或代價高昂而不具有可行性。
- 高數據量
一般的文本庫中都會存在最少數千個文本樣本,對這些文本進行預處理、編碼、挖掘等處理的工作量是非常龐大的,因而手工方法一般是不可行的。
- 語義性
文本數據中存在着一詞多義、多詞一義,在時間和空間上的上下文相關等情況。
2. 爲什麼?
當我們需要挖掘文本中隱藏的價值,例如對文本進行聚類,分類,找到語義關係等等,我們需要將文本數據進行運算。非數值型數據拿來運算?怎麼運算呢?針對於文本數據的特點,我們需要怎麼樣將文本數據轉化爲可計算的形式?
這時候衍生出來把詞映射爲實數域上向量的技術,稱之爲詞嵌入(word embedding)。簡單來說就是將詞轉化爲向量。
3. 怎麼做?
需要將文本轉化爲向量,這咋做。
一般來說詞向量的獲取方式可以大體分爲兩類:一類是基於統計方法(例如:基於共現矩陣、SVD),另一種是基於語言模型的。
3.1. one-hot編碼
(你, 今天, 開心, 嗎)
你 = (1,0,0,0)
今天 = (0,1,0,0,)
開心= (0,0,1,0)
嗎 = (0,0,0,1)
獨熱編碼表示存在的缺點:
1.稀疏性,中文詞庫是非常大的,因此維度會很大。
2.不能表示一個含義,無法比較單詞之間的相似度,相當於每個詞相互獨立不相關,事實並不是的。
3.2. word2vec
word2vec其實就是神經網絡,而我們需要的詞向量其實就是神經網絡的權重,通過輸入單詞的one-hot編碼得到激活的神經網絡權重,用這個權重表示這個單詞。
word2vec具體分爲CBOW(Continuous Bag-of-Words 與Skip-Gram兩種模型。CBOW模型通過上下文預測特定詞。Skip-Gram模型則是通過特定詞預測上下文。CBOW對小型數據庫比較合適,而Skip-Gram在大型語料中表現更好。
3.3. doc2vec
還沒寫完 .... 慢慢寫
3.4. glove
3.5. fasttext
3.6. emlo
3.7. GPT
3.8. bert