2017-08-16 22 views
0

我正在處理文本分類問題,解析來自RSS提要的新聞報道,並且我懷疑很多HTML元素和亂碼都被計爲記號。我知道Beautiful Soup提供了清理HTML的方法,但是我想嘗試傳遞一個字典來更好地控制什麼是記號。Scikit-Learn TfidfVectorizer

這個概念看起來很簡單,但我得到的結果我不明白。

from sklearn.feature_extraction.text import TfidfVectorizer 

eng_dictionary = [] 
with open("C:\\Data\\words_alpha.txt") as f: 
    eng_dictionary = f.read().splitlines() 

short_dic = [] 
short_dic.append(("short")) 
short_dic.append(("story")) 

stories = [] 
stories.append("This is a short story about the color red red red red blue blue blue i am in a car") 
stories.append("This is a novel about the color blue red red red red i am in a boot") 
stories.append("I like the color green, but prefer blue blue blue blue blue red red red red i am on a bike") 

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True) 
pos_vector = vec.fit_transform(stories).toarray() 

print(vec.get_feature_names()) 

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True, vocabulary=short_dic) 
pos_vector = vec.fit_transform(stories).toarray() 

print(vec.get_feature_names()) 

vec = TfidfVectorizer(decode_error=u'ignore', stop_words='english', analyzer='word', lowercase=True, vocabulary=eng_dictionary) 
pos_vector = vec.fit_transform(stories).toarray() 

print(vec.get_feature_names()) 

該程序的輸出如下;

['bike', 'blue', 'boot', 'car', 'color', 'green', 'like', 'novel', 'prefer', 'red', 'short', 'story'] 
['short', 'story'] 
ptic', 'skeptical', 'skeptically', 'skepticalness', 'skepticism', 'skepticize', 'skepticized', 'skepticizing'... 

第三打印的輸出上和去,所以我故意把它剪短,什麼是奇怪的是,雖然它開始中間字,正如我告訴它上面。前兩份印刷聲明的結果對我來說是有意義的;

  • 缺少詞彙表示要素是直接從語料庫構建的。
  • 提供了一個詞彙意味着功能從令牌建立在語料庫和詞彙

然而,在第三打印出的特點是不是我的文集的一部分,他們爲什麼不顯示?

回答

1

「詞彙」參數將創建一個TF-IDF矩陣,其中包含詞彙中的詞彙。然後,如果該單詞存在,則這些值將被填充。

例如,假設「色」是你的「words_alpha.txt」文件:

   skeptical skeptically ... ... ...  color 
stories[2]  0    0  ... ... ... TFI-DF value 

這就是爲什麼他們會顯示出來。

它正在開始中間詞的事實可能與您的文件有關。你使用的是splitlines(),所以我的猜測是你的文件有一堆單詞,達到極限,然後到「懷疑論詞」中間的下一行,這就是你的詞彙表(eng_dictionary)開始的地方

+0

我如何才能從詞彙中提取特徵? –

+0

你是指eng_dictionary和第三個故事中的單詞重疊嗎?或者只是第三個故事中的單詞? – AMC

+0

我一直在尋找eng_dictionary和每個故事中的單詞之間的重疊 –

相關問題