призначення Стеммер
Стемінг - відсікання від слова закінчень і суфіксів, щоб решта, звана stem. була однаковою для всіх граматичних форм слова. Зрозуміло в такому вигляді Стеммер може працювати тільки з мовами. які реалізують словозміна через афікси. Прикладами таких мов є російська та англійська.
Зазвичай Стеммер користуються для пошуку тексту з імітацією обліку морфології. Під імітацією розуміють непереборно велику кількість помилок і нерелевантних результатів, які виникають, якщо застосовувати тільки Стеммер. У російській мові джерелом помилок при стемінг є всілякі зміни кореня слова - швидкі голосні, наприклад. Наочно проблеми, пов'язані з використанням Стеммер, можна продемонструвати для російського іменника кішка. Родовий відмінок множини має форму кішок. Таким чином, найдовший спільний префікс всіх форм іменника кішка - це кош. Якщо виконати пошук тексту з цього префіксу, то в результатах з великою ймовірністю будуть такі слова, як кошмар. Зауважу, що зазвичай реалізації Стеммер йдуть трохи іншим шляхом і припускаються помилки іншого роду - вони повертають при стемінг префікс кошк і таким чином з результатів пошуку зникають фрагменти тексту з формою кішок.
В якості вирішення проблеми поганих результатів пошуку зі Стеммер для російської мови можна використовувати два додаткових модуля граматичного словника - лемматізатор і Флексер (схиляння і відмінювання). За допомогою лемматізатора можна приводити слова до базової формі, тому після зіставлення слова з СТЕМ можна уточнити результат за допомогою лематизації. Другий модуль - Флексер, який вміє видавати все граматичні форми слова на основі базової. Це дозволяє уточнювати результати пошуку, перевіряючи знайдені фрагменти по набору форм ключового слова.
Використання зв'язки з Стеммер і лемматізатора для пошуку тексту з урахуванням морфології реалізовано в бібліотеці StringLib.NET.
Генерація коду Стеммер
Стеммер доступний у вигляді вихідного коду на декількох мовах програмування, включаючи C, C # і PHP. Код Стеммер створюється автоматично за інформацією зі словника, завантаженого в SQL базу даних. Таким чином, не потрібно окремо вручну задавати правила стемінг, як це робиться, наприклад, в Стеммер Портера.
Генератор написаний на мові C # і знаходиться в папці. \ Demo \ ai \ solarix \ ygres \ StemmerBuilder \ StemmerBuilder. Він доступний в початковому тексті, разом з утилітами для автоматичного тестування, в дистрибутиві SDK Pro.
.NET версія Стеммер
Online-версія Стеммер на PHP
Введіть в текстове поле одне російське слово, потім натисніть кнопку.
тут з'явиться результат стемінг.
Помилки, яких припускаються Стеммер
Допустимі при стемінг помилки можна класифікувати в такий спосіб.
Помилки стемінг 1 го роду - стем дає занадто велике узагальнення і тому зіставляється з граматичними формами більш ніж однієї словникової статті. Це найчисленніша група помилок стемінг. Наприклад, якщо при стемінг вами дасть вам. то в подальшому знайти певний текст дасть збіг з вам бенкет. У російській мові мжет бути вельми важко повністю усунути дані помилки, наприклад дієслово пащу при відмінюванні дає форми паді і впав. в результаті стемінг дає па. і це дуже велике розширення при пошуку. Втім, помилки такого типу можуть розглядатися і як спосіб включити в пошук однокрненние слова - в прикладі з кішкою це можуть бути форми прикметника котячий. Компенсація помилок першого роду успішно виконується або введенням списку стоп-слів, або більш якісно - лемматізатором або Флексер.
Помилки стемінг 2 го роду - усічення форми дає занадто довгий стем, що не зіставляється з деякими граматичними формами цього ж слова. До таких помилок призводить прагнення розробника Стеммер знайти компроміс з помилками 1 го роду в разі, коли при словоизменении змінюється основа слова. Такі слова є навіть у вкрай регулярному в плані словозміни англійською мовою, наприклад - група неправильних дієслів. У російській випадки зміни основи навіть не є підставою для віднесення слова до групи неправильних, настільки часто це явище. Як приклад, на якому зазвичай спотикаються багато реалізації Стеммер, можна взяти слова кішка і пачка. які мають форми кішок і пачок. Зазвичай Стеммер виконують в цих випадках усічення до кошк і пташки. які непорівнянні з формами родового і знахідного відмінка множини.
Помилки стемінг 3 го роду - стем побудувати неможливо через зміни в корені слова, яке залишає єдину букву в Стем. Або модель словозміни має на увазі використання приставок. Приклад для першого випадку - дієслово впитися. має форму вопьемся. Другий випадок виникає в рамках граматичного словника для вищого ступеня прикметників і прислівників в російській мові - наприклад красивіше як форма прикметника гарний. або повільніше як форма прислівники повільно.