我一直在使用scikit-learn中的CountVectorizer
類。我可以在scikit-learn中使用CountVectorizer來計算未用於提取令牌的文檔的頻率嗎?
我明白,如果以下面顯示的方式使用,最終輸出將包含一個包含要素或標記計數的數組。
這些令牌是由一組關鍵詞的提取,即
tags = [
"python, tools",
"linux, tools, ubuntu",
"distributed systems, linux, networking, tools",
]
下一個步驟是:
from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(tokenizer=tokenize)
data = vec.fit_transform(tags).toarray()
print data
我們得到
[[0 0 0 1 1 0]
[0 1 0 0 1 1]
[1 1 1 0 1 0]]
這是好的,但我情況只是有點不同。
我想以上述方式提取特徵,但我不希望data
中的行與提取特徵的文檔相同。
換句話說,我怎麼能得到另一組文檔,比如計數,
list_of_new_documents = [
["python, chicken"],
["linux, cow, ubuntu"],
["machine learning, bird, fish, pig"]
]
並獲得:
[[0 0 0 1 0 0]
[0 1 0 0 0 1]
[0 0 0 0 0 0]]
我已經閱讀了CountVectorizer
類的文檔,來到橫跨vocabulary
參數,這是一個術語到特徵索引的映射。然而,我似乎無法得到這個論據來幫助我。
任何意見表示讚賞。
PS:所有信用歸於Matthias Friedrich's Blog針對我上面使用的示例。
謝謝,這看起來太棒了!對於第一個解決方案:詞彙應該總是一個字典,而不是列表?糾正我,如果我錯了,但計數(0,1,2)似乎不相關。你列出的第二種方法看起來可能更清楚一些。 –
@ MattO'Brien:你說得對,它可能是一個列表,我誤解了文檔。我編輯了我的答案。然而,在第二種方法中,這是一個字典,因爲這是一個擬合矢量化器的'vocabulary_'方法。 – BrenBarn
BrenBarn,你的回答爲我節省了很多時間。認真。感謝您在這個網站上。 –