Nestor 0.5.2

.NET Core 3.1
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. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Additional computed target framework(s)
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 455 4/19/2023
0.5.1 315 4/19/2023
0.5.0 356 4/19/2023
0.4.9 741 7/26/2022
0.4.6 450 7/26/2022
0.4.5 933 2/14/2022
0.4.4 724 1/20/2022
0.4.3 456 1/20/2022
0.4.2 669 1/16/2022
0.4.1 737 1/15/2022
0.4.0 951 1/15/2022
0.3.1 496 5/23/2021
0.3.0 467 5/23/2021
0.2.7 367 4/27/2021
0.2.6 373 2/21/2021
0.2.5 402 12/17/2020
0.2.4 392 12/1/2020
0.2.3 385 12/1/2020
0.2.2 394 12/1/2020
0.2.1 367 11/30/2020
0.2.0 361 11/30/2020
0.1.3 411 11/9/2020
0.1.2 557 3/15/2020
0.1.1 434 3/15/2020
0.1.0 480 3/15/2020
0.0.9 619 10/22/2019
0.0.8 522 10/22/2019
0.0.7 499 10/22/2019
0.0.6 504 10/22/2019
0.0.5 523 10/22/2019
0.0.4 507 10/22/2019
0.0.3 536 10/22/2019
0.0.2 497 10/21/2019
0.0.1 432 10/21/2019