������ � ������� ������ �� Perl

������ �������� 2004

���������� ��������� �������� ����� �� ���������� ������� � ��������� ������� �� Perl. ���� ��������� ��� ���������� ���������� �������������, ������� ��� ���������� ����������� � ��������� ������������ ��� ������ � �������������� �������.

������ ���������� ��������� �� ���������. ������� ������� ������ ����� ������ ������������ ��� �������������� ��������������� ������������. � ������������ ���� ������ ������ ������ ��������� ������-���� ������ ������������� ����������: ���� �� ������ ����� � ������ �����������, ���������� ������������ ������, ���������, �������� ��� ������� �� ��������� � ����-���� - ������� ��� ��� ������ ���������� ����������� � ������ � ������� ���������� ��������� �� ���-�� ������.

������ ������� ����������, ��� ��� ����� �������:


# C������� ������ ����������� 
# � ������� ���-�� �����, ����e� ��� ���������� �����.

while ($sentence =~ /\G($chto_to_rastet/g) ) {
	push (@vse_chto_rastet, $1);
}

���� ������ ������ "$chto_to_rastet" ����� �������� ����� �� ������ ���� � �����������, ����� � �������� ���������� �����, ����� � ��� ������ ��������� �����: "������", "�������", "����� �����".

���������� ������

���������� ��������� �������� � ��������� ������������� �����, �� ������ ��������� �� ��� ����� ������������� ����������� � ��������� �����������. ���� �� �������� - ��� ������ ����������� � ������� ���������� ������ (Link Grammar). ����� ����������� �������� ������� ������� ����� � �����������, ������ ���������� ������ ������ ����, ��� ��� ����� ������� �������� (������� ��� �������).

������ �����-����� ������������ �� ������ ��� ����������� ����� ���� (���������������, ��������������, ������� � ��� �����) � ��������� �������� ("���� ���� ����" - "����" ����� ������, � �� ���������������), �� � ��������� ����� �������� ������� ������� ����� � �����������. ��������, ���� ����� ������� �� ���� �������������� � ���� ��������������� � ��� ����� ����� ����� � ������ ���-�� ���������������� ��������� ������ ��������������. ���������� ������ ������ ��� ��������.

���������� ������ �������� �� ����� �� ��������������� ������� �����, ������� ���������� ����������� (��� ������ �������������). ����������� ��������, ��� ���� �� �� ��������� ��������� ������ ��� ����� ����� ������� � ����������� (��� ������������), �� ������������� ��� �������� ������������� ���������� �����������, � ���� ���� ������������, �� ����������� ������ ����� ������������� ������������ � ������ ���-�� �� ���. �������� ����������� ����������� "� ��� ���� �������" ����� ����� (�-����, ����-���, �������-���), ������� ������������.

� ������������ ���������� ������ ������ �������� ���� �� �������� �������� �����������, � ������� ������� ��� ���� �� ������������. ������ �������� ������� �����������:


    +----------Wd----------+            
    |          +----Sf3----+----MVv----+
    |          |           |           |
LEFT-WALL ����.nlfsi ����.vnpdpfs ����.ndfsv 

������� ����� ���� ���������� ����������. ��������, ������������ �� .n � .v �������� ��������������� (noun) � ������ (verb). ���������� ������� � �������� ����� ���������� � ����, �����, ������, ������� � ������ ��������������� ���������, � ����������� �� ����� ����. ����� �� ����� ����� ������� ���������� ��� �����. ��������, ��������� S ���������� ����� ����� ������� ��������������� � ��������. ��������� MV - ����� ��������� � ���������� �� ��� ����������������. ���������� ������� ����������� (��������� �����) ���������� ��������� �������������� ���������� � ���� ����������� ������, ���� ����� ��� �����, ����� � ���.

���� ������������� ���������� ������ �������� ������, ��� ��� �� ���� ��������� �� �������� ����� ��������� � �� ����� ����������� � ����� ��������� ����������� ��������.

���������� ������ ������� �������� ������, ������ �������� ������� ���������� ��������� ������� ���������. ��� ��� ������� ������� ��� ���� ��� �� ����������� ��������� �����������:

  • 1. �����������. ������� ��� ����� �� ������������.
  • 2. ���������. ��� ����� � ����������� ��������� ���� � ������.
  • 3. �����������������. �������������� ���������� �� ������ ��� ������� ����� �������������.

    ������ ���������� �������, ��� ��������� ���������� �� ������ ��� ������� �����. ��������, ����� "����", "����", "����" ����� �������� �������� ���������� �� ������:

    "����.nlfsi": {Afi-} & Sf3+;
    "����.vnpdpfs": Sf3- & Wd-; 
    "����.ndnsg": {Ang-} & Mg-;
    "����.ndfsv": {Afv-} & MVv-;
    

    ��������������� "����.n", "����.n", "����.n" ����� (� �������� { } ����������, ��� ����� � �� �����) ����� ����� � �������������� (���������� A-), � ������ "����.v" ����� ����� �- ����� �� �����, ���� ����� ������������ ��������� S-, ���������� ����� � ���������������. ����� ������� ��������������� "����.n" � ����������� ������ �� "����" �� ���������� �� � ����� �� ������ � ������������� ���������� �������.

    ��� ���������� ������ ��� ���� �������� � ����������� �������� �������. ���������� �������� �� ����������� ���������� "����� ���������� ������", ������� ������������ ����� ��������� �������. ������� ����� �������, ��� ��� ���������� ��������� � ���������� ���, � ��� ������������ ���������� ����������� A+, A-. ���� �� ���������� ������� � ����� ��������� �� ������� �������� ��������� ������ ��������� �� �������� � ������������ ����� ���� (A1 ��� A2 ��� .. ��� An), ��� Ai � ���� ������� ��� ������ ����������� (K1 � K2 � .. Kn). ������ ������ � ������� ������ ������� ����� (����� �������������� �� ������ � ������) �� �������� ��������� ����� �������� ��� �����������. ��� ������ �� ������� ��������������� �������� ����� � �� ����� �������� ������������ �������������� �����������. ����� ��� ����� �������� ��� �������� ������ ����������� ��������, ������� �� �������������� ����� (���� ���� ������ O(n^3) �� ����� ���� � �����������) ������� ������������� ���������� ������. ����� ��������, ��� ������ ������ ���������� ������ �������� � ������ ������������ ��������� ��������������. �������� ������� �������� ������� �� ����� ��������� ������. ���� ��� ����� �������� ����� �� ����� �� ������������ ������� �� � ����������� ������, �� �������� ��������� �� ����������� P4-2��� ��������� �� ����� 100 ����������� � �������. ������ ��-�� ������� ������������� ������� ��������, ���������� ������������ ������� �� ������������� ����� ���� ��� ������� ������� ������ �����������, ��� ������� ����������� �� �������� - � ������� ����� 1 ����������� � �������. �� ����� ��� ���������� ��� ��������� ������������ �����.

    ������ Lingua::RU::LinkParser

    �������� ������ ���������� ������ ������������ ����� ��������-��������������� ���������, ������� ����� ������������ �� �������� �� Perl. ����� ����������� ������ ����� �������� � ��������� ��������������� ������������, �������, ������, ������ � �����������. � ������� ���������� ��������� ���������:

    
    use Lingua::RU::LinkParser
    
    my $parser = new Lingua::RU::LinkParser; # ������� ������
    my $text = "���� ���� ����"
    
    my $sentence = $parser->create_sentence($text); # ��������� ����������� 
    my $linkage = $sentence->linkage(1); # ������������ ������ ������
    
    print $parser->get_diagram($linkage); # ������� ��������� �� �����
    
    
    ��� ��������� �������:
    
        +---------Wd--------+         
        |          +---Sf3--+--AIfi--+
        |          |        |        |
    LEFT-WALL ����.ndfsi ����.vp ����.afss 
    
    

    ������ "����" ������� ���������� ��� ���������������, � ������ - ��� ������� ��������������.

    ��������� �������� ��� ������ ���������� ������, �� ��� ������������ ����� ��� ����������� �������� � ����� �������. ��������� ������ ���� ������� ���������, �� �������� �� ������� $linkage (������) ������ �������� ���� $word:

    
    my @words = $linkage->words;
    foreach my $word (@words) {
       print "\"", $word->text, "\"\n";
       foreach my $link ($word->links) {
          print " ��� ����� `", $link->linklabel,
             "' �� ������ `", $link->linkword, "'\n";
       }
    }
    
    �������� �� ������ ���������:
    "����.ndfsi"
    ��� ����� `Sf3' �� ������ `2: ����.vp'
    "����.vp"
    ��� ����� `Sf3' �� ������ `1: ����.ndfsi'
    ��� ����� `Wd' �� ������ `0: LEFT-WALL'
    ��� ����� `AIfi' �� ������ `3: ����.afss'
    "����.afss"
    ��� ����� `AIfi' �� ������ `2: ����.vp'