Как правильно сделать классификацию мультиклассов с помощью NLTK?

Итак, я пытаюсь сделать текстовую классификацию мультикласса. Я читал много старых вопросов и постов в блоге, но я все еще не могу полностью понять концепцию, что.

я попробовал пример из этого сообщения в блоге. http://www.laurentluce.com/posts/twitter-sentiment-analysis-using-python-and-nltk/

но когда дело доходит до многоклассовой классификации, я этого не совсем понимаю. Предположим, я хочу классифицировать текст на несколько языков, Французский, английский, итальянский и немецкий. И я хочу использовать NaviesBayes, с которых, я думаю, было бы проще всего начать. Из того, что я прочитал в старых вопросах, самым простым решением было бы использовать один против всех. Итак, каждый язык будет иметь свою собственную модель. Итак, у меня было бы 3 модели для французского, английского и итальянского языков. Затем я бы запустил текст против каждой модели и проверил, имеет ли какая из них наибольшую вероятность. Я прав?

но когда дело доходит до кодирования, в примере выше он есть твиты, как это, которые будут классифицированы либо положительно, либо отрицательно.

pos_tweets = [('I love this car', 'positive'),
              ('This view is amazing', 'positive'),
              ('I feel great this morning', 'positive'),
              ('I am so excited about tonight's concert', 'positive'),
              ('He is my best friend', 'positive')]

neg_tweets = [('I do not like this car', 'negative'),
              ('This view is horrible', 'negative'),
              ('I feel tired this morning', 'negative'),
              ('I am not looking forward to tonight's concert', 'negative'),
              ('He is my enemy', 'negative')]

который положительный или отрицательный. Итак, когда дело доходит до обучения одной модели для французского языка, как я должен пометить текст? Будет ли так? Так это будет положительным?

[('Bon jour', 'French'),
   'je m'appelle', 'French']

и отрицательным будет

[('Hello', 'English'), 
   ('My name', 'English')]

но будет ли это означать, что я могу просто добавить итальянский и немецкий и иметь только одну модель для 4 языков? Или мне на самом деле не нужно ... отрицательно?

Итак, вопрос будет в том, каков правильный подход к классификации нескольких классов с ntlk?

2 ответов


нет необходимости в схеме "один против всех" с наивным Байесом-это многоклассовая модель из коробки. Просто подайте список (sample, label) пары к классификатору учащегося, где label обозначает язык.


классификаторы в NLTK (http://www.nltk.org/api/nltk.classify.html) может прийти в нескольких вариантах, и важно понять тонкую разницу.

самый простой вариант-это различие между двумя категориями, например, положительные и отрицательные настроения, мужчины и женщины. (http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.positivenaivebayes)

второй вариант, когда у вас есть несколько категорий (два или более), например, текст на французском, немецком или английском языках, и вы предполагаете, что каждый текст использует ровно один язык. Обратите внимание, что язык в NLTK не описывает это как "мультикласс", который может быть понятен, когда вы новичок в этом. Просто подумай об этом так. Классификатор не будет присваивать один текст нескольким классам, например немецкому и французскому, а только одному классу.

наконец, есть Мультиклассификатор, который отличается тем, что данный вход может быть назначен более одного класса, например 50% французский и 50% немецкий или 40% английский, 30% немецкий и 30% французский.