Nestor 0.4.5

.NET Core 3.1
Install-Package Nestor -Version 0.4.5
dotnet add package Nestor --version 0.4.5
<PackageReference Include="Nestor" Version="0.4.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Nestor --version 0.4.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Nestor, 0.4.5"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Nestor as a Cake Addin
#addin nuget:?package=Nestor&version=0.4.5

// Install Nestor as a Cake Tool
#tool nuget:?package=Nestor&version=0.4.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Нестор — библиотека для работы со словоформами на русском языке. Аналог pymorphy2, но для C#. Основана на словаре словоформ М.Хагена.

  • Поиск леммы и грамматического описания слова по словоформе
  • Постановка слова в заданную форму
  • Токенизация и лемматизация строк
  • Информация об ударениях

Инициализация библиотеки

Install-Package Nestor -Version 0.4.4

using Nestor;

var nMorph = new NestorMorph(); // загрузка библиотеки занимает некоторое время

Информация о словоформе

Word[] words = nMorph.WordInfo("стали");

В words будет массив объектов Word со всеми вариантами слова (слова считаются разными, если у них разные леммы — то есть нормальные формы). Например, для слова стали это два варианта: существительное сталь и глагол стать.

Структура объекта Word

string Stem; // неизменяемая часть слова
WordForm[] Forms; // список всех форм слова
WordForm Lemma; // нормальная форма слова
Tag Tag; // тег — грамматическое описание нормальной формы слова (см. ниже)

Структура объекта WordForm

string Word; // строковое представление текущей формы слова
int Stress; // номер слога, на который приходится ударение, начиная с 1
Tag Tag; // тег — грамматическое описание формы (см. ниже)
string[] Grammemes; // граммемы словоформы в сыром виде из словаря

Структура объекта Tag

Описание значений перечислений приведены ниже

Pos Pos; // часть речи
Gender Gender; // род
Number Number; // число
Case Case; // падеж
Tense Tense; // время
Person Person; // лицо

Значения перечислений

Pos — часть речи

Часть речи Значение
Отсутствует* Pos.None
Имя существительное Pos.Noun
Имя прилагательное Pos.Adjective
Глагол Pos.Verb
Наречие Pos.Adverb
Имя числительное Pos.Numeral
Причастие Pos.Participle
Деепричастие Pos.Transgressive
Местоимение Pos.Pronoun
Предлог Pos.Preposition
Союз Pos.Conjunction
Частица Pos.Particle
Междометие Pos.Interjection
Предикатив Pos.Predicative
Вводное слово Pos.Parenthesis

* при нормальной работе слов без части речи не должно быть

Case — падеж

Падеж Значение
Отсутствует Case.None
Именительный Case.Nominative
Родительный Case.Genitive
Дательный Case.Dative
Винительный Case.Accusative
Творительный Case.Instrumental
Предложный Case.Prepositional
Местный (на мосту) Case.Locative
Частичный/партитив (чаю) Case.Partitive
Звательный (старче) Case.Vocative

Gender — род

Род Значение
Отсутствует Gender.None
Мужской Gender.Masculine
Женский Gender.Feminine
Средний Gender.Neuter
Общий (коллега) Gender.Common

Number — число

Число Значение
Отсутствует Number.None
Единственное Number.Singular
Множественное Number.Plural

Tense — время

Время Значение
Отсутствует Tense.None
Прошедшее Tense.Past
Настоящее Tense.Present
Будущее Tense.Future
Инфинитив Tense.Infinitive

Person — лицо

Лицо Значение
Отсутствует Person.None
Первое Person.First
Второе Person.Second
Третье Person.Third

Постановка слова в нужную форму

const string w = "красивый";
var info = _nMorph.WordInfo(w)[0];
var f = info.ClosestForm(gender: Gender.Feminine, @case: Case.Accusative, number: Number.Singular);
Console.WriteLine(f.Word); // красивую
const string w = "красить";
var info = _nMorph.WordInfo(w)[0];
var f = info.ClosestForm(gender: Gender.Feminine, number: Number.Singular, tense: Tense.Past);
Console.WriteLine(f.Word); // красила

Документация дополняется

Лицензия

Данный проект использует для хранения словоформ ациклический граф с помощью библиотеки DawgSharp. По условиям лицензии данной библиотеки Нестор тоже попадает под GPL. Но если вы напишете свою релизацию Dawg, мою часть кода можете брать по MIT.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp3.1
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Nestor:

Package Downloads
Nestor.Poetry

.NET poetic library for Russian language

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.4.5 117 2/14/2022
0.4.4 99 1/20/2022
0.4.3 85 1/20/2022
0.4.2 102 1/16/2022
0.4.1 92 1/15/2022
0.4.0 96 1/15/2022
0.3.1 322 5/23/2021
0.3.0 293 5/23/2021
0.2.7 191 4/27/2021
0.2.6 197 2/21/2021
0.2.5 220 12/17/2020
0.2.4 229 12/1/2020
0.2.3 230 12/1/2020
0.2.2 231 12/1/2020
0.2.1 205 11/30/2020
0.2.0 189 11/30/2020
0.1.3 239 11/9/2020
0.1.2 380 3/15/2020
0.1.1 264 3/15/2020
0.1.0 303 3/15/2020
0.0.9 439 10/22/2019
0.0.8 345 10/22/2019
0.0.7 335 10/22/2019
0.0.6 331 10/22/2019
0.0.5 352 10/22/2019
0.0.4 330 10/22/2019
0.0.3 354 10/22/2019
0.0.2 329 10/21/2019
0.0.1 288 10/21/2019