В ссылки проекта необходимо добавить сборку StemmerFX.dll. Других внешних зависимостей, в том числе файлов данных, стеммер не имеет.
Стемминг слова выполняется вызовом метода Stemmer.stem_str:
string stem_str = Solarix.Stemmer.stem_str("зеленого");
int stem_len = Solarix.Stemmer.stem("зеленого");
При использовании стеммера нужно учесть, что первый вызов алгоритма приведет к инициализации вспомогательных структур и поэтому потребует намного больше процессорного времени, чем последующий стемминг.
Исходный код стеммера на C# генерируется полностью автоматически по данным из лексикона. Это позволяет учитывать разнообразные особенности русского словоизменения на большом фактическом материале. Кроме того, собранный стеммер проверяется по всей словарной базе, давая в результате оценки количества ошибок, без которых обойтись невозможно из-за ограничений алгоритма.
Вышеупомянутые особенности русского склонения/спряжения/словообразования приводят к тому, что для некоторых неизменяемых слов стеммер все-таки отсекает 'окончание', а в других случаях отсекает слишком длинный аффикс, оставляя чрезмерно короткую основу. Эти ошибки проистекают из двух особенностей. Во-первых, стемминг выполняется без учета контекста, поэтому для обрабатываемого слова недоступна информация о части речи. Во-вторых, в русском языке невозможно безошибочно выявить аффиксы, не привлекая информацию из словаря. Наконец, частичная омонимия приводит к тому, что стеммер может применить неправильную эвристику, усекая к примеру, опал до опа, основываясь на парадигме глагола опасть.
В некоторых прикладных задачах более качественное решение задач можно получить, используя другие модули грамматического словаря, например лемматизатор или даже морфологический анализатор.
Особенности словообразования в русском языке
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 25-Aug-11 | ||||||||||||||||||||||||||||||||||||||