2015-08-20 30 views
5

Io uso sklearn.feature_extraction.text.CountVectorizer per calcolare n-grammi. Esempio:Come utilizzare CountVectorizerand() di sklearn per ottenere ngram che includono la punteggiatura come token separati?

import sklearn.feature_extraction.text # FYI http://scikit-learn.org/stable/install.html 
ngram_size = 4 
string = ["I really like python, it's pretty awesome."] 
vect = sklearn.feature_extraction.text.CountVectorizer(ngram_range=(ngram_size,ngram_size)) 
vect.fit(string) 
print('{1}-grams: {0}'.format(vect.get_feature_names(), ngram_size)) 

uscite:

4-grams: [u'like python it pretty', u'python it pretty awesome', u'really like python it'] 

La punteggiatura viene rimosso: come includere loro come separare i token?

risposta

7

È necessario specificare una parola tokenizer che consideri qualsiasi punteggiatura come token separato durante la creazione dell'istanza sklearn.feature_extraction.text.CountVectorizer, utilizzando il parametro tokenizer.

Per esempio, nltk.tokenize.TreebankWordTokenizer tratta la maggior parte caratteri di punteggiatura come separare i token:

import sklearn.feature_extraction.text 
from nltk.tokenize import TreebankWordTokenizer 

ngram_size = 4 
string = ["I really like python, it's pretty awesome."] 
vect = sklearn.feature_extraction.text.CountVectorizer(ngram_range=(ngram_size,ngram_size), \ 
               tokenizer=TreebankWordTokenizer().tokenize) 
print('{1}-grams: {0}'.format(vect.get_feature_names(), ngram_size)) 

uscite:

4-grams: [u"'s pretty awesome .", u", it 's pretty", u'i really like python', 
      u"it 's pretty awesome", u'like python , it', u"python , it 's", 
      u'really like python ,'] 
+0

ah, ma i conteggi sono mancanti? – alvas

+0

@alvas puoi usare ['sklearn.feature_extraction.text.CountVectorizer.transform'] (http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html#sklearn.feature_extraction. text.CountVectorizer.transform) per ottenere i conteggi. –

+0

Grazie! Ho appena scritto un sacco di codice pazzo per usare sklearn, imparare a fare l'estrazione e il conteggio di ngram invece del python nativo e lo sto programmando. Sembra vittorie di pitone nativo = ( – alvas