Как правильно сделать классификацию мультиклассов с помощью 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% французский.