Описание интерфейса для таблицы грамматических кодов
Описание интерфейса для таблицы грамматических кодов 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 |
1л | первое лицо | FirstPerson |
2л | второе лицо | SecondPerson |
3л | третье лицо | 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 следующие методы:
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);


