文本之特征提取


法一:Bag-of-words 詞袋模型

文本特征提取有兩個非常重要的模型: 

詞集模型:單詞構成的集合,集合中每個元素都只有一個,也即詞集中的每個單詞都只有一個

詞袋模型:如果一個單詞在文檔中出現不止一次,並統計其出現的次數(頻數)

兩者本質上的區別,詞袋是在詞集的基礎上增加了頻率的緯度,詞集只關注有和沒有,詞袋還要關注有幾個。

假設我們要對一篇文章進行特征化,最常見的方式就是詞袋。

(BoW model)忽略文本的語法和語序,用一組無序的單詞(words)來表達一段文字或一個文檔,近年來BoW 模型被廣泛應用於計算機視覺中,與應用於文本的BoW 類比,圖像的特征(feature)被當作單詞(Word)。 

sklearn.feature_extraction.text.CountVectorizer

方法二:TF-IDF模型

文本處理領域還有一種特征提取方法,叫做TF-IDF模型(term frequency–inverse document frequency,詞頻與逆向文件頻率)。

TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜索應用,作為文件與用戶查詢之間相關程度的度量或評級。

TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF(Term Frequency,詞頻),詞頻高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF-IDF實際上是:TF * IDF。TF表示詞條在文檔d中出現的頻率。IDF(inverse document frequency,逆向文件頻率)的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。如果某一類文檔C中包含詞條t的文檔數為m,而其它類包含t的文檔總數為k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類別區分能力不強。但是實際上,如果一個詞條在一個類的文檔中頻繁出現,則說明該詞條能夠很好代表這個類的文本的特征,這樣的詞條應該給它們賦予較高的權重,並選來作為該類文本的特征詞以區別與其它類文檔。

該模型主要包含了兩個因素:
1) 詞w在文檔d中的詞頻tf (Term Frequency),即詞w在文檔d中出現次數count(w, d)和文檔d中總詞數size(d)的比值:
tf(w,d) = count(w, d) / size(d)
2) 詞w在整個文檔集合中的逆向文檔頻率idf (Inverse Document Frequency),即文檔總數n與詞w所出現文件數docs(w, D)比值的對數:
idf = log(n / docs(w, D))
tf-idf模型根據tf和idf為每一個文檔d和由關鍵詞w[1]…w[k]組成的查詢串q計算一個權值,用於表示查詢串q與文檔d的匹配度:
tf-idf(q, d)
= sum { i = 1..k | tf-idf(w[i], d) }
= sum { i = 1..k | tf(w[i], d) * idf(w[i]) }
sklearn.feature_extraction.text.TfidfVectorizer

TF-IDF模型通常和詞袋模型配合使用,對詞袋模型(binary參數需要設置為True)生成的數組進一步處理

 

方法三:詞匯表模型

詞袋模型可以很好的表現文本由哪些單詞組成,但是卻無法表達出單詞之間的前后關系,於是人們借鑒了詞袋模型的思想,使用生成的詞匯表對原有句子按照單詞逐個進行編碼。TensorFlow默認支持了這種模型.

 


免責聲明!

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



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