達觀杯 文字智慧型處理挑戰賽 02

2021-09-17 01:13:18 字數 1269 閱讀 5358

原理:

將每篇文章看成一袋子詞,並忽略每個詞出現的順序。即將整段文字以詞為單位切分開,然後每篇文章可以表示成乙個長向量,向量中的每一維代表乙個單詞,而該維對應的權重則反映了這個詞在原文章中的重要程度。權重與詞在文字**現的頻率有關,而其中不考慮詞與詞之間的上下文關係。

詞袋模型的三步驟:

分詞——統計修訂詞特徵值——標準化

公式為:tf-idf(t, d) = tf(t, d)*idf(t)

其中,tf(t, d) 表示單詞t在文件d**現的頻率,idf(t)表示逆文件頻率,用來衡量單詞t對表達語義所起的重要性,表示為:

idf(t) = log(文章總數 / (包含單詞t的文章總數 + 1))

直觀解釋是,如果乙個單詞在非常多的文章裡都出現,則可能是比較通用的詞彙,對於區分某篇文章特殊語義的貢獻比較小,因此對其權重做一定懲罰。

兩種方法:

1)使用countvectorizer類向量化之後,再呼叫tfidftransformer類進行預處理。

2)第二種方法是直接使用tfidfvectorizer直接完成向量化與預處理。

方法一實踐如下所示:

from sklearn.feature_extraction.text import tfidftransformer

from sklearn.feature_extraction.text import countvectorizer

import pandas as pd

my_data = pd.read_csv('../datasets/train_set.csv', nrows = 5000)

vectorizer = countvectorizer()

transformer = tfidftransformer()

tfidf = transformer.fit_transform(vectorizer.fit_transform(my_data['word_seg']))

方法二實踐如下所示:

from sklearn.feature_extraction.text import tfidfvectorizer

my_data = pd.read_csv('../datasets/train_set.csv', nrows = 5000)

tfidfvectorizer = tfidfvectorizer()

re = tfidfvectorizer.fit_transform(my_data['word_seg'])

參考:

達觀杯文字智慧型處理挑戰賽

筆者嘗試了一下達觀杯的比賽,如下圖所示 import pandas as pd import imp from sklearn.linear model import logisticregression from sklearn.feature extraction.text import cou...

達觀杯文字智慧型處理挑戰賽練習

比賽官方對資料的說明是資料報含兩個檔案 train set.csv和test set.csv 一.初識資料 train set.csv 此資料集用於訓練模型,每一行對應一篇文章。文章分別在 字 和 詞 的級別上做了脫敏處理。共有四列 第一列是文章的索引 id 第二列是文章正文在 字 級別上的表示,即...

達觀杯文字智慧型挑戰賽任務二(TF IDF)

簡介 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資料探勘的常用加權技術。tf意思是詞頻 term frequency idf意思是逆文字頻率指數 inverse document frequency 原理 tfidf的主要思...