opencorpora

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DomainName            = "opencorpora"
	RemoteURL             = "http://opencorpora.org/files/export/dict/dict.opcorpora.xml.bz2"
	LocalSourceFilename   = "dict.xml.bz2"
	LocalUnpackedFilename = "dict.xml"
	LocalCompiledFilename = "opencorpora.dat"
)

Variables

View Source
var ErrControlledStop = fmt.Errorf("%w: controlled stop", Error)

ErrControlledStop raised when limit to parse items set.

View Source
var Error = errors.New("opencorpora")

Functions

This section is empty.

Types

type Attr

type Attr []xml.Attr

func (Attr) GetInt

func (attributesList Attr) GetInt(name string) (val int, err error)

GetInt returns 0 and error if named attribute missed or value conversion to int failed, otherwise int value and nil error returned.

func (Attr) GetString

func (attributesList Attr) GetString(name string) (val string, err error)

type Category

type Category struct {
	VAttr dag.TagName `xml:"v,attr"`
}

Category represents OpenCorpora grammar category as a set of grammar TagName's

func (Category) String

func (x Category) String() string

String returns string representation of category. Implements fmt.Stringer.

type CategoryList

type CategoryList []*Category

CategoryList provides a category list.

func (CategoryList) GrammemeNames

func (c CategoryList) GrammemeNames() []dag.TagName

GrammemeNames возвращает список имён граммем, заданных в списке категорий.

func (CategoryList) String

func (c CategoryList) String() string

type Dictionary

type Dictionary struct {
	// VersionAttr contains dictionary version.
	VersionAttr float64 `xml:"version,attr"`
	// RevisionAttr provides revision number.
	RevisionAttr int `xml:"revision,attr"`
	// Grammemes provides grammar categories definitions.
	Grammemes *Grammemes `xml:"grammemes"`
	// Restrictions provides categories application restrictions.
	Restrictions *Restrictions `xml:"restrictions"`
	// Lemmata provides main dictionary lemma set.
	Lemmata *Lemmata `xml:"lemmata"`
	// Linktypes provides lemma link types.
	Linktypes *LinkTypes `xml:"link_types"`
	// Links provides lemma links.
	Links *Links `xml:"links"`
}

Dictionary represents OpenCorpora dictionary utf-8 XML root. Source file available by link http://opencorpora.org/?page=downloads, file format described by http://opencorpora.org/?page=export. Latest packed dictionary available in BZip2 at http://opencorpora.org/files/export/dict/dict.opcorpora.xml.bz2 or as Zip at http://opencorpora.org/files/export/dict/dict.opcorpora.xml.zip.

type Grammeme

type Grammeme struct {
	// ParentAttr provides parent category TagName.
	ParentAttr dag.TagName `xml:"parent,attr"`
	// Наименование категории. Аббревиатура от латинского или англоязычного наименования. Всегда 4 символа
	Name dag.TagName `xml:"name"`
	// Кириллическая аббревиатура наименования.
	Alias string `xml:"alias"`
	// Полное наименование на русском языке
	Description string `xml:"description"`
}

Grammeme provides grammar category definition structure as provided by OpenCorpora

func (Grammeme) String

func (g Grammeme) String() string

func (Grammeme) Tag

func (g Grammeme) Tag() dag.Tag

Tag provides grammar tag from OpenCorpora grammeme definition.

type Grammemes

type Grammemes struct {
	Grammeme []*Grammeme `xml:"grammeme"`
}

Grammemes provides a list of known grammar categories&

func (Grammemes) String

func (x Grammemes) String() string

type Lemma

type Lemma struct {
	// Уникальный идентификатор слова
	IdAttr int `xml:"id,attr"`
	// Номер ревизии
	RevAttr int `xml:"rev,attr"`
	// Базовая форма
	L WordForm `xml:"l"`
	// Другие формы этой-же части речи
	F WordFormList `xml:"f"`
}

Lemma provides grouping of word base form and its variations tagged by grammar categories.

func (Lemma) String

func (lemma Lemma) String() string

Строковое представление леммы. Реализует интерфейс Stringer()

type LemmaList

type LemmaList []*Lemma

func (LemmaList) Search

func (l LemmaList) Search(word string) (lemmaList []Lemma)

Search returns Lemma list.

type Lemmata

type Lemmata struct {
	Items LemmaList `xml:"lemma"`
}

Lemmata provides OpenCorpora lemma corpus.

func (Lemmata) Search

func (l Lemmata) Search(word string) (lemmaList []Lemma)

Search returns lemma list for specified word or empty list if nothing found.

type Link struct {
	IdAttr   uint32 `xml:"id,attr"`
	FromAttr uint32 `xml:"from,attr"`
	ToAttr   uint32 `xml:"to,attr"`
	TypeAttr uint32 `xml:"type,attr"`
}

Link defined lemma's link data structure. Provides possibilities to switch from one form to another one's.

type LinkList []*Link

type LinkType

type LinkType struct {
	IDAttr int `xml:"id,attr"`
}

LinkType определяет тип связей между частями речи. Задаёт возможный тип преобразования из одной части речи в другую. Используется в определении связи между леммами Link.

type LinkTypes

type LinkTypes struct {
	Type []*LinkType `xml:"type"`
}

LinkTypes provides possible link types list.

type Links struct {
	Items LinkList `xml:"link"`
}

Links provides a list of known links.

type Loader

type Loader struct {
	logging.Logger
	// contains filtered or unexported fields
}

Loader provides OpenCorpora dictionary parsing utilities.

func NewLoader

func NewLoader(dataPath string) *Loader

func (Loader) DataPath

func (loader Loader) DataPath() string

func (Loader) DownloadUpdate

func (loader Loader) DownloadUpdate() (updated bool, err error)

func (Loader) IsDownloadExists

func (loader Loader) IsDownloadExists() bool

IsDownloadExists returns true if downloaded file exists at expected path.

func (Loader) IsUnpackedExists

func (loader Loader) IsUnpackedExists() bool

IsUnpackedExists returns true if downloaded and unpacked file exists at expected path.

func (Loader) IsUpdateRequired

func (loader Loader) IsUpdateRequired() (bool, error)

func (*Loader) LoadIndex

func (loader *Loader) LoadIndex() (mainIndex *index.Index, err error)

func (*Loader) ParseUpdate

func (loader *Loader) ParseUpdate(fromFile string, toFile string) (err error)

func (*Loader) SaveIndex

func (loader *Loader) SaveIndex(mainIndex *index.Index, toFile string) (err error)

func (*Loader) SetDataPath

func (loader *Loader) SetDataPath(dataPath string)

func (Loader) UnpackUpdate

func (loader Loader) UnpackUpdate() (err error)

func (Loader) Update

func (loader Loader) Update(forceRecompile bool) (err error)

type Parser

type Parser struct {
	logging.Logger
	// contains filtered or unexported fields
}

func (*Parser) ProcessCharData

func (parser *Parser) ProcessCharData(data xml.CharData) error

func (*Parser) ProcessComment

func (parser *Parser) ProcessComment(_ xml.Comment) error

func (*Parser) ProcessDirective

func (parser *Parser) ProcessDirective(_ xml.Directive) error

func (*Parser) ProcessEndElement

func (parser *Parser) ProcessEndElement(element xml.EndElement) error

func (*Parser) ProcessProcInst

func (parser *Parser) ProcessProcInst(_ xml.ProcInst) error

func (*Parser) ProcessStartElement

func (parser *Parser) ProcessStartElement(element xml.StartElement) error

func (*Parser) SetMaxLemmas

func (parser *Parser) SetMaxLemmas(maxLemmas int)

type Restriction

type Restriction struct {
	// Тип аттрибута задаёт тип ограничения совместного использования категорий
	//  - obligatory: обязательная категория left для категории right
	//  - maybe: возможная категория left для категории right
	//  - forbidden: запретная категория left для категории right
	TypeAttr string `xml:"type,attr"`
	// Тип настройки ограничения:
	// - 0: ручная настройка
	// - 1: автоматическая настройка
	AutoAttr int `xml:"auto,attr"`
	// Категория, с которой должна, может или не может использоваться категория Right
	Left *RestrictionItem `xml:"left"`
	// Категория, которая должна, может или не может использоваться с категорией Left
	Right *RestrictionItem `xml:"right"`
}

Требование использования граммем описывают соотношения между грамматическими категориями, например, необходимость указания категории падежа для существительных или возможность использования общего рода для существительных же.

type RestrictionItem

type RestrictionItem struct {
	TypeAttr string `xml:"type,attr"`
}

Грамматическая категория как составная часть ограничения. Может принимать значения: - lemma: слово не может принимать данную категорию при выполнении каких-либо условий (см. Требование использования) - form: слово не может принимать данную форму категории при выполнении каких-либо условий (см. Требование использования)

type Restrictions

type Restrictions struct {
	// Список ограничений
	Restr []*Restriction `xml:"restr"`
}

Restrictions Список ограничений задаёт все известные ограничения и требования совместного использования категорий.

type WordForm

type WordForm struct {
	Form string       `xml:"t,attr"`
	G    CategoryList `xml:"grammemes"`
}

WordForm provides word form and categories list.

func (WordForm) GetTagsFromSet

func (x WordForm) GetTagsFromSet() []dag.TagName

GetTagsFromSet takes TagName's list from word form.

func (WordForm) String

func (x WordForm) String() string

String returns string representation of WordForm. Implements fmt.Stringer.

type WordFormList

type WordFormList []*WordForm

WordFormList provides a list of word forms.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL