Как выглядят алгоритмы обработки естественного языка?

101
10
1
Лучший ответ
119

Это очень обширная область, которая сильно изменилась за эти годы.

По сути, в области НЛП есть два лагеря - Лингвистический лагерь и Статистический лагерь.

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

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

ELIZA - это ранняя известная программа ИИ, которую можно рассматривать как попытку пройти тест Тьюринга. По сути, вы можете думать об Элизе как о прабабушке Сири.

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

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

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

Чтобы поместить это в перспективу, лингвисты также оказали глубокое влияние на информатику вне естественного языка. Если вы когда-либо создавали компилятор, вы используете идеи, которые придумали лингвисты. При создании компилятора вы используете лингвистические правила для анализа и распознавания искусственного языка.

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

Конечно, даже с представлениями CSG, это все еще только говорит вам, как анализировать синтаксическую структуру предложений. Если вы хотите сделать больше, чем просто сказать, является ли предложение грамматически правильным или нет, то вам понадобится еще более сложная модель для описания семантики. Теория репрезентации представляет собой такую ​​модель.

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

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

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

Затем, в 90-х годах, пришли статистические специалисты по машинному обучению и подошли к проблеме НЛП с другой точки зрения. По сути, они отбросили все лингвистические теории и начали с очень простой модели языка, называемой моделью «мешка слов».

Модель «Мешок слов» очень проста. Он считает, что предложение представляет собой не что иное, как пакет слов, не заботясь о порядке слов.

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

Если вам дали эти четыре слова и сказали, что они принадлежат предложению, но порядок слов в предложении был потерян, вы могли бы догадаться, что это за предложение, верно?

В случае компьютера, использующего модель «Мешок слов», ему даже не нужно угадывать, что на самом деле является предложением - он просто должен иметь возможность предположить, что когда он видит эти четыре слова, объединенные в предложении, это, вероятно, имеет аналогичное значение.

Большинство людей, которые изучали лингвистику, были бы шокированы таким предположением. Вы, конечно, можете придумать много случаев, когда предположение неверно и когда вам нужно знать точную синтаксическую структуру предложения, чтобы вывести его истинное значение. И все же во многих других случаях модель «Мешок слов» будет достаточно хороша, чтобы получить общее представление о том, что означает кусок естественного языка.

Чтобы создать популярное приложение, в котором «Bag of Words» работает хорошо, подумайте о поисковых системах.

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

Но почему кто-то хотел бы использовать дрянную модель «Мешок слов», а не сложную лингвистическую модель, и какое преимущество дает статистический лагерь?

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

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

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

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

Теперь вы можете использовать эту статистику, чтобы рассуждать о новых образцах естественного языка, предоставленных вам!

Это, конечно, очень упрощение, но оно дает общее представление о том, что делает Статистический лагерь.

Для дальнейшего уточнения специалисты по статистике сначала ищут грубые особенности естественного языка, который они хотят интерпретировать. Определенная «сумка слов» может быть функцией, но могут быть и другие функции, такие как длина предложения, то, появляется ли слово в непосредственной близости от другого слова, используется ли конкретный глагол и т. Д. Затем они собирают статистику для этих слов. функции на большой объем текста, и запустить алгоритм машинного обучения, чтобы попытаться предсказать шаблоны на основе появления различных функций.

Хотя в настоящее время усилия по программированию сокращены по сравнению с подходами НЛП, основанными на правилах, по-прежнему много усилий для создания корпуса текста с маркировкой для обучения. Кроме того, выяснение того, какие именно функции следует рассматривать для интересующей вас проблемы НЛП, также является сложной черной техникой, известной как «разработка функций».

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

Было проведено несколько ограниченных исследований, которые объединяют статистику с лингвистикой, например, просмотр вероятностных грамматик для представления предложений, таких как вероятностные контекстно-свободные грамматики (PCFG).

И, наконец, в городе появился новый лагерь, и это лагерь глубокого обучения. Благодаря Deep Learning вам больше не нужно беспокоиться о «проектировании функций». Вы просто подаете свой гигантский корпус в нейронную сеть, запускаете на нем backprop, и нейронная сеть волшебным образом изучает шаблоны и правила из необработанных данных. Или, по крайней мере, так оно продается.

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
95

Функция «Hello World» для любого приложения NLP создает корпус. Получив корпус, вы сможете воплотить в жизнь любую дурацкую, безумную идею. Вот так выглядит в R

getcorpus <- function (textdata) {
Корпус <-Corpus (VectorSource (TextData))
корпус <-tm_map (корпус, tolower) # преобразовать в нижний регистр
корпус <- tm_map (корпус, removeNumbers) # удалить номера
корпус <- tm_map (корпус, removeWords, стоп-слова («английский»)) # удалить стоп-слова
corpus <-tm_map (corpus, removePunctuation) # удалить пунктуацию
corpus <-tm_map (corpus, stripWhitespace) # удалить пробелы
корпус <-tm_map (corpus, stemDocument) # системные слова

Возвращение (корпус)
}

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

Я воплотил в жизнь свою не очень дурацкую идею прогнозировать, какие академические журналы подавать на основе вашей информации. Ты можешь найти

Графический интерфейс здесь - InJoFi - Интеллектуальный поиск журнала (v0.2) Более подробная информация здесь - InJoFi: Интеллектуальный код поиска журнала здесь - titubeta / injofi -

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
69

Это может быть так просто, как Vector Space Model, где вы представляете текст как вектор и выполняете векторные операции для обработки данных. Вложения являются одним из таких вариантов использования. Ot даст вам результаты, как это:

Король - женщины ~ королева

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

Тогда есть алгоритмы ранжирования по релевантности в поисковых системах. Tf-IDF, BM25, pagerank - некоторые из примеров.

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

Тогда есть класс алгоритмов, которые пытаются получить Чувство, контекст и предмет письменного текста. Анализ настроений очень популярен. Вы начнете с набора известных слов и их настроений и начнете ассоциировать неизвестные слова с некоторой чувственной ценностью из-за их присутствия / отсутствия с известными словами.

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

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

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
44

Я работаю в агентстве машинного обучения и искусственного интеллекта. В связи с растущим интересом к пространству, мы недавно представили на мероприятии, где обсуждались последствия обработки естественного языка (NLP) и как она используется для обучения моделям машинного обучения.

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

Вы можете прочитать полный пост здесь.

Я надеюсь, что этот контент поможет вам разобраться.

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
25

«Адам зарезал Боба, и он истек кровью! »

Выяснение, относится ли «он» в вышеприведенном предложении к Адаму или Бобу, является большой проблемой в обработке естественного языка.

У этого (и под этим, я имею в виду проблему) также есть причудливое имя: Разрешение Coreference. Это очень хорошо изученная проблема, и я опишу первую статью, в которой был использован подход машинного обучения к этой проблеме, еще в 2001 году.

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

Расстояние: количество предложений между двумя словами. (Интуиция: чем дальше слова, тем меньше вероятность того, что они будут основополагающими) Местоимение: независимо от того, являются ли они местоимениями, одно из них или нет. Соответствие строки: совпадение между двумя словами. (Интуиция: «Президент Трамп» и «Президент», вероятно, имеют ключевое значение.) Соглашение о числе: независимо от того, оба они единичные, оба множественные или нет. Соглашение о семантическом классе: принадлежат ли оба к одному семантическому классу, если таковые имеются («Лицо», «Организация» и т. Д.) Гендерное соглашение: независимо от того, принадлежат ли они к одному полу, если таковые имеются. («Мужчина», «Женщина», «Ни то, ни другое») Аппозитив: если оба являются аппозитивами (Интуиция: если предложение начинается с «Президент США, Дональд Трамп сказал…», то «Президент» и «Дональд Трамп» являются аппозитивами и вероятно, основные). ... и еще несколько похожих функций.

И полученный классификатор имел показатель F1 (показатель точности) ~ 60% (что было здорово в то время). Конечно, в последние несколько лет эта проблема, как и любая другая проблема на земле, решается путем глубокого изучения.

Вот и вы! Еще один пример задачи, которая интуитивно понятна даже для ребенка, но чрезвычайно трудна для понимания машиной. Напоминает мне о:

Люди: Чего мы хотим !?
Машины: разрешение Coreference!
Люди: Когда мы этого хотим?
Машины: когда мы хотим что?

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
25

Общая идея алгоритма обработки естественного языка:

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

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

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
26

Это выглядит как простой текст для человека и двоичный для машины. непрофессионалом

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

Это набор из многих слов в качестве функции для каждого предложения в абзаце путем построения некоторой матрицы tf-idf для признаков и вычисления сходства между словами с использованием таких методов, как евклидово расстояние, косинус аналогично и т. Д., Опять же, в зависимости от требований прогнозировать, предлагать, указывать нечетные и т. д. слова. ~ в данных ученого

ответил(а) 2020-06-07T17:39:29+03:00 3 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема