機器學習 文字特徵值表示

2021-09-12 16:38:26 字數 2522 閱讀 2005

對資料最簡單的編碼之一是使用單詞計數,對於每個短語,僅僅計算其中每個單詞出現的次數,在sklearn中,使用countvectorizer就可以輕鬆解決!

看**:

# 文字特徵表示

from sklearn.feature_extraction.text import countvectorizer

sample = [

'feature engineering',

'feature selection',

'feature extraction'

]vec = countvectorizer()

x = vec.fit_transform(sample)

x.toarray() # 轉換成稀疏矩陣

print(x)

print(vec.get_feature_names())

輸出的結果:

(0, 0)	1

(0, 2) 1

(1, 3) 1

(1, 2) 1

(2, 1) 1

(2, 2) 1

['engineering', 'extraction', 'feature', 'selection']

但是,這種計數方法的缺點是,如果某個單詞出現的次數過於頻繁,那麼將會被賦予較大的權重。比如我們在進行搜尋過程中,一篇文章當中必將出現較多的「的」、「是」等無意義的詞語,這種詞會佔據著較大權重,嚴重影響搜尋的效能。

tf-idf(英語:termfrequency–inversedocumentfrequency)是一種用於資訊檢索與文字挖掘的常用加權技術。tf-idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案**現的次數成正比增加,但同時會隨著它在語料庫**現的頻率成反比下降。tf-idf加權的各種形式常被搜尋引擎應用,作為檔案與使用者查詢之間相關程度的度量或評級。除了tf-idf以外,網際網路上的搜尋引擎還會使用基於鏈結分析的評級方法,以確定檔案在搜尋結果**現的順序。

所謂詞頻和之前的文字特徵表示方法一樣,特別之處就在於逆文件頻率上:

在乙份給定的檔案裡,詞頻(term frequency,tf)指的是某乙個給定的詞語在該檔案**現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。(同乙個詞語在長檔案裡可能會比短檔案有更高的詞數,而不管該詞語重要與否。)對於在某一特定檔案裡的詞語}

以上式子中

逆向檔案頻率(inverse document frequency,idf)是乙個詞語普遍重要性的度量。某一特定詞語的idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取以10為底的對數得到:

其中 然後

某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向於過濾掉常見的詞語,保留重要的詞語。

下面使用sklearn中的tfidfvectorizer進行處理:

# 文字特徵表示

from sklearn.feature_extraction.text import countvectorizer

sample = [

'feature engineering',

'feature selection',

'feature extraction'

]vec = countvectorizer()

x = vec.fit_transform(sample)

array = x.toarray() # 轉換成稀疏矩陣

# 使用詞頻—逆文件進行文字特徵表示

from sklearn.feature_extraction.text import tfidftransformer

import numpy as np

vec1 = tfidftransformer()

# sample(type=np.float32)

x = vec1.fit_transform(array)

# x.toarray() # 轉換成稀疏矩陣

print(x)

輸出:

(0, 2)	0.5085423203783267

(0, 0) 0.8610369959439764

(1, 3) 0.8610369959439764

(1, 2) 0.5085423203783267

(2, 2) 0.5085423203783267

(2, 1) 0.8610369959439764

機器學習特徵值特徵抽取

根據文字的的特徵值,進行特徵值的抽取 from sklearn.feature extraction import dictvectorizer from sklearn.feature extraction.text import countvectorizer def countvec 對文字進...

機器學習 文字特徵工程

import numpy as np import pandas as pd import jieba text 想和不想.是兩回事 好聽的話不要聽,沒感覺到就是沒有 終有弱水替滄海,再無相思寄巫山 for i in range len text text i join jb.lcut text i...

機器學習《文字特徵提取》

本次任務 將文字特徵提取轉換成模型能用的資料 font import pandas as pd 本次資料來自json檔案 df pd.read json wuxia.car.json encoding utf 8 這是取出的資料 將資料轉換成list型別 dictvectorizer 處理資料型別是...