數據競賽——1

“達觀杯”文本智能處理挑戰賽之一

TF-IDF

TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。(百度百科)

TF(Term Frequency)詞頻,某個詞在文章中出現的次數或頻率,如果某篇文章中的某個詞出現多次,那這個詞可能是比較重要的詞,當然,停用詞不包括在這裏。

IDF(inverse document frequency)逆文檔頻率,這是一個詞語“權重”的度量,在詞頻的基礎上,如果一個詞在多篇文檔中詞頻較低,也就表示這是一個比較少見的詞,但在某一篇文章中卻出現了很多次,則這個詞IDF值越大,在這篇文章中的“權重”越大。所以當一個詞越常見,IDF越低。

此處的具體實現

from sklearn.feature_extraction.text import TfidfTransformer  
from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()
word_frequence = vectorizer.fit_transform(data['word_seg'])
words = vectorizer.get_feature_names()

tfidf_transformer=TfidfTransformer()
word_seg_tfidf=tfidf_transformer.fit_transform(word_frequence)

word2vec

word2vec,是一羣用來產生詞向量的相關模型。這些模型爲淺而雙層的神經網絡,用來訓練以重新建構語言學之詞文本。網絡以詞表現,並且需猜測相鄰位置的輸入詞,在word2vec中詞袋模型假設下,詞的順序是不重要的。訓練完成之後,word2vec模型可用來映射每個詞到一個向量,可用來表示詞對詞之間的關係,該向量爲神經網絡之隱藏層。(百度百科)

word2vec 本質上是一個語言模型,它的輸出節點數是 V 個,對應了 V 個詞語,本質上是一個多分類問題。

此處的具體實現

import gensim

def sentence2list(sentence):
    return sentence.strip().split()
    
sentences_train = list(data['word_seg'].apply(sentence2list))
sentences = sentences_train
vector_size = 100
model = gensim.models.Word2Vec(sentences=sentences, size=vector_size, window=5, min_count=5, workers=8, sg=0, iter=5)

參考文獻
[1]: https://zhuanlan.zhihu.com/p/27330205
[2]: https://www.zhihu.com/people/zhang-wen-tao-56-51/activities
[3]: https://blog.csdn.net/GreatXiang888/article/details/82873435
[4]: 公衆號:AI小白入門的文章—— “達觀杯”文本智能處理挑戰賽,季軍帶你飛
[5]: https://github.com/yuquanle/2018-daguan-competition-rank4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章