5

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?

+0

Hai davvero bisogno di usare NaiveBayesClassifier? Hai guardato CRF? A proposito, hai letto questo capitolo: http://www.nltk.org/book/ch06.html? – 404pio

+0

Grazie per il link. Ho finito per usare una sequenza di tag pos concatenati e 'containsPosSequence' come caratteristica ... – kundan

risposta

4

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".

+0

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