機器學習 TF IDF演算法

2021-09-24 07:49:49 字數 2389 閱讀 6686

cf:文件集的頻率,是指詞在文件集**現的次數

df:文件頻率,是指出現詞的文件數

idf:逆文件頻率,idf = log(n/(1+df)),n為所有文件的數目,為了相容df=0情況,將分母弄成1+df。

tf:詞在文件中的頻率

tf-idf:tf-idf= tf*idf

這樣,某個詞條的tf-idf的值為 ,即某乙個檔案中高頻出現的詞條,以及該詞條在整個語料庫檔案中低頻出現的現象,就可以產生高權重的tf-idf,因此,tf-idf傾向過濾掉常見的詞語,保留重要的詞語。即:字詞的重要性隨著它在檔案**現的次數成正比增加,但同時會隨著它在語料庫**現的頻率成反比下降。

優缺點

1. 優點是演算法的容易理解,便於實現。

2.缺點:idf的簡單結構並不能有效地反映單詞的重要程度和特徵詞的分布情況,使其無法很好的完成對權值的調整功能,所以在一定程度上該演算法的精度並不是很高。除此之外,演算法也沒喲體現位置資訊,對於出現在文章不同位置的詞語都是一視同仁的,而我們知道,在文章首尾的詞語勢必重要性要相對高點。據此,我們可以或許也可以將處於文章不同位置的詞語賦予不同的權重。

為了講解文字資料的向量化,假設我們有4個文字,所有文字一共有6個不同的詞,如下所示。

arr = ['第一天我參觀了美術館',

'第二天我參觀了博物館',

'第三天我參觀了動物園',]

arr = [' '.join(jieba.lcut(i)) for i in arr] # 分詞

print(arr)

# 返回結果:

# ['第一天 我 參觀 了 美術館', '第二天 我 參觀 了 博物館', '第三天 我 參觀 了 動物園']

vectorizer = countvectorizer()

x = vectorizer.fit_transform(arr)

word = vectorizer.get_feature_names()

df = pd.dataframe(x.toarray(), columns=word)

print(df)

# 返回結果:

# 動物園 博物館 參觀 第一天 第三天 第二天 美術館

# 0 0 1 1 0 0 1

# 0 1 1 0 0 1 0

# 1 0 1 0 1 0 0

transformer = tfidftransformer()

tfidf = transformer.fit_transform(x)

weight = tfidf.toarray()

for i in range(len(weight)): # 訪問每一句

print("第{}句:".format(i))

for j in range(len(word)): # 訪問每個詞

if weight[i][j] > 0.05: # 只顯示重要關鍵字

print(word[j],round(weight[i][j],2)) # 保留兩位小數

# 返回結果

# 第0句:美術館 0.65 參觀 0.39 第一天 0.65

# 第1句:博物館 0.65 參觀 0.39 第二天 0.65

# 第2句:動物園 0.65 參觀 0.39 第三天 0.65

經過對資料x的計算之後,返回了權重矩陣,句中的每個詞都只在該句**現了一次,因此其tf值相等,由於「參觀」在三句中都出現了,其idf較其它關鍵字更低。sklearn除了實現基本的tf-idf演算法外,還其行了歸一化、平滑等一系列優化操作。詳細操作可參見sklearn原始碼中的sklearn/feature_extraction/text.py具體實現。

在做特徵工程時,常遇到這樣的問題:從乙個短語或短句中提取關鍵字構造新特徵,然後將新特徵代入分類或者回歸模型,是否需要使用tf-idf方法?首先,tf是詞頻,即它需要在乙個文字**現多次才有意義,如果在短句中,每個詞最多隻出現一次,那麼計算tf不如直接判斷其是否存在。

機器學習 TF IDF是什麼

在資訊檢索與文字挖掘中經常遇見單詞的 tf idf term frequency inverse document frequency 這個值的大小能夠體現它在文字集合中的某乙個文件裡的重要性。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要...

Spark機器學習 TF IDF例項講解

測試資料源 20 newsgroups 其中包含20個領域的新聞,此次我們使用20news bydate train作為測試資料.其結構如下 對多篇文章提取其特徵關鍵字以備檢索 分類使用 關鍵字視為乙個單詞 輸入內容檔案格式 article id,content.article id,content...

TF IDF及其演算法

概念 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資訊探勘的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會...