Описание интерфейса для таблицы грамматических кодов


Описание интерфейса для таблицы грамматических кодов        1

Части речи и грамматические категории (русский язык)        1

Части речи и грамматические категории (английский язык)        3

Программный интерфейс        5

Пример использования        6

Ссылки        7

Части речи и грамматические категории (русский язык)


Интерфейс предназначен для конвертации кодов, которые приписаны в морфологическом словаре словоформам, в наборы  грамматических категорий.

В интерфейсе явно выписаны все константы(UINT) частей речи  русского языка. Выделяются следующие части речи:

Русские части речи


Строковое предст.

Расшифровка

Числовая константа

С

нарицательное cуществит.

NOUN

С

гео-существительное

NOUN_g

С

организация

NOUN_o

С

имя собственное (не гео!)

NOUN_n

П

полное прилагательное

ADJ_FULL

П

краткое прилагательное

ADJ_SHORT

П

орг. прилагательное (всегда полное)

ADJ_o

П

географ. прилагательное (всегда полное)

ADJ_g

МС

местоимение-существительное

PRONOUN

Г

глагол в личной форме

VERB

Г

причастие

PARTICIPLE

Г

деепричастие

ADVERB_PARTICIPLE

Г

краткое причастие

PARTICIPLE_SHORT

Г

инфинитив

INFINITIVE

МС-ПРЕДК

местоимение-предикатив

PRONOUN_PREDK

МС-П

местоименное прилагательное

PRONOUN_P

ЧИСЛ

числительное (количественное)

NUMERAL

ЧИСЛ-П

порядковое числительное,

NUMERAL_P

Н

наречие

ADV

ПРЕДК

предикатив

PREDK

ПРЕДЛ

предлог

PREP

ПОСЛ

послелог

POSL

СОЮЗ

союз

CONJ

МЕЖД

междометие

INTERJ

ЧАСТ

частица

PARTICLE

ВВОДН

вводное

INP

СРАВН

сравнительная степень

COMP

ФРАЗ

элемент фразеологического сочетания

PHRASE


Русские  граммемы:

НЕ нашли? Не то? Что вы ищете?

                       

Строковое предст.

Русск. расшифровка

Анг. Сокращение

мр

мужской род

Musculinum

жр

женский род

Feminum

ср

средний род

Neutrum

мр/жр

неопределенный род

MuscFem

имя

имя человека

Name

фам

фамилия

SurName

од

одушевленность

Animative

но

неодушевленность

NonAnimative

ед

единственное число

Singular

мн

множественное число

Plural

им

именительный падеж

Nominativ

рд

родительный падеж

Genitiv

дт

дательный падеж

Dativ

вн

винительный падеж

Accusativ

тв

творительный падеж

Instrumentalis

пр

предложный падеж

Vocativ

кр

краткая форма прилагательных или причастий

ShortForm

ср

сравнительная степень

Comparative

св

совершенный вид

Perfective

нс

несовершенный вид

NonPerfective

пе

переходный глагол

Transitive

нп

непереходный глагол

NonTransitive

дст

действительный залог

ActiveVoice

стр

страдательный залог

PassiveVoice

нст

настоящее время

PresenceTime

прш

прошедшее время

PastTime

буд

будущее время

FutureTime

первое лицо

FirstPerson

второе лицо

SecondPerson

третье лицо

ThirdPerson

пвл

повелительная форма глагола

Imperative

прч

причастие

см. PARTICIPLE_SHORT и PARTICIPLE

дпр

деепричастие

см. ADVERB_PARTICIPLE

инф

инфинитив

см. INFINITIVE



Части речи английского языка:

Строковое предст.

Расшифровка

Числовая константа

NOUN

существительное

eNOUN

ADJ

прилагательное

eADJ

PN

местоимение

ePRONOUN

VERB

глагол

eVERB

NUMERAL

числительное (количественное)

eNUMERAL

ORDNUM

порядковое числительное

eORDNUM

ADV

наречие

eADV

PREP

предлог

ePREP

CONJ

Союз

eCONJ

INT

Междометие

eINT

VBE

глагол to be

eVBE

MOD

модальные глаголы

eMOD

ART

артикль

eART

PRON

многие неизменяемые местоимения

ePRON

PART

Частица

ePART

POSS

‘s

ePOSS

PN_ADJ

прилагательное-местоимение

ePN_ADJ



Граммемы английского языка:


Строковое предст.

расшифровка

Числовая константа

sg

единственное число

eSingular

pl

множественное число

ePlural

m

мужской род

eMusculinum

f

женский род

eFeminum

anim

одушевленность (динамическая граммема)

eAnimative

perf

перфективность (динамическая граммема)

ePerfective

nom

номинатив

eNominative

obj

объектный  падеж

eObjectCase

narr

нарицательное существительное

eNarrative

geo

географическое существительное

eGeographics

prop

имя собственное

eProper

pers

личное местоимение

ePersonalPronoun

poss

притяжательное местоимение

ePossesivePronoun

pred

предикативность (mine)

ePredicative

uncount

неисчисляемость

eUncountable

ref

возвратные местоимения

eReflexivePronoun

dem

указательные местоимения

eDemonstrativePronoun

mass

mass-nouns

eMass

comp

сравнительная степень(прилагательных и наречий)

eComparativ

sup

превосходная степень (прилагательных и наречий)

eSupremum

1

первое лицо

eFirstPerson

2

второе лицо

eSecondPerson

3

третье лицо

eThirdPerson

prsa

форма настоящего времени

ePresentIndef

inf

инфинитив

eInfinitive

pasa

простое прошедшее время

ePastIndef

pp

причастие прошедшего времени

ePastParticiple

ing

герундий

eGerund

fut

будущее время

eFuturum

if

условное наклонение

eConditional



Программный интерфейс


Объект экспортирует только один интерфейс IGramTab  и два кокласса RusGramTab и EngGramTab. У IGramTab следующие методы:

Load() – загружает
i) для RusGramTab
  а) основной  файл (грамматическую таблицу), полный путь к которому. лежит  в HKEY_LOCAL_MACHINE\Software\Lemmatizer\Russian\Agramtab.
  б) файл предлогов, полный путь к которому. лежит в  HKEY_LOCAL_MACHINE\Software\Lemmatizer\Russian\SyntPrep.
ii) для EngGramTab
  а) основной  файл (грамматическую таблицу), полный путь к которому. лежит  в HKEY_LOCAL_MACHINE\Software\Lemmatizer\English\Egramtab.
Без запуска этой функции все остальные функции работать не будут. GetPartOfSpeech([in] BSTR gram_code, [retval, out] UINT* result) – выдает по коду номер части речи; GetPartOfSpeechStr([in] UINT PartOfSpeech, [retval, out] BSTR* result) – выдает по номеру части речи текстовое представление части речи; GetGrammems([in] BSTR gram_code, [retval, out] UINT* result) – выдает по одному коду(первые два символа в gram_code) набор граммем (один бит а result – одна граммема); GetAllGrammems([in] BSTR gram_code, [retval, out] UINT* result) – выдает по кодам набор граммем. Gram_code  может содержать много кодов, записанных непосредственно друг за другом. Gram_code должен иметь четную длину, поскольку длина одного кода - два символа; GrammemsToStr([in] UINT grammems, [retval, out] BSTR* result) – переводит набор граммем в текстовое представление; HaveEqualPartOfSpeech([in]BSTR gram_code1, [in]BSTR gram_code2, [retval, out] BOOL* result) – проверяет, что коды  относятся к одной части речи. Кроме этого, если gram_code1 == “??” и gram_code2 == “??”, то функция возращает истину; ProcessPOSAndGrammems([in]BSTR in, [out] UINT* PartOfSpeech, [out] UINT* Grammems) переводит строчку в формате agramtab. tab  в часть речи и граммемы. В этой строчке сначала должна идти помета части речи, потом граммемы через запятую. Например, “СУЩ но, им, ед”; FindGrammem([in] BSTR gram_codes, [in] UINT grammems, [retval, out] BOOL* result) -  возращает  истину, если в gram_codes  нашелся такой код, что grammems, полученные по этому коду, полностью включают grammems, которые пришли в параметрах.

Для  кокласса RusGramTab лополнительно определены методы (для EngGramTab эти методы возращают E_FAIL):

GleicheGenderNumberCase([in] BSTR gram_code1,  [in] BSTR gram_code2, [retval, out] BOOL* result)-проверяет, согласованы ли по роду, числу и падежу грамматические коды; GleicheCaseNumber([in] BSTR gram_code1,  [in] BSTR gram_code2, [retval, out] BOOL* result) - проверяет, согласованы ли по числу и падежу грамматические коды; GleicheGenderNumber([in] BSTR gram_code1,  [in] BSTR gram_code2, [retval, out] BOOL* result) - проверяет, согласованы ли по роду и падежу грамматические коды; GleicheCase([in] BSTR gram_code1,  [in] BSTR gram_code2, [retval, out] BOOL* result) - проверяет, согласованы ли по падежу грамматические коды; GetPrepCases([in]BSTR prep, [out] UINT* Grammems, [retval, out] BOOL* found) – ищет предлог prep (предлог должен быть написан большими буквами),  если находит, то возращает падежи (набор битов в Grammems).

Пример использования


Ниже приводим пример использования интерфейса.

#include "stdio. h"

#include "atlbase. h"

#import  "..\debug\agramtab. dll"

using namespace AGRAMTABLib;

void main ()

{

try

  {

  CoInitialize(NULL);

  IGramTabPtr RusGramTab;

  HRESULT ht = RusGramTab. CreateInstance(__uuidof(AGRAMTABLib::RusGramTab));

  // загружаем  таблицу

  RusGramTab->Load();

// пробуем функцию перевода из строки в часть речи и граммемы

_bstr_t t = "С  но";

  RusGramTab->ProcessPOSAndGrammems(t, &PartOfSpeech, &Grammems);

  // получаем часть речи наречного кода

  UINT PartOfSpeech = RusGramTab->GetPartOfSpeech("яа");

  // получаем текстовое представление для константы “наречие“

  _bstr_t t;

  t = RusGramTab->GetPartOfSpeechStr(PartOfSpeech);

  printf ("%s", t);

  }

  catch(...)

  {

               return ;

  }

  CoUninitialize();

}

Ссылки

[1]   Примеры на все грамматические коды для  русского языка (l:\\doc\rus_examples. doc);

[2] Брумберг на все грамматические коды для английского языка  (l:\\doc\eng_examples. doc);

[3] Аношкина грамматических кодов для русского языка (l:\dicts\agramtab. tab);

[4] Брумберг  грамматических кодов для английского языка (l:\dicts\egramtab. tab);