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

Не могли бы вы показать мне простой пример использования http://www.nltk.org/code для определения того, строку о счастливом или расстроенном настроении?


person Juanjo Conti    schedule 11.08.2010    source источник
comment
Возможно. Вы должны исследовать функции классификатора; учитывая тренировочный набор, вы можете классифицировать настроение как положительное или отрицательное.   -  person Paul Nathan    schedule 12.08.2010


Ответы (4)


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

person Chris    schedule 12.08.2010

Pattern тоже заслуживает тест-драйва: вы можете увидеть сразу два эксперимента по сбору мнений на главной странице проекта.

http://www.clips.ua.ac.be/pages/pattern-examples-100days

http://www.clips.ua.ac.be/pages/pattern-examples-elections

person Savino Sguera    schedule 08.08.2011

Нет.

Это задача, выходящая далеко за рамки возможностей NLTK или любого известного грамматического синтаксического анализатора, который можно реально представить. Посмотрите книгу NLTK, чтобы узнать, какие задачи может достичь того, что далеко, далеко от заявленной вами цели.

Как дешевый пример:

Мне очень понравилось использовать вашу бумагу для обучения моей собаки.

Разберите это с помощью NLTK, и вы сможете получить

[('I', 'PRP'), ('really', 'RB'), ('enjoyed', 'VBD'), 
 ('using', 'VBG'), ('your', 'PRP$'), ('paper', 'NN'), 
 ('to', 'TO'), ('train', 'VB'), ('my', 'PRP$'), ('dog', 'NN')]

Где дерево синтаксического анализа подскажет мне, что «наслаждался» — это центральный (прошедшее время) глагол простого предложения. Наслаждаться чем-то хорошо. Тренировать что-то вообще хорошо. Герундии, существительные, сравнительные сравнения и тому подобное относительно нейтральны. Так что дайте этому хороший балл 0,90.

За исключением того, что я действительно имею в виду, что я либо ударил свою собаку вашей бумагой, либо позволил ей испражняться на бумагу, что вы, вероятно, сочли бы плохим поступком.

Наймите человека для этой задачи распознавания.

Добавлено для тех, кто считает, что даже обученные классификаторы приносят большую пользу:

Классифицируйте эту реальную запись из реального корпуса отзывов клиентов, используя любой классификатор, который вам нравится, обученный на любом наборе данных, который вам нравится:

Эта камера продолжает автофокусировку в автоматическом режиме с жужжащим звуком, который невозможно остановить. Было бы очень хорошо, если бы они дали возможность отключить автофокусировку. Если вы хотите иметь дату и время на изображении, это можно сделать только с помощью их программного обеспечения, которое считывает дату и время изображения из метаданных изображения. Так что если вы пользуетесь кард-ридером и копируете изображения - вам нужно еще раз открыть их через их программу, чтобы поставить дату и время. В этом тоже нет прямого способа добавить дату и время — вы должны сказать «печатать изображения» в другой каталог, в котором есть возможность указать дату и время. Даже малейшее сотрясение полностью искажает изображение. Изображения в помещении были не такими четкими. У вас должна быть включена вспышка, даже если ваша комната хорошо освещена. Крышка объектива очень раздражает. снятые видеоклипы всегда будут иметь некоторый «шум» - этого не избежать.

Классификация наихудшего настроения, которую я получил, была «полностью двусмысленной», но люди могут легко определить, что это совсем не комплиментарно. Это не было случайно выбранным данным, скорее, оно было выбрано из-за отрицательного смещения без «ненависти», «suxz» или чего-то подобного.

person msw    schedule 11.08.2010
comment
Я бы не сказал, что это выходит за рамки NLTK. Моей первой мыслью был анализ настроений, на который вы ссылались. Имея значительный тренировочный корпус, вы могли бы обучить классификатор, чтобы он давал вам приличное приближение настроения. - person Cerin; 12.08.2010
comment
@Chris S: Но вопрос был не в этом; он попросил простой пример, для которого их нет. Даже классификаторы падают на реальный текстовый ввод, как различные корпуса, на которые ссылается Википедия. Для области, где простые декларативные выражения по-прежнему вызывают затруднения, совладать с нюансами, сарказмом, подтекстом и осуждением с помощью слабой похвалы действительно сложно. - person msw; 12.08.2010
comment
Возможно, вы слишком усложняете вопрос. Он не спрашивает о выявлении нюансов, сарказма и т. д. Его интересуют только расплывчатые логические ярлыки счастливого или расстроенного, которые он может легко определить, вручную пометив выборку предложений. Я согласен, это может быть не тривиально, но я бы не назвал это невозможным. - person Cerin; 12.08.2010
comment
Вы вроде рассуждаете теоретически и разница между теорией и практикой в ​​теории меньше, чем разница между ними на практике. Если вы сомневаетесь, возьмите настоящий корпус и попробуйте сами; если вы надежно достигаете большего, чем случайный случай с новыми входными данными, напишите об этом и получите докторскую степень. - person msw; 12.08.2010
comment
@msw: я получаю докторскую степень в этом. Это выполнимо, хотя мы получаем только точность от 80% до 90%. Среди людей, которые пробовали эту задачу (или, может быть, это просто связанная задача - трудно сказать по краткости вопроса), есть research.yahoo.com/pub/2387 и lingcog .iit.edu/doc/appraisal_sentiment_cikm.pdf - person Ken Bloom; 18.08.2010
comment
Хорошо, круто, поскольку у вас уже есть классификатор отзывов клиентов о камерах, как он ранжирует запись выше? Конечно, я не сомневаюсь, что с помощью узкоспециализированных, чрезвычайно хорошо структурированных словарей можно справиться с поставленной задачей несколько лучше, чем наивные классификаторы. Однако 80-90% точности - это маркетинговый ход, который довольно грубо и ненаучно преувеличивает более прохладные утверждения в вашей литературе. Даже если я оговорю ваше слишком широкое заявление о точности в 80%, это все равно означает, что в 4/5 раз метод терпит неудачу. Я не уверен, что выполнимый означает то, что вы хотите, чтобы это означало здесь. - person msw; 18.08.2010
comment
@Ken: удачи в исследованиях и получении степени; Я имею в виду это искренне. Это, безусловно, захватывающая область для работы. - person msw; 18.08.2010

Вы ищете метод, который использует классификатор машинного обучения, чтобы определить, является ли фрагмент текста положительным или отрицательным. Несколько исследовательских групп предпринимали различные попытки сделать это (например, http://research.yahoo.com/pub/2387 и http://lingcog.iit.edu/doc/appraisal_sentiment_cikm.pdf), мы можем получить точность от 80% до 90% при определении того, является ли обзор продукта положительным или отрицательным.

Из-за краткости вашего вопроса для меня не очевидно, является ли определение того, является ли обзор продукта положительным или отрицательным, той же задачей, которую вы пытаетесь выполнить, или просто связанной задачей, но я бы предложил начать с простого. классификацию слов с помощью байесовского классификатора (с которым NLTK должен быть в состоянии справиться), а затем улучшайте свои методы оттуда в зависимости от того, насколько высока точность.

К сожалению, я никогда не использовал NLTK (или Python в этом отношении), поэтому я не могу привести вам пример кода, как использовать NLTK для этого.

person Ken Bloom    schedule 17.08.2010
comment
Книга NLTK Natural Language Processing включает пример классификации текста относительно того, является ли он положительным или нет. Вопрос и приложение ОП могут быть слишком тонкими для обсуждаемых и продемонстрированных алгоритмов, но это было бы началом. - person winwaed; 29.10.2010