Есть ли хорошая библиотека обработки естественного языка [закрыто]

90

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

  • Заберем завтра в 12:00
  • Запросить доставку после 10 июня
  • Пожалуйста, не отправляйте раньше среды
  • Добавьте в заказ еще 10 единиц XYZ
Вини
источник

Ответы:

79

LingPipe очень хорош и хорошо документирован. Вы также можете взглянуть на:

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

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

n3rd
источник
1
Я представил свой отчет, основанный на материалах, полученных на этом форуме и в других местах в сети. Я также предложил другие варианты, которые вы предложили, и компания решила отложить это (сейчас начинается НИОКР, чтобы найти лучшего кандидата).
Vini
1
Если вы сравните LingPipe с другими перечисленными вами, какой из них вы бы предпочли? Я задаю это не только для вопроса @Winnie, я задаю его для общих целей.
kamaci
1
Проверьте MALLET: mallet.cs.umass.edu
Samik R
11

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

В области Java Groovy имеет некоторую поддержку для построения DSL .

Пол Мори
источник
Вот несколько строк из документа с требованиями: '.. и пользователь должен иметь возможность ввести примечание или специальную инструкцию на простом английском языке. Затем система должна проанализировать инструкцию пользователя и заполнить соответствующие поля (если есть) заказа правильными значениями »,
Вини,
10
Это довольно расплывчатое требование. Например, должно ли примечание быть грамматически правильным? Я не уверен, знакомы ли стороны, выдвинувшие требования с состоянием НЛП, но проблема, которую они описали, по сути, заключается в понимании прочитанного или понимании естественного языка, что является одной из проблем, описываемых как Грааль НЛП. Для меня сомнительно, что вы найдете пакет, который может просто «сделать это» за вас - вероятно, гораздо более реалистично предоставить пользователю пользовательский интерфейс, в котором он может указать ограниченное количество специальных инструкций.
Пол Мори
8

Для других языков JVM см.

oluies
источник
Тем не менее, NLP-часть Scala NLP под названием Epic, похоже, еще скоро появится.
Эрик Каплун