Штеммери проти лемматизаторів


75

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

Знову ж таки, визначення "ідеального" лематизатора є сумнівним, оскільки для різних завдань НЛП потрібен був би різний рівень лематизації. Наприклад, перетворення слів між формами дієслова / іменника / прикметника .

Штамми

[in]: having
[out]: hav

Лематизатори

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

  • Якщо немає, то як ми повинні рухатися далі , щоб побудувати надійні lemmatizers , які можуть взяти на nounify, verbify, adjectifyі adverbify попередню обробку?

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


1
Чи є якесь конкретне завдання, яке ви маєте на увазі? Завжди легше відповісти на запитання НЛП в контексті.
Рено

Створити гнучкий лематизатор для будь-якого завдання НЛП, що вимагає різного рівня абстракції =)
alvas

Відповіді:


84

Q1: "[..] чи є англійські стовбурові слова взагалі корисними сьогодні? Оскільки ми маємо безліч інструментів лематизації для англійської мови"

Так. Штамби набагато простіші, менші та, як правило, швидші за лематизатори, і для багатьох застосувань їх результати є досить хорошими . Використання лематизатора для цього - марне витрачання ресурсів. Розглянемо, наприклад, зменшення розмірності пошуку інформації. Ви замінюєте весь привід / водіння по DRIV в обох обшукали документи і запит. Ви не хвилює , якщо це диск або DRIV або x17a $ до тих пір , як це кластери inflectionally родинні слова разом.

Q2: "[..] як нам рухатись до створення надійних лемматизаторів, які можуть брати на себе попередню обробку для ноніфікації, вербіфікації, ад’єктифікації та адвербіфікації?

Яке ваше визначення леми, воно включає чи висновок ( привід - водій ) або тільки перегин ( привід - диски - поїхало )? Чи враховує вона семантику?

Якщо ви хочете включити деривацію (яку більшість людей сказали б, включає іменники, що дієслівні тощо), тоді майте на увазі, що деривація набагато нерегулярніша, ніж флексія. Є багато ідіосинкратій, прогалин і т. Д. Ви дійсно хочете, щоб змінити ( змінити поїзди ) і змінити (як монети) мати однакову лему? Якщо ні, де ви проводите межу? Як щодо нерва - розбудувати , землю - розкопати - землянин ... Це дійсно залежить від програми.

Якщо взяти до уваги семантику ( банк буде позначений як банк-гроші чи банк-річка залежно від контексту), наскільки глибоко ви заглиблюєтесь (чи відрізняєте банк-установу від банку )? Деякі програми можуть взагалі не піклуватися про це, деякі, можливо, захочуть розрізнити базову семантику, деякі можуть захотіти, щоб вона була тонкою.

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

Що ви маєте на увазі під "подібними морфологічними структурами, як англійська"? Англійська мова має дуже мало флексійної морфології. Є хороші лематизатори для мов інших морфологічних типів (справді флексійних, аглютинативних, шаблонних, ...).

За винятком можливих агглютинативних мов, я б стверджував, що таблиця пошуку (скажімо, стиснута триє) є найкращим рішенням. (Можливо, з деякими правилами резервного копіювання для невідомих слів, таких як власні імена). Пошук виконується якоюсь неоднозначністю (починаючи від тривіальної - візьміть першу або першу, яка відповідає тегу POS-слов, до набагато складнішої). Більш складні неоднозначності, як правило, є контрольованими стохастичними алгоритмами (наприклад, TreeTagger або Faster ), хоча також було зроблено поєднання машинного навчання та створених вручну правил (див., Наприклад, це ).

Очевидно, що для більшості мов ви не хочете створювати таблицю пошуку вручну, а натомість генеруєте її з опису морфології цієї мови. Щодо флективних мов, ви можете пройти інженерний шлях хайіча для чеської або Міхеєва для російської, або, якщо ви сміливий, ви використовуєте дворівневу морфологію. Або ви можете зробити щось середнє, наприклад, Хана (я) (зауважте, що це все повні морфологічні аналізатори, що включають лематизацію). Або ви можете навчитися лематизатору без нагляду а-ля Яровський та Вікентовський , можливо, з ручною подальшою обробкою, виправляючи найпоширеніші слова.

Варіантів занадто багато, і насправді все залежить від того, що ви хочете зробити з результатами.


user2543968 додав наступне до моєї відповіді. Я переношу його сюди, тому що я не впевнений, наскільки вони відповідають, особливо не зважаючи на два підзапитання, на які я відповідав у цьому місці - Є інструменти, які намагаються вирішити проблеми з цими групами, наприклад, відомий TreeTagger, є також кількість шарів, які може покращити його, як [Швидше] [3]. Тут ми використовуємо машинне навчання та системи, засновані на правилах.
Jirka

Інше доповнення користувачем 2543968: - Оцінка та лематизація можуть колись мати однакові цілі: підвищення швидкості пошуку - швидкість індексування, класифікація та зменшення розміру індексу пошуку. Хорошим питанням є також, як покращити ці пункти? Якщо ви додасте більше семантики в процесі лематизації, ви, ймовірно, втратите швидкість. Adn, якщо ви додасте більше деталей, ви, ймовірно, отримаєте більші індекси. Лематизатор - це інструмент балансу.
Jirka

6

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

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

З метою покращення результатів пошуку насправді не важливо, чи є стрижень (або лема) значущим ("мати") чи ні ("hav"). Потрібно лише вміти представляти слово, про яке йдеться, та всі його флективні форми. Насправді, деякі системи використовують цифри або інші типи рядків ідентифікаторів замість того, щоб мати основу чи лему (або базову форму, або як би це ще не було названо).

Отже, це приклад програми, де стеммери (за вашим визначенням) такі ж добрі, як лематизатори.


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

Стеммер: функція, яка зменшує флективні форми до основних чи базових форм, використовуючи правила та списки відомих суфіксів.

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

Виходячи з цих визначень, лемматизатор - це, по суті, більш якісна (і дорожча) версія стеммера.


2

Відповідь сильно залежить від завдання чи конкретної галузі дослідження в рамках обробки природної мови (НЛП), про яку ми говоримо.

Варто зазначити, що було доведено, що в деяких конкретних завданнях, таких як Sentiment Analysis (це улюблене підполе в NLP), використання Stemmer або Lemmatizer як особливості при розробці системи (навчання машинного навчання модель) не робить помітного впливу на точність моделі незалежно від того, наскільки хорошим є інструмент. Незважаючи на те, що це робить продуктивність трохи кращою, але є більш важливі функції, такі як синтаксичний аналіз залежностей, які мають значний потенціал для роботи в таких системах.

Важливо зазначити, що особливості мови, над якою ми працюємо, також повинні враховуватися.


1
@alvas Ця стаття - одне з тих досліджень, яке чітко демонструє те, про що я говорив раніше. З повагою,
Педрам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.