2016-06-17 3 views
1

Unter Bezugnahme auf dieses post. Ich frage mich, wie wir das Vokabular des Wortes mit dem Raum CountVectorizer Modell z. distributed systems oder machine learning? Hier ein Beispiel:Stellen Sie Vokabular des Wortes mit Raum zum scikit-lernen zur Verfügung CountVectorizer

import numpy as np 
from itertools import chain 

tags = [ 
    "python, tools", 
    "linux, tools, ubuntu", 
    "distributed systems, linux, networking, tools", 
] 

vocabulary = list(map(lambda x: x.split(', '), tags)) 
vocabulary = list(np.unique(list(chain(*vocabulary)))) 

Wir werden diese Vokabelliste zum Modell zur Verfügung stellen können

from sklearn.feature_extraction.text import CountVectorizer 
vec = CountVectorizer(vocabulary=vocabulary) 
print(vec.fit_transform(tags).toarray()) 

Hier verlor ich die Anzahl des Wortes distributed systems (erste Spalte). Das Ergebnis ist wie folgt:

[[0 0 0 1 1 0] 
[0 1 0 0 1 1] 
[0 1 1 0 1 0]] 

Muss ich token_pattern oder woanders ändern?

Antwort

2

Ich denke im Wesentlichen haben Sie bereits Ihre Vokabulare für die Analyse vordefiniert und Sie möchten Ihre Tags durch Aufteilen von ',' in Token zerlegen.

können Sie die CountVectorizer Trick durch das zu tun:

from sklearn.feature_extraction.text import CountVectorizer 
vec = CountVectorizer(vocabulary=vocabulary, tokenizer=lambda x: x.split(', ')) 
print(vec.fit_transform(tags).toarray()) 

, das gibt:

[[0 0 0 1 1 0] 
[0 1 0 0 1 1] 
[1 1 1 0 1 0]] 
+0

Vielen Dank @Zichen, das ist, was ich suche. Macht das Problem sehr nützlich mit 'Tokenizer' – titipata

Verwandte Themen