Парадигматические модули против Lemmatizers


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

модули

[in]: having
[out]: hav

Lemmatizers

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

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

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

3 64

3 ответа:

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

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

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

ваш определение Лемма включает ли он деривацию (диск -водитель) или только интонацией (диск -диски -подъехал)? Учитывает ли он семантику?

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

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

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

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

за возможным исключением агглютинативных языков, я бы сказал, что a таблица (скажем, сжатый trie) является лучшим решением. (Возможно, с некоторыми правилами резервного копирования для неизвестных слов, таких как имена собственные). Поиск сопровождается каким-то видом неоднозначность (начиная от тривиального - возьмите первый, или возьмите первый, совместимый со словами POS tag, до гораздо более сложного). Более сложные неоднозначности обычно контролируются стохастическими алгоритмами (например,TreeTagger или быстрее), хотя сочетание машинного обучения и вручную созданных правил тоже было сделано (см. например этой).

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

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

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

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

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

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


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

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

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

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

ответ сильно зависит от задачи или конкретной области исследования в рамках обработки естественного языка (НЛП), о которой мы говорим.

стоит отметить, что было доказано, что в некоторых конкретных задачах, как Анализ Настроений (это любимое подполе в НЛП), используя Штеммер или Лемматизатор как особенность в развитии системы (обучение модели машинного обучения) не имеет заметного влияние на точность модели независимо от того, насколько велик инструмент. Хотя это делает работу немного лучше, но есть более важные функции, такие как зависимость парсинга что есть значительный потенциал для работы в таких системах.

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