Na początek Naive Bayes prawdopodobnie nie jest tutaj odpowiedni. Zakłada niezależność między danymi wejściowymi (stąd „Naiwny”), a słowa w zdaniu są bardzo zależne.
Ale zakładając, że naprawdę chcesz uruchomić NB jako algorytm do rozpoczęcia eksperymentów, rozważę dwie opcje:
Niewdzięczny: wiele klasyfikatorów NB
To byłoby alternatywne podejście. Zrób corupus wszystkich słów zaobserwowanych jako twój wektor danych wejściowych. Zrób korpus ze wszystkich znaczników, które są obserwowane jako twój wektor wyników. Klasyfikator NB z wieloma wyjściami jest odpowiednikiem posiadania wielu klasyfikatorów NB z jednym wyjściem (zrób więc to, co jest łatwiejsze do zaimplementowania w dowolnym oprogramowaniu). Traktuj każdy element jako próbkę szkoleniową, w której dane wejściowe (słowo) to 1
jeśli to słowo jest obecne, a 0
jeśli to słowo nie. Użyj tego samego schematu binarnego dla danych wyjściowych.
Ten brutal zmusza zastosowanie NB Classifier do twoich danych i pozostawia ci znalezienie sensu, wciąż szukając olbrzymiego zestawu klasyfikatorów, które ci pozostaną.
Bardziej wdzięczny: Przetwarzaj swoje dane
Takie podejście polecam, jeśli chcesz uruchomić jeden klasyfikator NB wielu klas.
Twoim celem jest znalezienie sposobu mapowania każdego zestawu tagów na pojedynczą klasę. Jestem pewien, że istnieje jakiś schemat grupowania lub analiza sieci (być może [„celebrytka”] powiązana z [„morderstwem”] może stać się segmentem [„rozpustą”]), który rozsądnie zmapuje tagi do jednego klastra. Jeśli traktujesz tagi jako węzły, a dwa podane tagi razem jako linki, to powinieneś przyjrzeć się algorytmom wykrywania społeczności (od tego chciałbym zacząć). Ale jeśli chcesz, aby coś działało, wystarczyłoby coś w rodzaju hakowania tagów, które konwertują listę tagów tylko na tagi najczęściej widoczne w zestawie danych.
Ta metoda pozwala w pierwszej kolejności wyczyścić dane i ułatwiłaby zrozumienie danych wyjściowych klasyfikatora NB.