Вы можете довольно далеко продвинуться в классификации текстов, просто рассматривая документы как наборы слов, где порядок слов не имеет значения. Таким образом, вы относитесь к «это ненадежно и недешево» так же, как к «это дешево и ненадежно», даже если первое является строгим обвинением, а второе — квалифицированной рекомендацией. Конечно, опасно игнорировать то, как слова объединяются, чтобы придать смысл, верно?

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

Биграммы

Включение ngrams кажется легкой задачей. И вы почти наверняка должны включить биграммы в качестве признаков. Но не удивляйтесь, если вы не увидите значительного увеличения точности.

Сида Ван и Крис Мэннинг исследуют, что происходит, когда вы добавляете биграммы для различных задач классификации текста. Подробности приведены в их таблицах 3 и 4, но краткое резюме состоит в том, что в 18 экспериментах с различными задачами классификации и разными алгоритмами биграммы улучшают точность по сравнению с униграммами в среднем на 1%. Максимум составляет 3,04%, минимум снижает точность на 0,6%.

Есть много других особенностей, о которых стоит подумать, как в работе Куок Ле и Томас Миколов. Но, как я завершу в конце, лучший подход почти всегда состоит в том, чтобы получить больше обучающих данных. Это, вероятно, неудивительно, если прочитать в блоге CrowdFlower, поскольку их бизнес помогает группам специалистов по обработке и анализу данных генерировать высококачественные обучающие данные в масштабе, используя свою платформу человек в цикле.

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

Отрицание

Каждую ночь по всему миру синтактики плачут, чтобы уснуть. Ясно, что порядок слов имеет значение… просто он не так уж важен. Например, передо мной есть некоторые данные о клиентах, которые направляют данные на основе таких качеств, как надежность и внешний вид, разделяя их по серьезности настроений, а также по типу проблемы. Словоне встречается менее чем в 5 % данных. Таким образом, даже если все, что содержит не, классифицируется неправильно, существует потолок того, насколько вы можете повысить точность. Максимальную выгоду следует сопоставлять с количеством времени, которое вы собираетесь потратить на машинное обучение, чтобы заработать свои проценты. В некоторых случаях увеличение точности на 1% стоит миллионы долларов. Но во многих случаях это не так.

В этих данных о клиентах чаще всего не используется в контексте, например, я не уверен. Люди полны неуверенности. И хотя люди регулярно приходят в ярость, когда у них возникают проблемы со службой поддержки, вежливость является действительно доминирующим культурным правилом. Выражение того факта, что они не уверены, — это способ сохранить свое лицо и любого человека на другой линии.

Если вас интересуют подходы к отрицанию, вы можете ознакомиться с Советом, Макдональдом и Великовичем (2010). У них 1135 предложений с положительной/отрицательной/смешанной/нейтральной оценкой, 187 из них содержат отрицание (114 отрицательных, 73 положительных). Если бы все 187 из этих предложений были классифицированы неправильно, вы бы получили огромный прирост точности… но на самом деле большинство из них уже были точно классифицированы без системы отрицания.

Частично это связано с тем, как люди используют отрицание. Обычно отрицание отрицательно. Но на самом деле это не простой реверс. Как сообщают Ричард Сочер и его коллеги, если у вас есть отрицательное прилагательное и вы отрицаете его, вы получите что-то слегка положительное. Но не отлично на самом деле не то же самое, что ужасно, это больше похоже на довольно хорошо, так что оно ослаблено, а не наоборот.

Цифры выше показывают, что отрицание встречается не очень часто. Однако это немного зависит от предметной области. Например, если вы просмотрите записи врачей, вы обнаружите, что около 20% из них содержат отрицание: Никаких острых дистрессов, Размер сердца в норме, без перикардиального выпота — меньше согласия относительно того, что делать с что-то вроде afebrile, что семантически означает без лихорадки, в отличие от febrile, с лихорадкой. (Если вам интересно, когда вы получите своего доктора искусственного интеллекта, вот пост об этом.)

Но для большинства данных отрицание не так уж распространено. Например, в разговорном английском слово хорошо встречается примерно в 18 раз чаще, чем ужасно. Но ужасно по-прежнему примерно в 4,8 раза чаще, чем нехорошо.

Частота слов на миллион произнесенных слов (COCA)

хорошо 1 468,36

плохой 303,61

ужасно81,90

плохо 16,85

неплохо 7,52

не страшно0,20

Аналогичным образом, в обзорах IMDB как плохо, так и не хорошо указывают на низкий рейтинг, но также в 18 раз больше плохо, чем . нехорошо (или любое отрицание хорошо). Эти номера IMDB принадлежат Крису Поттсу. Он также показывает, что даже в разговоре с людьми, если вы принимаете или соглашаетесь с кем-то, вы редко используете какое-либо отрицание — только в 1,8% случаев. Но если вы что-то отвергаете, 59,4% ваших отказов включают в себя отрицание, даже без слова нет. Если вы укажете нет, то 83,3% отклонений будут отрицательными. Эти общие выводы кажутся верными не только для английского, но и для немецкого и японского языков.

Как сделать систему более интеллектуальной?

Чтобы получить хорошую модель, у вас есть три основных входа:

  • Тренировочные данные
  • Алгоритмы
  • Функции

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

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

В небольшом проекте обычно можно обойтись парой или двумя обучающими данными. Но для более существенных инициатив в области машинного обучения выделяйте время и ресурсы, чтобы генерация обучающих данных происходила с регулярной частотой или непрерывно. Это служит не только способом сделать ваши модели более точными, но и сохранить их точность с течением времени, а также убедиться, что вы действительно знаете, как работает система. Система, которая проверяет себя и совершенствуется с течением времени: это еще не все.

Тайлер Шнобелен — бывший основатель и главный аналитик компании Idibon, специализирующейся на облачной обработке естественного языка. Тайлер имеет десятилетний опыт работы в области UX-дизайна и исследований в Силиконовой долине и имеет докторскую степень. из Стэнфорда, где изучал исчезающие языки и смайлики. О нем писали в The New York Times Magazine, The Boston Globe, The Atlantic и NPR.