Обработка естественного языка (Natural Language Processsing, НЛП, ОЕЯ) – это область Искусственного интеллекта (AI), которая дает машинам возможность читать, понимать и извлекать значение из человеческих языков.
Все, что мы выражаем устно или письменно, несет в себе огромное количество информации. Тема, которую мы выбираем, наш тон, выбор слов – все это добавляет какой-то тип информации, которую можно интерпретировать и извлечь из нее ценность. Теоретически мы можем понять и даже предсказать поведение человека, используя эту информацию. Но есть проблема: один человек может генерировать сотни или тысячи слов за раз, причем каждое предложение имеет соответствующую сложность. Если вы хотите масштабировать и анализировать несколько сотен, тысяч или миллионов людей или реплик в заданной географии, тогда ситуация неуправляема.
Данные, полученные из разговоров, заявлений или даже твитов, являются примерами неструктурированных данных. Неструктурированные данные плохо вписываются в традиционную структуру строк и столбцов реляционных баз данных и представляют собой подавляющее большинство данных, доступных в реальном мире. Ими сложно манипулировать. Тем не менее, благодаря достижениям в таких дисциплинах, как Машинное обучение (ML), в этой сфере происходит революция. В настоящее время речь идет уже не о попытках интерпретировать текст или речь на основе ключевых слов (старомодный механический способ), а о понимании значения этих слов (когнитивный способ). Таким образом можно обнаружить речевые образы: иронию, или даже провести анализ настроений.
ОЕЯ – это дисциплина, которая фокусируется на взаимодействии Науки о данных (DS) и человеческого языка и распространяется на многие отрасли. Сегодня сфера переживает бум благодаря огромным улучшениям в доступе к данным и увеличению вычислительной мощности, которые позволяют практикам достигать значимых результатов в таких областях, как здравоохранение, СМИ, финансы, человеческие ресурсы и проч.
Применение
Проще говоря, NLP представляет собой автоматическую обработку естественного человеческого языка, такого как речь или текст, и, хотя сама концепция увлекательна, реальная ценность этой технологии заключается в ее применении.
NLP может помочь вам с множеством задач, и области применения расширяются с каждым днем. Приведем несколько примеров.
- Наука позволяет распознавать и прогнозировать заболевания на основе электронных медицинских карт и собственной речи пациента. Эта способность исследуется в условиях здоровья, которые варьируются от сердечно-сосудистых заболеваний до депрессии и даже шизофрении. Например, Amazon Comprehend Medical – это сервис, который использует NLP для изучения болезненных состояний, лекарств и результатов лечения из записей пациентов, отчетов о клинических испытаниях и других электронных медицинских записей.
- Организации могут определять, что клиенты говорят об услуге или продукте, идентифицируя и извлекая информацию из таких источников, как социальные сети. Этот анализ настроений может предоставить много информации о выборе клиентов и их факторах принятия решений. Изобретатель IBM разработал когнитивного помощника, который работает как персонализированная поисковая машина, узнавая все о вас, а затем напоминая вам имя, песню или что-нибудь, что вы не можете вспомнить в тот момент, когда вам это нужно.
- Такие компании, как Yahoo и Google, фильтруют и классифицируют ваши электронные письма с помощью NLP, анализируя текст в электронных письмах, проходящих через их серверы, и останавливая спам еще до того, как они попадут в почтовый ящик.
- Чтобы помочь идентифицировать фальшивые новости, группа NLP в Массачусетском технологическом институте разработала новую систему для определения объективности или политической предвзятости источника новостей, а также подлинности публикаций.
- Amazon Alexa и Apple Siri являются примерами интеллектуальных голосовых интерфейсов, которые используют NLP для ответа на реплики человека и выполняют широкий спектр действий: найти конкретный магазин, сообщить прогноз погоды, предложить лучший маршрут до офиса или включить свет дома.
- Понимание того, что происходит и о чем говорят люди, может быть очень ценным для трейдеров. NLP используется для отслеживания новостей, отчетов, комментариев о возможных слияниях компаний, все может быть затем включено в торговый алгоритм для получения огромной прибыли. Помните: покупайте слухи, продавайте новости.
- NLP также используется как на этапах поиска, так и на этапах отбора талантов, для определения навыков потенциальных сотрудников, а также для выявления потенциальных клиентов до того, как они станут активными на рынке труда.
- На основе технологии IBM Watson NLP LegalMation разработала платформу для автоматизации рутинных судебных задач и помогает юридическим группам сэкономить время, сократить расходы и сместить стратегический фокус.
NLP особенно быстро развивается в сфере здравоохранения. Эта технология улучшает оказание медицинской помощи, диагностику заболеваний и снижает расходы, в то время как медицинские организации все чаще используют электронные медицинские карты. Тот факт, что клиническая документация может быть улучшена означает, что пациентов можно лучше понять и получить пользу за счет лучшего здравоохранения. Цель должна заключаться в оптимизации их опыта, и несколько организаций уже работают над этим.
Такие компании, как Winterlight Labs, значительно улучшают лечение болезни Альцгеймера, отслеживая когнитивные нарушения с помощью речи, а также могут поддерживать клинические испытания и исследования широкого спектра заболеваний центральной нервной системы. Следуя аналогичному подходу, Стэнфордский университет разработал Woebot, терапевта-чат-бота с целью помочь людям с тревогой и другими расстройствами.
Но по этому поводу ведутся серьезные разногласия. Пару лет назад Microsoft продемонстрировала, что, анализируя большие выборки запросов поисковых систем, они могут идентифицировать интернет-пользователей, страдающих от рака поджелудочной железы, еще до того, как им поставят диагноз. Как пользователи отреагируют на такой диагноз? А что было бы, если бы у вас был ложноположительный результат? (это означает, что у вас может быть диагностирована болезнь, даже если у вас ее нет). Это напоминает случай с Google Flu Trends, который в 2009 году был объявлен способным прогнозировать грипп, но позже исчез из-за его низкой точности и неспособности соответствовать прогнозируемым показателям.
NLP может стать ключом к эффективной клинической поддержке в будущем, но в краткосрочной перспективе еще предстоит решить множество проблем.
Основные недостатки, с которыми мы сталкиваемся в наши дни при использовании NLP, связаны с тем, что человеческий язык очень сложен. Процесс понимания языка и управления им чрезвычайно комплексный, и по этой причине принято использовать разные методы для решения различных задач, прежде чем связывать все вместе. Языки программирования, такие как Python или R, широко используются для реализации этих методов, но прежде чем углубляться в строки кода (это будет темой другой статьи), важно понять концепции, лежащие в основе них.
Давайте разъясним некоторые из наиболее часто используемых алгоритмов:
Мешок слов
Мешок слов (Bag of Words) – это широко используемая модель, которая позволяет вам подсчитывать все слова в фрагменте текста. По сути, он создает матрицу вхождений для предложения или документа, игнорируя грамматику и порядок слов. Эти частоты ("встречаемости") слов затем используются в качестве признаков для обучения классификатора. В качестве краткого примера я взял первое предложение песни «Через Вселенную» из The Beatles:
Words are flowing out like endless rain into a paper cup, They slither while they pass, they slip away across the universe.
А теперь посчитаем слова:
Этот подход может обладает недостатками, такими как отсутствие семантического значения и контекста; служебные части речи (например, артикли «the», «a») добавляют шум в анализ. Более того, некоторые слова не имеют соответствующего веса («вселенная» весит меньше, чем слово «они»).
Чтобы решить эту проблему, изменяют частоту слов в зависимости от того, как часто они появляются во всех текстах (а не только в том, который мы анализируем), чтобы для часто встречающихся слов, таких как «the», применялся специальный "штраф". Такой подход к оценке называется "Мера оценки важности слова в контексте документа" (TF-IDF), и он улучшает набор слов с помощью "частотных" весов. Через TF-IDF часто встречающиеся в тексте термины «вознаграждаются» (например, слово «они» в нашем примере), но они также «наказываются», если эти термины часто встречаются в других текстах, которые мы также включаем в алгоритм. Этот метод выделяет и «награждает» уникальные или редкие термины с учетом всех текстов. Тем не менее, у этого подхода нет ни контекста, ни семантики.
Токенизация (Tokenization)
Это процесс разбиения текста на предложения и слова. По сути, это задача разрезать текст на части, называемые токенами, и в то же время отбросить определенные символы, например знаки препинания. Следуя нашему примеру, результатом токенизации будет:
Довольно просто, правда? Что ж, хотя в этом случае это может показаться довольно простым в таких языках, как английский, где слова разделяются пробелом (так называемые сегментированные языки), не все языки ведут себя одинаково, и, если подумать, одних пробелов недостаточно даже для английского, чтобы выполнить правильную токенизацию. Разделение на пробелы может разбить то, что следует рассматривать как один токен, как в случае некоторых имен собственных (например, Сан-Франциско или Нью-Йорк) или заимствованных иностранных фраз (например, laissez faire).
Токенизация также может удалить знаки препинания, облегчая путь к правильной сегментации слов, но также вызывая возможные осложнения. В случае точек, следующих за аббревиатурой (например, Dr.), Точка, следующая за этой аббревиатурой, должна рассматриваться как часть того же символа и не удаляться.
Процесс токенизации может быть особенно проблематичен при работе с биомедицинскими текстовыми доменами, которые содержат много дефисов, скобок и других знаков препинания.
Удаление стоп-слов (Stop Words Removal)
Включает в себя избавление от артиклей, местоимений и предлогов, таких как «the» или «to» на английском языке. В этом процессе некоторые очень распространенные слова, которые, по-видимому, не представляют никакой ценности для цели NLP, фильтруются и исключаются из обрабатываемого текста, таким образом удаляя распространенные и часто встречающиеся термины, которые не информативны для соответствующего текста. Стоп-слова можно безопасно игнорировать, выполняя поиск в заранее определенном списке ключевых слов, освобождая место в базе данных и сокращая время обработки.
Универсального списка стоп-слов не существует. Их можно выбрать заранее или создать с нуля. Возможный подход – начать с принятия заранее определенных стоп-слов и добавить слова в список позже. В последнее время общая тенденция заключалась в том, чтобы перейти от использования больших стандартных списков стоп-слов к использованию вообще без списков.
Дело в том, что удаление стоп-слов может стереть релевантную информацию и изменить контекст в данном предложении. Например, если мы выполняем анализ настроений и удалим стоп-слово, например «не», мы можем сбить наш алгоритм с правильного пути. В этих условиях мы можем выбрать минимальный список стоп-слов и добавить дополнительные термины в зависимости от конкретной цели.
Стемминг (Stemming)
Относится к процессу разрезания конца или начала слова с целью удаления аффиксов (лексических дополнений к корню слова).
Аффиксы, которые добавляются в начале слова, называются префиксами (например, «астро» в слове «астробиология»), а аффиксы, прикрепленные в конце слова, называются суффиксами (например, «н» в слове «полезный»).
Проблема в том, что аффиксы могут создавать или расширять новые формы одного и того же слова (так называемые флективные аффиксы) или даже сами создавать новые слова (так называемые словообразовательные аффиксы). В английском языке префиксы всегда являются производными (аффикс создает новое слово, как в примере с префиксом «эко» в слове «экосистема»), но суффиксы могут быть производными (аффикс создает новое слово, как в примере с суффикс «ист» в слове «гитарист») или словоизменительный (аффикс создает новую форму слова, как в примере с суффиксом «ее» в слове «быстрее»).
Итак, как мы можем определить разницу и нарезать нужный кусок?
Возможный подход состоит в том, чтобы рассмотреть список общих аффиксов и правил (языки Python и R имеют разные библиотеки, содержащие аффиксы и методы) и выполнить стемминг на их основе, но, конечно, этот подход имеет ограничения. Поскольку стеммеры используют алгоритмические подходы, результатом этого процесса может быть не настоящее слово или даже не изменение значения слова (и предложения). Чтобы компенсировать этот эффект, вы можете редактировать эти предопределенные методы, добавляя или удаляя аффиксы и правила, но вы должны учитывать, что вы можете улучшать производительность в одной области, производя ухудшение в другой. Всегда смотрите на картину целиком и проверяйте работоспособность своей модели.
Итак, если у стемминга есть серьезные ограничения, почему мы его используем? Прежде всего, его можно использовать для исправления орфографических ошибок токенов. Стеммеры просты в использовании и работают очень быстро (они выполняют простые операции со строкой), и если скорость и производительность важны в модели NLP, то стемминг – лучший вариант. Помните, мы используем его с целью повышения производительности, а не как упражнение по грамматике.
Лемматизация
Цель Лемматизации (Lemmatization) – привести слово к его основной форме и сгруппировать различные формы одного и того же слова. Например, глаголы в прошедшем времени заменяются на настоящее (например, «пошел» заменен на «пойти»), а синонимы унифицированы (например, «лучший» заменен на «хороший»), таким образом стандартизируются слова со схожим значением их корня. Хотя это кажется тесно связанным с процессом выделения корней, лемматизация использует другой подход для достижения корневых форм слов.
Лемматизация преобразует слова в их словарную форму (известную как лемма), для чего требуются подробные словари, в которых алгоритм может искать и связывать слова с соответствующими леммами. Например, слова «бегая», «бежит» и «бегал» являются формами слова «бегать», поэтому «бегать» – это лемма всех предыдущих слов.
Лемматизация также принимает во внимание контекст слова для решения других проблем, таких как устранение неоднозначности, что означает, что она может различать идентичные слова, которые имеют разные значения в зависимости от конкретного контекста. Подумайте о таких словах, как «bat» (что может соответствовать животному или бите, используемой в бейсболе) или «bank» (что соответствует финансовому учреждению или земле рядом с водоемом). Определяя параметр "часть речи" того или иного слова (будь то существительное, глагол и т.д.), можно определить его роль в предложении и устранить его двусмысленность.
Как вы уже могли представить, лемматизация – это гораздо более ресурсоемкая задача, чем стемминг. В то же время, поскольку для этого требуется больше знаний о структуре языка, чем при подходе к стеммингу, он требует большей вычислительной мощности, чем настройка или адаптация алгоритма стемминга.
Тематическое моделирование
Метод обнаружения скрытых структур в наборах текстов или документов. По сути, он группирует тексты, чтобы обнаруживать скрытые темы на основе их содержания, обрабатывая отдельные слова и присваивая им значения на основе их распределения. Этот метод основан на предположении, что каждый документ состоит из смеси тем и что каждая тема состоит из набора слов, а это означает, что если мы сможем обнаружить эти скрытые темы, мы сможем раскрыть смысл наших текстов.
Из вселенной методов тематического моделирования, вероятно, наиболее часто используется Скрытое распределение Дирихле (LDA). Этот относительно новый алгоритм (изобретенный менее 20 лет назад) работает как метод Обучения без учителя (Unsupervised Learning), который раскрывает различные темы, лежащие в основе набора документов. В таких методах, как этот, нет выходной переменной, которая бы направляла процесс обучения, и данные исследуются с помощью алгоритмов для поиска закономерностей. Чтобы быть более конкретным, LDA находит группы связанных слов по:
- Назначению каждого слова случайной теме, где пользователь определяет количество тем, которые он хочет раскрыть. Вы не определяете сами темы (вы определяете только количество тем), и алгоритм будет сопоставлять все документы с темами таким образом, чтобы слова в каждом документе в основном захватывались этими воображаемыми темами.
- Алгоритм итеративно перебирает каждое слово и переназначает слово теме, принимая во внимание вероятность того, что слово принадлежит теме, и вероятность того, что документ будет создан темой. Эти вероятности вычисляются многократно, до сходимости алгоритма. В отличие от других алгоритмов кластеризации, таких как Метод K-средних (K-Means), которые выполняют жесткую кластеризацию (где темы не пересекаются), LDA назначает каждый документ смешанным темам, что означает, что каждый документ может быть описан одной или несколькими темами (например, Документ описывается 70% темы A, 20% темы B и 10% темы C) и отражают более реалистичные результаты.
Тематическое моделирование чрезвычайно полезно для классификации текстов, построения рекомендательных систем (например, чтобы рекомендовать вам книги на основе прочитанных) или даже для выявления тенденций в онлайн-публикациях.
Как выглядит будущее?
В настоящее время NLP пытается обнаружить нюансы в значении языка, будь то из-за отсутствия контекста, орфографических ошибок или диалектных различий.
В марте 2016 года Microsoft запустила Тэя, чат-бота с искусственным интеллектом в Twitter в качестве эксперимента. Идея заключалась в том, что чем больше пользователей будет общаться с Тэем, тем умнее он станет. Однако через 16 часов его пришлось удалить из-за его расистских и оскорбительных комментариев:
Microsoft извлекла урок и несколько месяцев спустя выпустила Zo, англоязычный чат-бота второго поколения, который не будет совершать те же ошибки, что его предшественник. Zo использует комбинацию инновационных подходов для распознавания намерения и поддержания разговора, а другие компании изучают возможности использования ботов, которые могут запоминать детали, характерные для отдельного разговора. Хотя будущее NLP выглядит чрезвычайно сложным и полным угроз, эта дисциплина развивается очень быстрыми темпами (вероятно, как никогда раньше), и мы, вероятно, достигнем уровня прогресса в ближайшие годы, который сделает сложные приложения возможными.
Фото: @milada_vigerova
Автор оригинальной статьи: Diego Lopez Yse
Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте курс «Введение в Машинное обучение» на Udemy.