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

Вопрос

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

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

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

Update

В рамках одной из ваших рекомендаций я нашел opencyc ( "самая большая в мире и самая полная общая база знаний и здравый смысл" ). Еще более удивительно, что существует проект, который является дистиллированной версией opencyc, называемой UMBEL. Он содержит семантические данные в синтаксисе rdf/owl/skos n3.

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

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

Благодаря сообществу stackoverflow!

Ответ 1

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

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

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

  • Tokenization, Chunking
  • Несогласование на лексическом уровне (Время летит как стрела, но плод мухи, как банан).
  • Синтаксический анализ
  • Морфологический анализ (время, аспект, случай, число, что-то еще)

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

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

Если вы хотите начать работу на очень простом уровне, прочитайте Blackburn and Bos (2005), это отличная штука, факто введение в вычислительную семантику! Недавно я расширил свою систему, чтобы охватить раздел-теорию вопросов (вопрос ответа - это зверь!), Как было предложено Groenendijk and Stokhof (1982), но, к сожалению, теория имеет сложность O (n²) над областью индивидуумов, При этом я нашел реализацию B & B немного, erhm... hackish, в местах. Тем не менее, это будет действительно, действительно поможет вам погрузиться в вычислительную семантику, и это по-прежнему очень впечатляющая демонстрация того, что можно сделать. Кроме того, они заслуживают дополнительных прохладных точек для реализации грамматики, которая разрешена в Pulp Fiction (фильм).

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

Ответ 2

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

Юрафски и Мартин, упомянутые выше, являются стандартной ссылкой, но я сам предпочитаю Manning and Schütze. Если вы серьезно относитесь к НЛП, вы, вероятно, захотите прочитать и то, и другое. Есть видео одного из доступных курсов Manning онлайн.

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

Очень приятное читаемое введение - "Инстинкт языка" Стивена Пинкера. Он попадает в материал Чомского, а также рассказывает интересные истории из угла эволюционной биологии. Возможно, стоит начать с чего-то подобного до погружения в документы Хомского и связанные с ним работы, если вы новичок в этом вопросе.