Для початку Naive Bayes, мабуть, тут не підходить. Це передбачає незалежність серед вхідних даних (звідси "Наївний") і слів у реченні дуже залежні.
Але, припускаючи, що ви дійсно хочете запустити з NB як алгоритм для початку експерименту, я б розглядав два варіанти:
Непристойно: багато класифікаторів NB
Це був би альтернативний підхід. Складіть коруп з усіх слів, які спостерігаються як ваш вектор вводу. Складіть корпус з усіх тегів, які спостерігаються як ваш вектор результатів. Класифікатор NB з декількома виходами є еквівалентом наявності декількох класифікаторів NB з одним висновком кожного (тому робити те, що легше реалізувати в будь-якій програмі, яку ви використовуєте). Розглядайте кожен елемент як навчальний зразок, де заданим введенням (словом) є 1
якщо це слово є, а 0
якщо це слово - ні. Використовуйте ту ж бінарну схему для виводу.
Цей грубий спосіб змушує застосувати класифікатор NB до ваших даних і залишає вам знайти сенс, як і раніше, щоб видобути величезний набір класифікаторів, які вам залишаться.
Більш витончено: обробляйте свої дані
Такий підхід я рекомендую, якщо ви хочете працювати з одним багатокласним класифікатором NB.
Ваша мета тут - розібратися, як зіставити кожен набір тегів до одного класу. Я впевнений, що існує якась схема кластеризації або аналіз мережі (можливо, ["знаменитість"], пов’язана з ["вбивством"], може стати сегментом ["розпусти")), який розумно відобразить ваші теги до одного кластеру. Якщо ви трактуєте теги як вузли, а два задані теги разом як посилання, то вам захочеться переглянути алгоритми виявлення спільноти (з чого я б почав). Але, якщо ви просто хочете, щоб щось працювало, буде достатньо певного зламування тегів, який перетворює список тегів лише в тег, який найчастіше спостерігається у вашому наборі даних.
Цей метод перевантажує роботу з очищення ваших даних і полегшить розуміння результатів класифікатора NB.