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

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

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


person TIMEX    schedule 24.11.2009    source источник
comment
Это нереально, но почему там тег Python?   -  person Jimmy    schedule 24.11.2009
comment
@jimmy: помеченный python b / c, он говорит о библиотеке python nltk   -  person ealdent    schedule 24.11.2009
comment
Вот отличная статья, которая точно отвечает на этот вопрос   -  person Jacob    schedule 05.05.2010
comment
См. Также: Стеммеры против лемматизаторов   -  person hippietrail    schedule 31.12.2013


Ответы (11)


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

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

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

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

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

person miku    schedule 24.11.2009
comment
интересно узнать, что средняя длина лемматизации говорит нам о документе? - person sAguinaga; 31.05.2018
comment
Это не полностью отвечает на вопрос. Вы не объясняете, когда какой именно использовать. Оба могут служить для нормализации, но часто выбираемый вами вариант - это компромисс между точностью и скоростью. - person dzieciou; 04.10.2019
comment
@dzieciou, спасибо за ввод - возможно, вы сможете отредактировать ответ; и я также постараюсь добавить еще немного контекста. - person miku; 04.10.2019

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

Например:

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

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

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

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

person Mukesh Chapagain    schedule 06.07.2015
comment
Что ж, есть стеммеры на основе словарей, которые можно было бы лучше нормализовать, например, cs.put.poznan.pl/dweiss/xml/projects/lametyzator/ - person dzieciou; 11.03.2021

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

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

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

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

person Liang Zhang    schedule 14.11.2015

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

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

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

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

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

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

person Jan Snajder    schedule 09.04.2011

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

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

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

person ealdent    schedule 24.11.2009

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

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

Stemming обрабатывает соответствие слова car "cars".

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

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

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

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

person majom    schedule 23.10.2015

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

  1. Если вы лемматизируете слово «Забота», оно вернет «Забота». Если вы остановитесь, он вернет "Автомобиль", и это ошибочно.
  2. Если вы лемматизируете слово «Stripes» в контексте глагола, оно вернет «Strip». Если вы лемматизируете его в контексте существительного, он вернет "Stripe". Если вы просто остановите его, он просто вернет Strip.
  3. Вы получите те же результаты, если вы лемматизируете или сокращаете слова, такие как ходьба, бег, плавание ... на ходить, бегать, плавать и т. Д.
  4. Лемматизация требует больших вычислительных ресурсов, поскольку включает в себя поисковые таблицы и многое другое. Если у вас большой набор данных и производительность является проблемой, используйте Stemming. Помните, что вы также можете добавлять свои собственные правила в Stemming. Если точность имеет первостепенное значение, а набор данных не огромен, используйте лемматизацию.
person Sumit Pokhrel    schedule 15.01.2020
comment
Если вы поставите слово Stemming и Swim в начале, они получат «stemm & swimm» или «stem & swim». - person Tauseef; 30.03.2021

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

Примеры,

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

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

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

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

Примеры,

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

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

На лемматизацию уходит больше времени, чем на стемпинг.

person siva pokala    schedule 18.05.2020

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

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

person Aditya Mukherji    schedule 24.11.2009
comment
Я думаю, что Porter Stemmer реализован без использования регулярных выражений, потому что во многих старых языках их нет, но в остальном у вас есть правильная идея. - person Ken Bloom; 29.11.2009

Хуанг и др. описывает стемминг и лемматизацию следующим образом. Выбор зависит от проблемы и доступности вычислительных ресурсов.

Stemming идентифицирует общую корневую форму слова, удаляя или заменяя суффиксы слова (например, «flooding» сокращается как «flood»), в то время как лемматизация идентифицирует изменяемые формы слова и возвращает его базовую форму (например, «лучше» лемматизируется как "хороший").

Хуанг, X., Ли, Z., Wang, C., & Ning, H. (2020). Определение связанных со стихийными бедствиями социальных сетей для быстрого реагирования: визуально-текстовая объединенная архитектура CNN. Международный журнал цифровой Земли, 13 (9), 1017–1039. https://doi.org/10.1080/17538947.2019.1633425

person Nilani Algiriyage    schedule 02.05.2021

Основание - это процесс создания морфологических вариантов корневого / основного слова. Программы стемминга обычно называют алгоритмами стемминга или стеммерами. Часто при поиске текста по определенному ключевому слову помогает, если поиск возвращает варианты слова. Например, поиск по запросу «лодка» может также вернуть «лодки» и «катание на лодках». Здесь «лодка» будет стержнем для [лодка, канотье, катание на лодке, лодки].

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

Я сослался на эту ссылку: https://towardsdatascience.com/stemming-vs-lemmatization-2daddabcb221 < / а>

person sanjay lalwani    schedule 24.06.2021