opencorpora

package module
v0.0.0-...-bc94920 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2021 License: MIT Imports: 9 Imported by: 0

README

Библиотека работы с данными opencorpora.org

Morph

Morph производит морфологический разбор слова на русском языке используя словарь opencorpora.org. Перед использованием исходный словарь в формате XML должен быть конвертирован во внутренний формат библиотеки, который позволяет уменьшить объем загружаемых в память данных приблезительно в 15 раз и одновременно увеличить скорость работы.

Прежде чем начать работу ознакомтесь с глоссарием, который большей частью взаимствован у проекта pymorphy2

Пример получения тэгов слова:

package main

import (
  "fmt"
  "github.com/pahanini/go-opencorpora-tools"
)

func main() {
  m, _ := opencorpora.LoadMorph("morph.dict")
  tag, _ := m.Tag("морфология")
  fmt.Println(tag)
  /*
  => [[
       {NOUN имя существительное} 
       {inan неодушевлённое} 
       {femn женский род}
       {sing единственное число} 
       {nomn именительный падеж} 
     ]]
  */
}

Создание файла словаря по данным opencorpora.org. Данная операция на MacBook Pro занимает примерно 1 минуту.

  d := opencorpora.MorphData{}
  d.ImportFromXMLFile("dict.opcorpora.xml")
  d.Save("morph.dict")  

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrWordNotFound = errors.New("word not found")

ErrWordNotFound returned if word not found in dict

Functions

This section is empty.

Types

type Form

type Form struct {
	Value         string         `xml:"t,attr"`
	GrammemeNames []GrammemeName `xml:"g"`
}

Form represents lemma form

type Grammeme

type Grammeme struct {
	Name        string `xml:"name"`
	Description string `xml:"description"`
}

Grammeme represents opencorpora grammeme

type GrammemeName

type GrammemeName struct {
	Value string `xml:"v,attr"`
}

GrammemeName represents name of grammeme in lemmas

type Lemma

type Lemma struct {
	ID    int    `xml:"id,attr"`
	Rev   int    `xml:"rev,attr"`
	Main  Form   `xml:"l"`
	Forms []Form `xml:"f"`
}

Lemma represents lemma

type Meta

type Meta struct {
	GrammemeIndexes []int8
}

Meta keeps WF metadata

type Morph

type Morph struct {
	// contains filtered or unexported fields
}

Morph is a morphological dict based at opencorpora data

func LoadMorph

func LoadMorph(fp string) (*Morph, error)

LoadMorph loads morph from file

func NewMorph

func NewMorph() *Morph

NewMorph creates new Morph instance

func (*Morph) Tag

func (m *Morph) Tag(word string) ([]Tag, error)

Tag returns word's tags or nil if word not found

type MorphData

type MorphData struct {
	Tree  []byte
	Tag   Tag
	Metas [][]Meta
}

MorphData is a struct to encode and save

func (*MorphData) ImportFromReader

func (d *MorphData) ImportFromReader(r io.Reader) (err error)

ImportFromReader reads XML data from reader and saves in MorphData

func (*MorphData) ImportFromWeb

func (d *MorphData) ImportFromWeb() (err error)

ImportFromWeb imports data from opencorpora site

func (*MorphData) ImportFromXMLFile

func (d *MorphData) ImportFromXMLFile(fp string) (err error)

ImportFromXMLFile reads XML file and saves in MorphData

func (*MorphData) Load

func (d *MorphData) Load(fp string) error

Load loads MorphData from file

func (*MorphData) Save

func (d *MorphData) Save(fp string) error

Save saves MorphData to file

type Tag

type Tag []Grammeme

Tag is a slice of grammeme

Jump to

Keyboard shortcuts

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