В чем разница между лемматизацией и стеммингом?


132

Когда я использую каждый?

Кроме того ... зависит ли лемматизация NLTK от частей речи? Было бы точнее, если бы это было так?


2
Это нереально, но почему там тег Python?
Джимми

7
@jimmy: помеченный как python b / c он говорит о библиотеке python nltk
ealdent

2
Вот отличная статья, которая отвечает на этот точный вопрос
Джейкоб

2
Смотрите также: Stemmers vs Lemmatizers
hippietrail

Ответы:


130

Коротко и плотно: http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

Целью как создания корней, так и лемматизации является сокращение флективных форм, а иногда и словообразовательных форм слова до общей базовой формы.

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

Из документов NLTK:

Лемматизация и стемминг - частные случаи нормализации. Они определяют канонического представителя набора родственных словоформ.


интересно узнать, что средняя длина лемматизации говорит нам о документе?
sAguinaga

1
Это не полностью отвечает на вопрос. Вы не объясняете, когда какой именно использовать. Оба могут служить для нормализации, но часто выбираемый вами вариант - это компромисс между точностью и скоростью.
dzieciou

1
@dzieciou, спасибо за ввод - возможно, вы сможете отредактировать ответ; и я также постараюсь добавить еще немного контекста.
miku

80

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

Например:

  1. Слово «лучше» имеет лемму «хорошо». Эта ссылка пропущена при поиске по словарю.

  2. Слово «прогулка» является базовой формой для слова «ходьба», и, следовательно, оно совпадает как с основанием, так и с лемматизацией.

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

Источник : https://en.wikipedia.org/wiki/Lemmatisation


24

Есть два аспекта, чтобы показать их различия:

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

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

Ссылка http://textminingonline.com/dive-into-nltk-part-iv-stemming-and-lemmatization


18

Цель как стемминга, так и лемматизации - уменьшить морфологическую изменчивость. Это контрастирует с более общими процедурами «объединения терминов», которые также могут касаться лексико-семантических, синтаксических или орфографических вариаций.

Настоящая разница между стеммингом и лемматизацией состоит из трех частей:

  1. Построение сокращает словоформы до (псевдо) основы, тогда как лемматизация сокращает словоформы до лингвистически достоверных лемм. Это различие очевидно для языков с более сложной морфологией, но может не иметь значения для многих приложений IR;

  2. Лемматизация имеет дело только с изменчивой изменчивостью, тогда как основание может также иметь дело с деривационной дисперсией;

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

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


13

Как указал MYYN, основание - это процесс удаления флективных, а иногда и деривационных аффиксов из базовой формы, с которой, вероятно, связаны все исходные слова. Лемматизация связана с получением одного слова, которое позволяет сгруппировать множество изменяемых форм. Это сложнее, чем определение стебля, потому что оно требует учета контекста (и, следовательно, значения слова), в то время как определение корня игнорирует контекст.

Что касается того, когда вы будете использовать один или другой, это вопрос того, насколько ваше приложение зависит от правильного понимания значения слова в контексте. Если вы делаете машинный перевод, вы, вероятно, захотите использовать лемматизацию, чтобы избежать неправильного перевода слова. Если вы выполняете поиск информации по более чем миллиарду документов, причем 99% ваших запросов имеют длину от 1 до 3 слов, вы можете согласиться на поиск корней.

Что касается NLTK, WordNetLemmatizer использует часть речи, хотя вы должны предоставить ее (в противном случае по умолчанию используются существительные). Прохождение «голубь» и «v» дает «нырнуть», а «голубь» и «n» - «голубь».


12

Объяснение различий между лемматизацией и основанием на примерах:

Лемматизация обрабатывает сопоставление «car» и «cars», а также сопоставление «car» с «автомобилем».

Stemming обрабатывает сопоставление «car» с «cars» .

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

[...] Взяв в качестве примера FAST, их механизм лемматизации обрабатывает не только основные варианты слов, такие как единственное и множественное число, но и операторы тезауруса, такие как «горячее» соответствие «теплому».

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

http://www.ideaeng.com/stemming-lemmatization-0601


3

ianacl,
но я думаю, что Stemming - это грубый прием, который люди используют, чтобы свести все различные формы одного и того же слова к базовой форме, которая не обязательно должна быть правильным словом сама по себе.
Что-то вроде Porter Stemmer может использовать простые регулярные выражения для устранения общих суффиксов слов

Лемматизация сводит слово к его фактической базовой форме, которая в случае неправильных глаголов может не походить на входное слово.
Что-то вроде Морфа, которое использует FST для приведения существительных и глаголов к их базовой форме.


Я думаю, что Porter Stemmer реализован без использования регулярных выражений, потому что во многих старых языках их нет, но в остальном у вас есть правильная идея.
Кен Блум

3

Стебель просто удаляет или обрезает последние несколько символов слова, что часто приводит к неправильному значению и написанию. Лемматизация учитывает контекст и преобразует слово в его осмысленную базовую форму, которая называется леммой. Иногда одно и то же слово может иметь несколько разных лемм. Мы должны идентифицировать тег части речи (POS) для слова в этом конкретном контексте. Вот примеры, иллюстрирующие все различия и варианты использования:

  1. Если вы лемматизируете слово « Забота », оно вернет « Забота ». Если вы остановитесь, он вернет « Автомобиль », и это ошибочно.
  2. Если вы лемматизируете слово « полосы » в контексте глагола , оно вернет « полосу ». Если вы лемматизируете его в контексте существительного , он вернет « Stripe ». Если вы просто остановите его, он просто вернет « Strip ».
  3. Вы получите одинаковые результаты независимо от того, лемматизируете ли вы слова, такие как ходьба, бег, плавание ... ходить, бегать, плавать и т. Д.
  4. Лемматизация требует больших вычислительных ресурсов, поскольку включает в себя поисковые таблицы и многое другое. Если у вас большой набор данных и производительность является проблемой, используйте Stemming. Помните, что вы также можете добавлять свои собственные правила в Stemming. Если точность имеет первостепенное значение, а набор данных не огромен, используйте лемматизацию.

2

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

Примеры,

"beautiful" -> "beauti"
"corpora" -> "corpora"

Еще примеры стемминга

Стебель можно сделать очень быстро.

С другой стороны, лемматизация - это процесс преобразования данного слова в его базовую форму в соответствии со словарным значением слова.

Примеры,

"beautiful" -> "beauty"
"corpora" -> "corpus"

Еще примеры лемматизации

Лемматизация занимает больше времени, чем выделение стеблей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.