2011-07-05 13 views
6

Chcę sklasyfikować wiadomości tekstowe na kilka kategorii, takich jak "budowanie relacji", "koordynacja", "udostępnianie informacji", "dzielenie się wiedzą" & "rozwiązywanie konfliktów". Używam biblioteki NLTK do przetwarzania tych danych. Chciałbym wiedzieć, który klasyfikator, w nltk, jest lepszy dla tego szczególnego problemu klasyfikacji wielorakiej.Który klasyfikator do wyboru w NLTK

Mam zamiar użyć klasyfikacji Naive Bayes, czy jest to wskazane?

Odpowiedz

8

Naive Bayesa jest najprostszym i łatwe do zrozumienia klasyfikator iz tego powodu dobrze jest używać. Decyzja Drzewa z wyszukiwaniem belki w celu znalezienia najlepszej klasyfikacji nie są trudniejsze do zrozumienia i zwykle są nieco lepsze. MaxEnt i SVM wydają się być bardziej złożone, a SVM wymaga pewnego dostrojenia, aby uzyskać właściwą.

Najważniejszy jest wybór funkcji + ilość/jakość dostarczanych danych!

Z twoim problemem skupiłbym się przede wszystkim na zapewnieniu dobrego zestawu danych szkoleniowych/testowych, a także wyborze dobrych funkcji. Ponieważ zadajesz to pytanie, nie miałeś dużego doświadczenia z uczeniem maszynowym dla NLP, więc powiedziałbym, że łatwo zacząć z Naive Bayes, ponieważ nie używa on skomplikowanych funkcji - możesz po prostu tokenizować i liczyć zdarzenia słów.

EDYTOWANIE: Na moje pytanie warto również przyjrzeć się odpowiedzi na pytanie How do you find the subject of a sentence?.

+1

Dziękuję za odpowiedź.Klasyfikuję wiadomości tekstowe SMS, a język bardzo nieformalny (oczywiście) około 50% słów to OOV (poza zasób słownictwa), więc normalizowałem te SMS-y na odpowiedni tekst w języku angielskim z około 15-20% OOV za pomocą narzędzia statystycznego tłumaczenia Moses . Czy polecasz inny sposób normalizowania tych wiadomości tekstowych? – Maggie

+0

Niestety nie mogę wypowiedzieć się na temat normalizacji tekstu, ponieważ wiem o nim prawie nic. Może są słowniki emotikonowe i skrótowe? Twitter + SMS są naprawdę trudne! – nflacco

2

Tak, Szkolenie klasyfikatora Naive Bayes dla każdej kategorii, a następnie oznaczanie każdej wiadomości klasie, w oparciu o którą klasyfikator zapewnia najwyższy wynik, jest standardowym pierwszym podejściem do takich problemów. Istnieją bardziej wyrafinowane algorytmy klasyfikujące dla jednej klasy, które można zastąpić dla Naive Bayes, jeśli okaże się, że wydajność jest niewystarczająca, na przykład maszyna z wektorem pomocy technicznej (która, jak uważam, jest dostępna w NLTK przez wtyczkę Weka, ale nie jest dodatnia). O ile nie można wymyślić nic konkretnego w tej domenie problemu, która sprawiłaby, że Naieve Bayes byłaby szczególnie nieodpowiednia, to znaczy, że jest to "pierwsza próba" dla wielu projektów.

Drugim klasyfikatorem NLTK, który chciałbym spróbować, byłby MaxEnt, ponieważ uważam, że natywnie obsługuje klasyfikację wieloklasową. (Chociaż wielokrotne binarne podejście klasyfikujące jest bardzo standardowe i powszechne). W każdym razie najważniejszą rzeczą jest zebranie bardzo dużego korpusu poprawnie oznakowanych wiadomości tekstowych.

Jeśli przez "Wiadomości tekstowe" odnoszą się do rzeczywistych wiadomości tekstowych telefonu komórkowego, są one bardzo krótkie, a język jest bardzo nieformalny i zróżnicowany, myślę, że wybór funkcji może okazać się większym czynnikiem decydującym o dokładności niż klasyfikator wybór dla ciebie. Na przykład użycie Stemmera lub Lemmatizera, który rozumie popularne skróty i idiomy, oznaczanie części mowy lub fragmentacji, ekstrakcja jednostek, wyodrębnianie prawdopodobnie związków między terminami może zapewnić więcej wybuchu niż użycie bardziej złożonych klasyfikatorów.

W tym artykule omówiono klasyfikowanie komunikatów o stanie Facebooka na podstawie sentymentów, które zawierają niektóre z tych samych problemów i mogą dostarczyć wglądu w tę kwestię. Linki jest w pamięci podręcznej Google, ponieważ mam problemy w/w pierwotnym miejscu:

http://docs.google.com/viewer?a=v&q=cache:_AeBYp6i1ooJ:nlp.stanford.edu/courses/cs224n/2010/reports/ssoriajr-kanej.pdf+maxent+classifier+multiple+classes&hl=en&gl=us&pid=bl&srcid=ADGEESi-eZHTZCQPo7AlcnaFdUws9nSN1P6X0BVmHjtlpKYGQnj7dtyHmXLSONa9Q9ziAQjliJnR8yD1Z-0WIpOjcmYbWO2zcB6z4RzkIhYI_Dfzx2WqU4jy2Le4wrEQv0yZp_QZyHQN&sig=AHIEtbQN4J_XciVhVI60oyrPb4164u681w&pli=1

+0

Dziękuję za odpowiedź. Tak, ja klasyfikuję SMS, a język bardzo nieformalny (oczywiście) około 50% słów to OOV (poza słownictwem), więc normalizowałem te SMS-y na odpowiedni tekst w języku angielskim z około 15-20% OOV przy użyciu narzędzia statystycznego tłumaczenia Mosesa. Czy polecasz inny sposób normalizowania tych wiadomości tekstowych? – Maggie

Powiązane problemy