2015-09-07 2 views
0

Я хочу разобрать текстовые тела Malayalam (индийский язык) для разработки системы ответов на вопрос. Есть ли какие-либо инструменты NLP для семантического разбора для языков, отличных от английского.Есть ли какие-либо инструменты NLP для семантического разбора для языков, отличных от английского

+0

Пожалуйста, укажите, какой язык вы хотите проанализировать? Какую задачу вы хотите решить? НЭК? POS taggin? Морфологический? Лемматизации? – amirouche

+0

@amirouche .. Я хочу разбирать индийские языки, такие как Malayalam .., используя парсинг, я мог бы продлить работу до ответа на вопрос – Kaira

+1

Пожалуйста, [отредактируйте ваше сообщение] (http://stackoverflow.com/posts/32432719/edit), чтобы полностью объяснить ваше намерение. Будьте подробными и конкретными. Также ** добавьте другие теги, чтобы охватить больше людей **. Выберите теги, которые относятся к теме, с которой вы имеете дело, лучше попросите прощения, чтобы остаться в темноте. Так что посмотрите другие вопросы, которые имеют аналогичное намерение в разделе «related» на странице и скопируйте интересные теги. Вам, по крайней мере, нужно «[ответить на вопрос] (http://stackoverflow.com/questions/tagged/question-answering)». – amirouche

ответ

5

Это может показаться большим и страшным.

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

Существует две части на вопрос-ответ:

  • понимания вопроса
  • смотрит ответ в каком-то препроцессоре набора данных (скажет wikidata.org)

Оба шага требует аналогичных алгоритмов.

Вертикальный вопрос-ответа на трубопровод

Чтобы реализовать вертикальный вопрос/автоответчик системы вы должны быть в состоянии разобрать «малаялам» и других индийских языков на высоком уровне, что означает, по крайней мере, сделать:

  • разделить текст на абзацы, а затем на предложения и на слова. Вы должны быть в состоянии сказать, где заканчивается предложение. Например, в зависимости от языковых предложений не может заканчиваться один и тот же символ. Или аббревиатура. например, ie. - это не конец предложения. I.B.M. не три предложения и т. Д. Как начинается предложение, на английском языке написано письмо в верхнем регистре, но не все буквы в верхнем регистре начинаются с предложения, такого как имена существительные, например. «Хомский жив?»

  • Part of Speech Tagging: скажите существительных, от имен собственных, от глаголов и т.д.

  • создать named entity recognizer: определить имена лиц, организации, места, выражения времени, количество денежных сумм, проценты и т.д.

  • строить семантические зависимости дерева: например к которому относится названное лицо «она» или «он» означает? который является предметом предложения, дополнения и т. д.

  • создать text generation tool. Учитывая, что ваша программа понимает вопрос, нашла возможный ответ, он должен отформатировать его на естественном языке.

К счастью, нет недостатка в примере для этого для английского, из которого вы черпаете вдохновение. Если вы хотите работать на Python, вам нужно будет изучить Spacy (хочу быть быстрой и текущей библиотекой НЛП) и NLTK, который comes with book.

Алгоритмы могут быть разделены между языками.

Более узкий подход

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

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

ВОЗ: Индия ЧТО: выиграть ЧТО: Чемпионат по крикету КОГДА: 2015

Здесь я упрощающие мечения, как WHO, WHEN и WHAT.

Легко ответить на вопрос:

ВОЗ :? ЧТО: выиграть ЧТО: Чемпионат по крикету КОГДА: 2015

т.е.

, кто выиграл чемпионат по крикету в 2015 году?

Опять вопросы должны быть "предсказуемой" и легко разобрать и другие примеры:

ВОЗ сделала то, что КОГДА

ЧТО ЧТО

КОГДА ЧТО КТО

Это может работать, если вы можете распознать/разобрать WHO, a WHEN и угадайте, что такое WHAT в предложении, предоставленном пользователем. Также вы можете упростить и сказать, что WHEN s может быть только 4 цифры, т.е. года. И еще более ограничьте вопрос, чтобы упростить парсинговую часть.

Это приведет вас к программе, которая может фактически ответить на вопрос таким образом, который более естественен и правилен тем, что системы поиска информации (IR), такие как raw ElasticSearch или PostgreSQL.

Факты базы данные

Вы, вероятно, нужны работать с семантической сетью взглянуть на free ConceptNetsend a message to the mailling list если вам нужна помощь или хотите внести свой вклад индийской Wiktionary) или babelnet. Существует также wordnet.

курс

мне понравилось много Jurafsky course, есть специальная глава о QA. Юрафски написал полное введение книги в НЛП.

Советы по поиску

Поиск World Wide Web для получения информации об алгоритмах NLP на языке вы смотрите информацию для.Скажем, для французского lemmatizer я делаю поиск на французском исследовательском портале или через поисковую систему, используя родной то есть. французская формулировка. Американские поисковые системы на самом деле не так хороши на других языках, кроме английского, поэтому будьте готовы к разбивке на страницы (также используйте инструменты поиска).

Культура

Построить хорошую культуру по обработке естественного языка и искусственного интеллекта. Посмотрите обобщение или поиск информации (это легко), вы узнаете метод, который может быть повторно использован в другой проблеме. Например, если вы посмотрите на rule based machine translation, вы узнаете, что в отрасли они использовали упрощенные не двусмысленные грамматики естественного языка, чтобы иметь возможность точно переводить документацию. Эти документы написаны простым английским языком (например, SUBJECT VERB NOUN), для которого легко можно создать компьютерную грамматику (например, грамматики на компьютерном языке) и легко перевести в основном словосочетание. Это пример решения подзадачи для достижения более высокого качества. Вот как я придумал этот узкий подход.

Алгоритмы

Последнее, но не менее, большинство суб-решение проблем попадает в одну из трех следующих алгоритм категории:

  • Algrebraic и теории графов пытаются делает Сенс данных и может объяснить его результаты. например PageRank, SimRank, CoSimRank, логическое программирование.

  • Статистические данные, которые я сравниваю с термодинамикой, где в основном «вы решаете проблему, но не знаете почему». Это то, что называется «машинное обучение» и в основном используется в отрасли для решения фактически узких проблем по сравнению с НЛП. Однако алгоритм машинного обучения существует для решения проблем естественного языка, например topic modeling, но это не единственный пример. Statistical programming популярный.

  • Гибрид: это означает сочетание обоих методов.

Read On Chomsky and the Two Cultures of Statistical Learning для большего понимания о дихотомии и исследование/инженерном фоне.

Общие советы

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

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

Сохраните документы и ресурсы, которые вы найдете, вещи приходят и уходят.

1

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

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

Одной из возможностей было бы использовать семантическую маркировку роли.Этот неглубокий семантический анализ не так подробно, как настоящий семантический парсер, но, возможно, это шаг в правильном направлении. Анализатор SRL, который я знаю, не для английского сам по себе, они скорее поставляются с уже подготовленной языковой моделью для английского языка. Поэтому самой сложной задачей является подготовка такой модели для вашего языка, которая требует, чтобы у вас был большой корпус с семантической аннотацией. Большинство парсеров нуждаются в этих данных в формате CoNLL, потому что для разных языков есть тела, доступные для нескольких языков here.

Мат-инструменты
Они сосредоточены в основном на разборе зависимости, но и содержат семантическую роль этикетировщик, которые могут быть обучены. Это автономные инструменты, написанные на C++, поэтому, если вы хотите интегрировать их в свою программу, вам, возможно, придется создать инструментальную цепочку для некоторых сценариев оболочки.

ClearNLP
В отличие от мате-инструментов, ClearNLP может быть использован в качестве библиотеки Java и проект также активно развивается. Они также поддерживают подготовку новой модели SRL, которая является относительно новой.

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

Я работаю сейчас с SEMAFOR парсер (GitHub). Он написан на Java, поставляется с предварительно подготовленными моделями для английского языка и создает аннотации FrameNet в легко читаемом XML-файле. Он далек от совершенства (как и все семантические парсеры в настоящее время), но он создает выход, с которым вы можете работать. Если вы решите работать с ним, лучше всего игнорировать предварительно скомпилированные банки и загрузить самый новый код со своей страницы GitHub.

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

Смежные вопросы