Стермеры против Лемматизаторов

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

И снова определение "идеального" лемматизатора является сомнительным, потому что другая задача НЛП потребовала бы различного уровня лемматизации. Например. Преобразование слов между глаголами/существительными/прилагательными..

Stemmers

[in]: having
[out]: hav

Lemmatizers

[in]: having
[out]: have
  • Итак, вопрос в том, являются ли английские стволовые средства полезными сегодня? Поскольку у нас есть множество инструментов лемматизации для английского языка

  • Если нет, то как мы должны двигаться дальше, чтобы создать надежные лемматизаторы, которые может принимать значения nounify, verbify, adjectify и adverbify предварительно обрабатывает?

  • Как можно легко масштабировать задачу лемматизации на другие языки которые имеют сходные морфологические структуры, как английский?

Ответ 1

Q1: "[..] являются английскими стволовыми, полезными вообще сегодня? Поскольку у нас есть множество инструментов лемматизации для английского языка

Да. Стэммеры намного проще, меньше и обычно быстрее, чем lemmatizers, и для многих приложений их результаты достаточно хороши. Использование lemmatizer для этого - пустая трата ресурсов. Рассмотрим, например, уменьшение размерности в информационном поиске. Вы заменяете все диск/вождение на driv как в запрошенных документах, так и в запросе. Вам все равно, будет ли это диск или driv или x17a $, если он объединяет связанные с флексивно-словесными словами слова.

Q2: "[..] как мы должны двигаться дальше, чтобы создавать надежные лемматизаторы, которые могут принимать на себя, утверждать, прилагать и рекламировать препроцессы?

Каково ваше определение леммы, включает ли деривация (привод - драйвер) или только перегиб (привод - привод - повод)? Учитывает ли она семантику?

Если вы хотите включить вывод (который, по мнению большинства людей, включает в себя глагольные существительные и т.д.), имейте в виду, что вывод гораздо более нерегулярен, чем перегиб. Есть много идиоскрекратий, пробелов и т.д. Вы действительно хотите изменить (сменить поезда) и изменить (как монеты) на одну и ту же лемму? Если нет, то где вы рисуете границу? Как насчет нерва - unnerve, earth - unearth - earthling,... Это действительно зависит от приложения.

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

Q3: "Как можно легко масштабировать задачу леммитизации на другие языки, имеющие похожие морфологические структуры, как английский?"

Что вы подразумеваете под "аналогичными морфологическими структурами, такими как английский"? У английского языка очень мало флективной морфологии. Существуют хорошие лемматизаторы для языков других морфологических типов (действительно флективные, агглютинативные, шаблоны,...).

С возможным исключением агглютинативных языков я бы сказал, что наилучшим решением является таблица поиска (скажем, сжатое trie). (Возможно, с некоторыми правилами резервного копирования для неизвестных слов, таких как имена собственных). За последующим поиском следует какая-то неоднозначность (от тривиального - взять первый или перенести первую, совместимую с тегом слов POS, на гораздо более сложную). Более сложными disambiguations обычно контролируются стохастические алгоритмы (например, TreeTagger или Faster), хотя комбинация машинного обучения и вручную созданных правил была выполнена (см., Например, this).

Очевидно, что для большинства языков вы не хотите создавать таблицу поиска  но вместо этого генерировать его из описания морфологии  это язык. Для флективных языков вы можете перейти к инженерному  путь хаджи для чешского или Михеева для русского языка, или, если вы дерзкий,  вы используете двухуровневую морфологию. Или вы можете сделать что-то промежуточное,  например Hana (я сам) (обратите внимание, что все они полны  морфологические анализаторы, которые включают лемматизацию). Или вы можете научиться  lemmatizer неконтролируемым образом a la Яровский и  Wicentowski, возможно, с ручной постобработкой, исправляя  наиболее часто встречающиеся слова.

Есть слишком много вариантов, и на самом деле все зависит от того, что вы хотите делать с результатами.

Ответ 2

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

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

В целях улучшения результата поиска на самом деле не важно, имеет ли смысл (или лемма) значение ( "есть" ) или нет ( "hav" ). Ему нужно только представить это слово и все его флективные формы. Фактически, некоторые системы используют числа или другие типы id-строк вместо стебля или леммы (или базовой формы или того, что она может быть вызвана).

Следовательно, это пример приложения, где стволовые (по вашему определению) так же хороши, как лемматизаторы.


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

Stemmer: функция, которая уменьшает флективные формы до стеблей или базовых форм, используя правила и списки известных суффиксов.

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

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

Ответ 3

Ответ в значительной степени зависит от задачи или конкретной области исследования в процессе обработки естественного языка (NLP), о котором мы говорим.

Стоит отметить, что было доказано, что в некоторых конкретных задачах, таких как Sentiment Analysis (это избранное подполе в NLP), использование Stemmer или Lemmatizer как особенность в разработке системы (обучение модели машинного обучения) не оказывает заметного влияния на точность модели независимо от того, насколько велик инструмент. Хотя это делает производительность немного лучше, но есть более важные функции, такие как Анализ зависимостей, которые имеют значительный потенциал для работы в таких системах.

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