最近項(xiàng)目中搅荞,有用到文本相似度計(jì)算,涉及到自然語言處理的一個(gè)很強(qiáng)大的庫gensim
1.1 基本概念和用法
corpora是gensim中的基本概念,是文檔集的表現(xiàn)形式夫晌,也是后續(xù)進(jìn)一步處理的基礎(chǔ)泣棋。從本質(zhì)上來說胶哲,corpora其實(shí)是一種格式或者說約定,其實(shí)就是一個(gè)二維矩陣外傅。
dictionary = corpora.Dictionary(texts) # Use gensim package用文本生成dict
dictionary.token2id //dict中文本token和id位置號(hào)
data_dictionary.doc2bow(text)for textin bcom_data_clean.texts //把對(duì)應(yīng)文本按照dict中token2id的轉(zhuǎn)換成坐標(biāo)
1.2?TF-IDF原理介紹
TF-IDF(term frequency–inverse document frequency)是一種用于資訊檢索與文本挖掘的常用加權(quán)技術(shù)。TF-IDF是一種統(tǒng)計(jì)方法锄俄,用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語料庫中的其中一份文件的重要程度技竟。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加冰肴,但同時(shí)會(huì)隨著它在語料庫中出現(xiàn)的頻率成反比下降。TF-IDF加權(quán)的各種形式常被搜索引擎應(yīng)用榔组,作為文件與用戶查詢之間相關(guān)程度的度量或評(píng)級(jí)熙尉。
原理
在一份給定的文件里,詞頻(term frequency搓扯,TF)指的是某一個(gè)給定的詞語在該文件中出現(xiàn)的次數(shù)检痰。這個(gè)數(shù)字通常會(huì)被正規(guī)化,以防止它偏向長的文件锨推。(同一個(gè)詞語在長文件里可能會(huì)比短文件有更高的詞頻铅歼,而不管該詞語重要與否。)對(duì)于在某一特定文件里的詞語ti 來說换可,它的重要性可表示為:
以上式子中 ni,j 是該詞在文件dj中的出現(xiàn)次數(shù)椎椰,而分母則是在文件dj中所有字詞的出現(xiàn)次數(shù)之和。
逆向文件頻率(inverse document frequency沾鳄,IDF)是一個(gè)詞語普遍重要性的度量慨飘。某一特定詞語的IDF,可以由總文件數(shù)目除以包含該詞語之文件的數(shù)目译荞,再將得到的商取對(duì)數(shù)得到:
其中
|D|:語料庫中的文件總數(shù)
包含詞語ti的文件數(shù)目(即的文件數(shù)目)如果該詞語不在語料庫中瓤的,就會(huì)導(dǎo)致被除數(shù)為零休弃,因此一般情況下使用
然后
某一特定文件內(nèi)的高詞語頻率,以及該詞語在整個(gè)文件集合中的低文件頻率堤瘤,可以產(chǎn)生出高權(quán)重的TF-IDF玫芦。因此,TF-IDF傾向于過濾掉常見的詞語本辐,保留重要的詞語桥帆。
例子
有很多不同的數(shù)學(xué)公式可以用來計(jì)算TF-IDF。這邊的例子以上述的數(shù)學(xué)公式來計(jì)算慎皱。詞頻 (TF) 是一詞語出現(xiàn)的次數(shù)除以該文件的總詞語數(shù)老虫。假如一篇文件的總詞語數(shù)是100個(gè),而詞語“母琶6啵”出現(xiàn)了3次祈匙,那么“母牛”一詞在該文件中的詞頻就是3/100=0.03天揖。一個(gè)計(jì)算文件頻率 (DF) 的方法是測(cè)定有多少份文件出現(xiàn)過“母哦嵊”一詞,然后除以文件集里包含的文件總數(shù)今膊。所以些阅,如果“母牛”一詞在1,000份文件出現(xiàn)過斑唬,而文件總數(shù)是10,000,000份的話市埋,其逆向文件頻率就是 log(10,000,000 / 1,000)=4。最后的TF-IDF的分?jǐn)?shù)為0.03 * 4=0.12恕刘。