Ho due classi di frasi. Ciascuno ha una sequenza di tag di posizione ragionevolmente distinta. Come posso addestrare un classificatore Naive-Bayes con sequenza POS-Tag come caratteristica? Stanford CoreNLP/NLTK (Java o Python) fornisce un metodo per costruire un classificatore con pos-tag come caratteristica? So che in Python NaiveBayesClassifier
consente di creare un classificatore NB ma utilizza contains-a-word
come funzione, ma può essere esteso per utilizzare la sequenza di tag pos come una funzione?Come addestrare un classificatore naive bayes con sequenza di tag pos come caratteristica?
risposta
Se sai come addestrare e prevedere i testi (o le frasi nel tuo caso) usando il classificatore naive bayes di nltk e le parole come caratteristiche, allora puoi facilmente estendere questo approccio per classificare i testi con tag di posizione. Questo perché il classificatore non si preoccupa se le stringhe di caratteristiche sono parole o tag. Così si può semplicemente sostituire le parole dei vostri frasi dalle OP-tag utilizzando per tagger POS standard di esempio di NLTK:
sent = ['So', 'they', 'have', 'internet', 'on', 'computers' , 'now']
tags = [t for w, t in nltk.pos_tag(sent)]
print tags
[ 'IN', 'PRP', 'VBP', 'JJ', 'IN', 'NNS', 'RB']
Da ora è possibile procedere con l'approccio "contiene una parola".
Aggiungendo alla tua risposta, come la domanda dice" sequenza ", possiamo concatenare i tag pos della frase come' [IN] [PRP ] [VBP] [JJ] [IN] [NNS] [RS] 'e definiscono una funzione come say' conatinsPrpVbpSequence' e impostarla su 'True' per una prova di' [PRP] [VBP] '.... – kundan
Hai davvero bisogno di usare NaiveBayesClassifier? Hai guardato CRF? A proposito, hai letto questo capitolo: http://www.nltk.org/book/ch06.html? – 404pio
Grazie per il link. Ho finito per usare una sequenza di tag pos concatenati e 'containsPosSequence' come caratteristica ... – kundan