Go: lstemmer

Библиотека для выполнения стеммнига слов на русском и английском языках.

Характерные особенности

  • Написана на чистом Go
  • Нет внешних зависимостей
  • Высокая производительность
  • Распространяется под лицензией MIT
  • Базируется на реализации алгоритма Портера на Go
  • Имеется возможность подключить словарь преобразований для избежания ошибок преобразования
  • Учет популярных префиксов для слов из словаря и трансформация по тем же правилам

Установка

go get github.com/belfinor/lstemmer

Работа с библиотекой

Подключение

import "github.com/belfinor/lstemmer"

Стемминг слова

fmt.Println( lstemmer.Proc("игры") ) // игр

Стемминг данных из канала слов

out := lstemmer.Stream(in)

Здесь in - канал входных слов (chan string), а out - канал результатов обработки.

Загрузка словаря форм

Словарь служит для того, чтобы явным образом указать, что во что преобразуется. Это нужно, когда алгоритм Портера дает плохие результаты. Например, слова заводить и завод будут преобразованы в завод, что не во всех случаях допустимо.

err := lstemmer.LoadForms(filename)

Файл имеет следующую структуры

лев
льва лев
льву лев

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

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

 

01.04.2019









 
архив

подписка