Ho lavorato con la classe CountVectorizer
in scikit-learn.Posso usare CountVectorizer in scikit-learn per contare la frequenza dei documenti che non sono stati utilizzati per estrarre i token?
Capisco che se utilizzato nel modo illustrato di seguito, l'output finale sarà costituito da un array contenente i conteggi di funzionalità o token.
Questi gettoni sono estratti da una serie di parole chiave, vale a dire
tags = [
"python, tools",
"linux, tools, ubuntu",
"distributed systems, linux, networking, tools",
]
Il passo successivo è:
from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(tokenizer=tokenize)
data = vec.fit_transform(tags).toarray()
print data
dove otteniamo
[[0 0 0 1 1 0]
[0 1 0 0 1 1]
[1 1 1 0 1 0]]
Questo va bene, ma il mio la situazione è solo un po 'diversa.
Desidero estrarre le funzionalità come sopra, ma non voglio che le righe in data
siano gli stessi documenti da cui sono state estratte le funzionalità.
In altre parole, come posso ottenere i conteggi di un altro insieme di documenti, per esempio,
list_of_new_documents = [
["python, chicken"],
["linux, cow, ubuntu"],
["machine learning, bird, fish, pig"]
]
E ottenere:
[[0 0 0 1 0 0]
[0 1 0 0 0 1]
[0 0 0 0 0 0]]
Ho letto la documentazione per la classe CountVectorizer
, ed è venuto attraverso l'argomento vocabulary
, che è una mappatura dei termini agli indici delle caratteristiche. Tuttavia, non riesco a ottenere questo argomento per aiutarmi.
Qualsiasi consiglio è apprezzato.
PS: tutto il credito dovuto a Matthias Friedrich's Blog per l'esempio che ho usato sopra.
Grazie, questo sembra grande! Per la prima soluzione: il vocabolario dovrebbe sempre essere un dict, non un elenco? Correggimi se sbaglio, ma i conteggi (0, 1, 2) sembrano irrilevanti. Il secondo metodo che hai delineato sembra forse un po 'più chiaro. –
@ MattO'Brien: hai ragione, può essere una lista, ho letto male la documentazione. Ho modificato la mia risposta. Nel secondo metodo, però, è un dict, perché è quello che è il metodo 'vocabulary_ 'di un vectorizer adattato. – BrenBarn
BrenBarn, la tua risposta mi ha fatto risparmiare un sacco di tempo. Sul serio. Grazie per essere su questo sito. –