Каковы хорошие отправные точки для тех, кто интересуется обработкой естественного языка?[закрыто]

StackOverflow https://stackoverflow.com/questions/212219

  •  03-07-2019
  •  | 
  •  

Вопрос

Вопрос

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

Обработка естественного языка это область, которая занимается такого рода проблемами, и после некоторых первоначальных исследований я обнаружил, что OpenNLP - хаб и университетское сотрудничество, такое как попытка реализации проекта.И stackoverflow имеет это.

Если бы кто-нибудь мог связать меня с какими-нибудь хорошими ресурсами, от исследовательских работ и вводных текстов до API, я был бы счастливее, чем 6-летний ребенок, открывающий свои рождественские подарки!

Обновить

Благодаря одной из ваших рекомендаций я нашел opencyc ("крупнейшая в мире и наиболее полная общая база знаний и механизм рассуждений, основанный на здравом смысле").Что еще более удивительно, есть проект, представляющий собой дистиллированную версию opencyc под названием ЗОНТ.Он содержит семантические данные в синтаксисе rdf / owl / skos n3.

Я также наткнулся на antlr, генератор синтаксического анализа для "построение распознавателей, интерпретаторов, компиляторов и трансляторов на основе грамматических описаний".

И здесь есть вопрос от меня, в котором перечислены тонны свободные и открытые данные.

Спасибо сообществу stackoverflow!

Это было полезно?

Решение

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

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

Если вас интересует значение текста, что ж, это следующая важная вещь.Предполагается, что семантические поисковые системы запустят Web 3.0, но мы еще далеки от этого.Извлечение логики из текста зависит от нескольких шагов:

  • Токенизация, Разбиение на фрагменты
  • Устранение неоднозначности на лексическом уровне (Время летит как стрела, а плод летит как банан).
  • Синтаксический анализ
  • Морфологический анализ (время, аспект, падеж, число, еще много чего)

Небольшой список, навскидку составленный у меня в голове.Это еще не все :-), и еще много деталей по каждому пункту.Например, когда я говорю "синтаксический анализ", что это такое?Есть такие многие разные алгоритмы синтаксического анализа, и существует столько же формализмов синтаксического анализа.К числу наиболее мощных относятся Грамматика, примыкающая к дереву и Грамматика структуры фразы, управляемой головой.Но оба они вряд ли используются в полевых условиях (на данный момент).Обычно вы будете иметь дело с каким-то наполовину испеченным генеративным подходом, и вам придется самостоятельно проводить морфологический анализ.

Переход от этого к семантике - большой шаг.Интерфейс синтаксиса / семантики зависит как от синтаксического и используется семантическая структура, и единого рабочего решения пока нет.С семантической стороны, есть классическая порождающая семантика, тогда есть Теория Репрезентации дискурса, динамическая семантика, и многое другое.Даже логический формализм, на котором все основано, до сих пор четко не определен.Некоторые говорят, что следует использовать логику первого порядка, но этого вряд ли кажется достаточным;затем существует интенсиональная логика, используемая Монтегю, но она кажется чрезмерно сложной и вычислительно неосуществимой.Существует также динамическая логика (Грюнендейк и Стокхоф были пионерами в этой области.Отличный материал!) и совсем недавно, этим летом, на самом деле, Jeroen Groenendijk представил новый формализм, Любознательный Семантика, тоже очень интересно.

Если вы хотите начать с очень простого уровня, прочитайте Блэкберн и Бос (2005), это отличный материал и фактическое введение в вычислительную семантику!Недавно я расширил их систему, чтобы охватить теорию разделения вопросов (ответы на вопросы - это зверь!), предложенную Грюнендейком и Стокхофом (Groenendijk and Stokhof, 1982), но, к сожалению, сложность теории составляет O (n2) в области отдельных людей.При этом, я нашел реализация B&B, чтобы быть немного, erhm… программистские, на местах.Тем не менее, это действительно поможет вам погрузиться в вычислительную семантику, и это по-прежнему очень впечатляющая демонстрация того, что можно сделать.Кроме того, они заслуживают дополнительных баллов за внедрение грамматики, которая используется в Криминальном чтиве (the movie).

И пока я этим занимаюсь, возьмите Пролог.Многие исследования в области вычислительной семантики основаны на Prolog. Изучайте Пролог прямо сейчас! это хорошее вступление.Я также могу порекомендовать "Искусство пролога" и книги Ковингтона "Углубленное программирование на прологе" и "Обработка естественного языка для программистов на прологе", первая из которых доступна бесплатно онлайн.

Другие советы

Хомский - совершенно неправильный источник для поиска НЛП (и он сам бы сказал так же много) - см .: Статистические методы и лингвистика " Абни.

Jurafsky и Martin, упомянутые выше, являются стандартным справочником, но я сам предпочитаю Manning and Sch & # 252; tze . Если вы серьезно относитесь к НЛП, вы, вероятно, захотите прочитать оба. Есть видео одного из курсов Мэннинга, которые можно онлайн .

Если вы дочитаете Пролог до главы DCG в Learn Prolog Сейчас!упомянутый г - номДимитров выше, у вас будет хорошее начало для внедрения некоторой семантики в вашу систему, поскольку Prolog предоставляет вам очень простой способ ведения базы данных знаний и убеждений, которую можно обновлять с помощью ответов на вопросы.

Что касается литературы, у меня есть для вас одна важная рекомендация:сбегай и купи Обработка речи и языка автор: Джурафски и Мартин.Это в значительной степени тот самый книга по НЛП (первая глава доступна онлайн);используется во множестве университетских курсов, но также очень удобочитаем для нелингвиста и практично ориентирован, в то же время достаточно глубоко вникая в проблемы лингвистики.Я действительно не могу достаточно его рекомендовать.Главы 17, 18 и 21, похоже, это то, что вы ищете (14, 15 и 18 в первом издании).;они показывают вам простую лямбда-нотацию, которая довольно хорошо переводится в Prolog DCG с функциями.

О, кстати, о получении степени магистра лингвистики;если вам нравится семантика NL, я бы предпочел порекомендовать пройти все курсы, связанные с искусственным интеллектом, которые вы можете найти (хотя любые курсы по "простой" лингвистической семантике, логике, logical semantics, DRT, LFG/ HPSG/CCG, синтаксический анализ NL, формальная лингвистическая теория и т.д.не повредило бы...)

Чтение оригинальной литературы Хомского на самом деле не приносит пользы;насколько я знаю, в настоящее время не существует реализаций, которые непосредственно в соответствии с его теориями, весь его полезный материал в значительной степени поглощен другими теориями (и любой, кто останется рядом с лингвистами на какое-то время, впитает знания Хомского методом осмоса).

Я настоятельно рекомендую поиграть с NLTK и прочитать Книга NLTK . NLTK очень мощный и простой в освоении.

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

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

Одним из первых исследователей НЛП был Ноам Хомский; он написал небольшие книги на эту тему в 50–70-х годах. Вы можете найти это увлекательным чтением.

Cycorp имеет краткое описание того, как их база знаний Cyc получает значение из предложений.

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

Проще всего начать со строительных блоков - взглянуть на документацию для пакета, который пытается это сделать. Я бы порекомендовал Python [Natural Language Toolkit (NLTK) 1 , особенно из-за их хорошо написанная бесплатная книга , которая наполнена примерами. Это не приведет вас к тому, что вы хотите (что является сложной задачей ИИ), но даст вам хорошую опору. В NLTK есть парсеры, чанкеры, контекстно-свободные грамматики и многое другое.

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

Проблема в том, что большинство из нас не понимают, что такое язык. И без этого понимания, чертовски сложно реализовать решение.

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

Очень приятное для чтения введение - The Language Instinct от Steven Pinker. Это входит в материал Хомского, а также рассказывает интересные истории с точки зрения эволюционной биологии. Возможно, стоит начать с чего-то подобного, прежде чем погрузиться в статьи Хомского и связанные с ними работы, если вы новичок в этой теме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top