2017-06-05 2 views
3

Ich versuche, die Tf-IDF-Werte für japanische Wörter zu bekommen. Das Problem, das ich habe ist, dass sklearn TfidfVectorizer einige japanische Zeichen, die ich behalten möchte, als Stoppwörter entfernt.So deaktivieren Sie die Standard-Stoppwörter-Funktion für sklearn TfidfVectorizer

Das folgende Beispiel zeigt:

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) 

Die Ausgabe lautet: ['痛い']

Allerdings möchte ich in der Liste alle diese drei Zeichen zu halten. Ich glaube, TfidfVectorizer entfernt Zeichen mit der Länge 1 als Stoppwörter. Wie kann ich die standardmäßige Stoppwortfunktion deaktivieren und alle Zeichen beibehalten?

Antwort

3

Sie können den Parameter token_muster von (?u)\\b\\w\\w+\\b (Standard) zu (?u)\\b\\w\\w*\\b ändern; Das Standard-Übereinstimmungs-Token, das zwei oder mehr Wortzeichen hat (falls Sie mit Regex nicht vertraut sind, bedeutet + eins oder mehrere, also \\w\\w+ entspricht Wort mit zwei oder mehr Wortzeichen; * bedeutet dagegen null oder mehr, \\w\\w* wird also passendes Wort mit einem oder mehreren Zeichen):

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

Ja, es löste das Problem für mich. Vielen Dank! – Splatnix

+0

Gern geschehen. Schön, dass es hilft. – Psidom

Verwandte Themen