You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
Реализация основы для семантической работы с текстом.
|
|
|
|
|
|
|
|
|
|
LexProvider - реализует выделение токенов из текста, где под токеном понимается какое-либо приведение слова.
|
|
|
|
|
Например, токеном может являться непосредственно само слово, стем, лемма.
|
|
|
|
|
|
|
|
|
|
В качестве реализации созданы две фабрики:
|
|
|
|
|
|
|
|
|
|
SnowbolLexProviderFactory - возвращает провайдеры на основе стемминга 'Snowball'
|
|
|
|
|
JustWordLexProviderFactory - возвращает провайдер который принимает за токен непосредственно слово, без изменений (lower case)
|
|
|
|
|
|
|
|
|
|
Для реализации собственного провайдера потребуется создать класс на основе интерфейса ILexer и реализовать метод Lex,
|
|
|
|
|
в котором будет проведена необходимая нормализация слова в нужном семантическом контексте.
|
|
|
|
|
|
|
|
|
|
Например:
|
|
|
|
|
public class LemmaLexer: ILexer
|
|
|
|
|
{
|
|
|
|
|
public string Lex(string word) { return Lemmatizer.Lemma(word); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
После чего можно создать на его основе провайдер:
|
|
|
|
|
|
|
|
|
|
var provider = new LexProvider(new LemmaLexer());
|