2017-06-05 97 views
3

我正在嘗試獲取日語單詞的tf-idf值。 我遇到的問題是sklearn TfidfVectorizer將一些我想保留的日語字符作爲停用詞移除。如何取消激活sklearn的默認停用詞功能TfidfVectorizer

以下爲例子:

from sklearn.feature_extraction.text import TfidfVectorizer 
tf = TfidfVectorizer(stop_words = None) 

words_list = ["歯","が","痛い"] 
tfidf_matrix = tf.fit_transform(words_list) 
feature_names = tf.get_feature_names() 
print (feature_names) 

輸出是:['痛い']

不過,我想所有的三個字符保持在列表中。 我相信TfidfVectorizer刪除長度爲1的字符作爲停用詞。 我如何關閉默認停用詞功能並保留所有字符?

回答

3

您可以從(?u)\\b\\w\\w+\\b(默認)token_pattern參數更改爲(?u)\\b\\w\\w*\\b;默認匹配具有兩個或更多單詞字符的標記(如果您對正則表達式不熟悉,+表示一個或多個,因此\\w\\w+將單詞與兩個或更多單詞字符匹配;另一方面,*表示零個或多個,\\w\\w*將從而與一個或多個字符相匹配):

from sklearn.feature_extraction.text import TfidfVectorizer 
tf = TfidfVectorizer(stop_words = None, token_pattern='(?u)\\b\\w\\w*\\b') 
​ 
words_list = ["歯","が","痛い"] 
tfidf_matrix = tf.fit_transform(words_list) 
feature_names = tf.get_feature_names() 
print(feature_names) 
# ['が', '歯', '痛い'] 
+0

是的,它解決了我的問題。謝謝! – Splatnix

+0

不客氣。很高興它有幫助。 – Psidom