Mam dwie klasy zdań. Każdy ma dość wyraźną sekwencję poz-tag. Jak mogę wyszkolić klasyfikator Naive-Bayesa z sekwencją POS-Tag jako funkcję? Czy Stanford CoreNLP/NLTK (Java lub Python) dostarcza jakiejkolwiek metody budowania klasyfikatora z pos-tagiem jako funkcją? Wiem, że w pythonie NaiveBayesClassifier
można zbudować klasyfikator NB, ale korzysta on z contains-a-word
jako funkcji, ale czy można go rozszerzyć na funkcję pos-tag-sequence jako funkcję?Jak wytrenować naiwnego klasyfikatora Bayesa z sekwencją pos-tag jako funkcję?
Odpowiedz
Jeśli wiesz, jak ćwiczyć i przewidywać teksty (lub zdania w twoim przypadku), używając naiwnego klasyfikatora Nltk i słów jako cech, to możesz łatwo rozszerzyć to podejście, aby klasyfikować teksty według pos-tagów. Dzieje się tak, ponieważ klasyfikator nie dba o to, czy ciągi znaków funkcji są słowami czy znacznikami. Tak więc można po prostu zastąpić słowa swoimi zdaniami przez pos tagów stosując na przykład NLTK za standardową poz Tagger:
sent = ['So', 'they', 'have', 'internet', 'on', 'computers' , 'now']
tags = [t for w, t in nltk.pos_tag(sent)]
print tags
[ 'IN', 'PRP', 'VBP', 'JJ', 'w', "NNS", "RB"]
Od tej chwili można kontynuować podejście "zawiera słowo".
Dodając do twojej odpowiedzi, ponieważ pytanie mówi" sekwencja ", możemy połączyć tagi POS zdania jak' [IN] [PRP ] [VBP] [JJ] [IN] [NNS] [RS] "i zdefiniuj funkcję podobną do powiedz' conatinsPrpVbpSequence' i ustaw ją na 'True' dla wystąpienia' [PRP] [VBP] '.... – kundan
Czy naprawdę potrzebujesz użyć NaiveBayesClassifier? Czy spojrzałeś na CRF? A propos, czy przeczytałeś ten rozdział: http://www.nltk.org/book/ch06.html? – 404pio
Dzięki za link. Skończyło się na tym, że używałem połączonych tagów-pos-sekwencji i 'zawieraPosSequence' jako funkcji ... – kundan