Лематизация в API на граматичния речник

Онлайн версия на лематизатора

Тази версия на лематизатора е написана на php, така че можете да оцените работата му тук. Внедреният алгоритъм съчетава лематизация на речника и набор от евристики по такъв начин, че да осигури най-точната лематизация на всички думи, въведени в речника. Кодът на лематизатора и помощните файлове с речника се генерират автоматично от помощната програма C #, която получава списък с двойки (дума, лема), разтоварени от речника на SQL като изходен материал. Изходният код за този лематизатор и файловете на базата данни за него са включени в SDK на Grammar Dictionary.

Въведете няколко руски думи в текстовото поле, след което щракнете.

. резултатът от лематизацията ще се появи тук.

.NET версия на лематизатора

Лематизационни маси

Като част от схемата на речника на SQL има отделни таблици, предназначени изключително за извършване на лематизация:

LEXEMES_1 сдвоява дума-лема, както и допълнително поле - броят на алтернативните нормални форми.

LEXEMES_N двойки дума-лема, за разлика от предишната таблица, за всяка дума може да има няколко записа.

LEMMAS - помощна таблица, списък с нормални формуляри, посочени от LEXEMES_1 и LEXEMES_N.

граматична форма

С такава заявка към базата данни

възможно е да се определи колко голям е процентът на думите в естествен език, които дават двусмислена лематизация, например за руския език:

По този начин около 1% от думите на руския език могат да причинят известна трудност при привеждането им в нормална граматична форма. Трябва да се отбележи, че това разпределение не отчита честотата на използване на съответните думи.

Например такава заявка към речниковата база данни

ще даде следните опции за лематизация:

Съвсем очакван резултат - императивната форма на глагола dig и двете падежи на съществителното рой са текстово идентични.

Изборът между бърза, но понякога непълна лематизация и бавна и изчерпателна зависи от проблема, който се решава.

Например в търсачката скоростта на индексиране играе решаваща роля, тъй като лематизирането на милиони токени се превръща в основното занимание на процесора. Следователно индексаторът с командата -index wordforms използва опростена лематизация - приема първата нормална форма, игнорирайки останалите опции.

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

Граматични API рутинни процедури за лематизация

API има няколко повиквания, които ви позволяват директно или с допълнителни стъпки да извършите преобразуването на дума в основната й форма - лематизация. Повечето от тях работят еднакво добре с който и да е от езиците, поддържани в проекта, разбира се, при условие че има подходящ речник.

Основни процедури за получаване на основна граматична форма

Има две основни повиквания, създадени специално като лематизатори:

Опростен, но най-бърз вариант. Търси единствената нормална форма на дума. Ако дадена дума може да бъде сведена до няколко основни форми, например за моя може да има опции за измиване и измиване, тогава една от някоя от алтернативите се използва по преценка на лематизатора.

По-сложна и по-бавна версия на предишната процедура. Ако въведената дума може да бъде лематизирана по повече от един начин, тя връща всички варианти.

Пример за използване на двете процедури може да се намери в изходния код на демонстрационната програма. \ demo \ ai \ solarix \ Grammar_Engine \ Lemmatizer_Russian .

Други процедури за получаване на лема

По-долу са описани други API процедури, които решават същия или подобен проблем.

Това е бързо търсене на идентификатора на речник в произволна граматична форма. Подобно на sol_TranslateToBase, първата версия на основния формуляр се взема, ако има алтернативи. Връща се цяло число - ключът на речниковия запис, който може да се използва за операции като получаване на заглавието на записа, склонение и спрежение, определяне на граматичните свойства на думата.