//================================================================

// ===== COM Test Example for Dialing Lemmatizer (www.aot.ru) ==

// ===== Author: Alexey Sokirko, sokirko@yandex.ru, 2005 =======

//================================================================

 

program MorphTest;

 

{$APPTYPE CONSOLE}

 

uses

SysUtils,

ActiveX,

//Unit LEMMATIZERLib_TLB.pas is generated by $Rml/Bin/Lemmatizer.dll. In Delphi 6 one should use menu "Project/Import Type Library".

LEMMATIZERLib_TLB in '..\..\..\..\Program Files\Borland\Delphi6\Imports\LEMMATIZERLib_TLB.pas',

//Unit AGRAMTABLib_TLB.pas is generated by $Rml/Bin/Agramtab.dll. In Delphi 6 one should use menu "Project/Import Type Library".

AGRAMTABLib_TLB in '..\..\..\..\Program Files\Borland\Delphi6\Imports\AGRAMTABLib_TLB.pas';

 

procedure TestRusLemmatizer(word : string);

var RusLemmatizer : ILemmatizer;

ParadigmCollection : IParadigmCollection;

Paradigm : IParadigm;

RusGramTab : IGramTab;

OneAncode, SrcAncodes : string;

i,j : integer;

 

begin

// loading morphological dicitonary

RusLemmatizer := CoLemmatizerRussian.Create;

if (RusLemmatizer = nil) then

begin

writeln('cannot load lemmatizer');

halt(1);

end;

RusLemmatizer.LoadDictionariesRegistry();

// loading table of gram-codes

RusGramTab := CoRusGramTab.Create;

if (RusGramTab = nil) then

begin

writeln('cannot load table for grammatical codes');

halt(1);

end;

RusGramTab.Load;

 

 

ParadigmCollection := RusLemmatizer.CreateParadigmCollectionFromForm(word, 1, 1);

if (ParadigmCollection.Count = 0) then

begin

writeln('not found');

exit;

end;

writeln(' "',word, '":');

for j:=0 to ParadigmCollection.Count-1 do

begin

Paradigm := ParadigmCollection.Item[j];

writeln(' {');

writeln(' = ',Paradigm.Norm);

writeln(' Id = ',Paradigm.ParadigmID);

write(' = ');

i:=1;

SrcAncodes := Paradigm.SrcAncode;

while i < Length(SrcAncodes) do

begin

OneAncode := Copy(SrcAncodes,i,2);

write(RusGramTab.GetPartOfSpeechStr( RusGramTab.GetPartOfSpeech(OneAncode) ));

write(' ');

write(RusGramTab.GrammemsToStr( RusGramTab.GetGrammems(OneAncode) ));

write('; ');

inc (i, 2);

end;

writeln;

writeln(' }');

end

end;

 

var hr : HRESULT;

begin

try

hr := CoInitialize(nil);

if (hr <> S_OK) then

begin

writeln('cannot load Component Object Model(COM) library');

halt(1);

end;

TestRusLemmatizer('');

CoUninitialize();

except

writeln('an exception occurred!');

end;

 

 

end.