Nestor 0.5.2

dotnet add package Nestor --version 0.5.2
NuGet\Install-Package Nestor -Version 0.5.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Nestor" Version="0.5.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Nestor --version 0.5.2
#r "nuget: Nestor, 0.5.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. 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.5.2

// Install Nestor as a Cake Tool
#tool nuget:?package=Nestor&version=0.5.2

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

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

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

Install-Package Nestor -Version 0.5.2

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 Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Nestor:

Package Downloads
Nestor.Poetry

.NET poetic library for Russian language

Nestor.Thesaurus

Russial NLP Thesaurus library

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.5.2 1,136 4/19/2023
0.5.1 711 4/19/2023
0.5.0 790 4/19/2023
0.4.9 796 7/26/2022
0.4.6 501 7/26/2022
0.4.5 1,343 2/14/2022
0.4.4 1,127 1/20/2022
0.4.3 499 1/20/2022
0.4.2 1,046 1/16/2022
0.4.1 1,118 1/15/2022
0.4.0 1,564 1/15/2022
0.3.1 517 5/23/2021
0.3.0 509 5/23/2021
0.2.7 406 4/27/2021
0.2.6 387 2/21/2021
0.2.5 416 12/17/2020
0.2.4 406 12/1/2020
0.2.3 419 12/1/2020
0.2.2 408 12/1/2020
0.2.1 404 11/30/2020
0.2.0 396 11/30/2020
0.1.3 427 11/9/2020
0.1.2 598 3/15/2020
0.1.1 478 3/15/2020
0.1.0 499 3/15/2020
0.0.9 670 10/22/2019
0.0.8 566 10/22/2019
0.0.7 544 10/22/2019
0.0.6 552 10/22/2019
0.0.5 545 10/22/2019
0.0.4 555 10/22/2019
0.0.3 587 10/22/2019
0.0.2 520 10/21/2019
0.0.1 462 10/21/2019