PNL: extraire des faits du texte Ă  l'aide de l'analyseur Tomita

PNL - traitement du langage naturel





La plupart des donnĂ©es dans le monde ne sont pas structurĂ©es - ce ne sont que des textes en russe ou dans toute autre langue. Les faits extraits de ces textes peuvent prĂ©senter un intĂ©rĂȘt particulier pour les entreprises, de sorte que de telles tĂąches surviennent souvent. Un domaine distinct de l'intelligence artificielle traite de cette question: le traitement du langage naturel, le mĂȘme NLP ( Natural Language Processing ).





:









.









, , , .





  • -





, ,





,   – , , , , . , , , , , :









№2 ,15 2020., 5400,00





.. 15299,00 ,





№575 , 145 17.09.2020 2020 , 18% — 5300 .





, 23, 51 01.09.2020 — 7500 .





№1-03 01.07.2020 211 2020 23000 ..(18%)





-?

- – () , (- ) .  GitHub, .





-?

  • – ,





  • –





  • –





  • –









-?

- , , , . ,  ,  , .





tomitaparser.exe ( . ) :





  • config.proto — . , . tomitaparser.exe;





  • dic.gzt – . . , , , . ;





  • mygram.cxx – . , . . ;





  • facttypes.proto – ;





  • kwtypes.proto – . , .





 utf8 , ( ).





«dic.gzt», , .





encoding "utf8"; //   

//        ,     
import "base.proto";
import "articles_base.proto";
//     
TAuxDicArticle "payment" {
    key = { "tomita:mygram.cxx" type=CUSTOM }
};
      
      



. , — , . . «->»  . , – . . . (Noun, Verb, Adj), (Comma, Punct, Ampersand, PlusSign) . .  .  





. , «+» () , .  .





() , (), , . ()  Â«< >»  .  -  . , «cxx», – «mygram.cxx». . . — , , «», «», «».





#encoding "utf8" //   

//  "|"    ""
Rent -> '' | '' | '';
//  "" ,       0   
//  <gnc-agr[1]>   ,         ,   
Purpose -> Rent Adj<gnc-agr[1]> Noun<gnc-agr[1]>;
      
      



. , , , . , , .





//   StreetW    ,   StreetAbbr -   
StreetW -> '' | '' | '' | '';
StreetAbbr -> '' | '' | '' | '-' | '';

//       StreetDescr,       StreetW   StreetAbbr
StreetDescr -> StreetW | StreetAbbr;
StreetNameNoun -> (Adj<gnc-agr[1]>) Word<gnc-agr[1], rt> (Word<gram="">);
StreetNameAdj -> Adj<h-reg1> Adj*;
      
      



«StreetNameNoun»  , . , , «<rt>». , , . , , . . , , .. , «()». «StreetNameAdj»  , . . «<h-reg1>». , «*». , .





Address -> StreetDescr StreetNameNoun<gram="", h-reg1>;
Address -> StreetDescr StreetNameNoun<gram="", h-reg1>;

Address -> StreetNameAdj<gnc-agr[1]> StreetW<gnc-agr[1]>;
Address -> StreetNameAdj StreetAbbr;
      
      



. , . , . . , . :





//       «dic.gzt»
TAuxDicArticle "month" {
    key = { "" | "" | "" | "" | "" | "" | "" | "" | "" | "" | "" | "" }
};
      
      



:





Month -> Noun<kwtype="month">;
Year -> AnyWord<wff=/[1-2]?[0-9]{1,3}?\.?/>;

Period -> Month Year;
      
      



«kwtype» , «month» , 0 2999 «» «.» . , . «Result» :





Result -> Purpose AnyWord* Address AnyWord* Period;
Result -> Purpose AnyWord* Address;
Result -> Purpose;
      
      



«AnyWord» «*» , 0 . : , . : , .





. – «facttypes.proto» «dic.gzt»  (, - , ).





import "facttypes.proto"; //    «dic.gzt» 
      
      



«facttypes.proto» «Payment»  (): , . :





//   
import "base.proto";
import "facttypes_base.proto";

message Payment: NFactType.TFact {
    required string Purpose = 1;
    optional string Address = 2;
    optional string Period = 3;
};
      
      



«Payment» «NFactType.TFact», «required» «optional» , . , , «interp» , . , .





//  «Purpose»    «Purpose»  «Payment»
//  «Address»    «Address»  «Payment»
//  «Period»    «Period»  «Payment»
Result -> Purpose interp(Payment.Purpose) AnyWord* Address interp(Payment.Address) AnyWord* Period interp(Payment.Period);
Result -> Purpose interp(Payment.Purpose) AnyWord* Address interp(Payment.Address);
Result -> Purpose interp(Payment.Purpose);
      
      



, , , .





encoding "utf8"; //   

TTextMinerConfig {
    //   
    Dictionary = "dic.gzt";
    //  
    Input = {File = "input.txt"}
    //      
    Output = {File = "output.txt"
            Format = text}
    // ,     
    Articles = [
        { Name = "payment" }
        ]
    // ,  
    Facts = [
        { Name = "Payment" }
        ]
    //       
    PrettyOutput = "pretty.html"
}
      
      



:





> tomitaparser.exe config.proto
      
      



Dans le fichier " input.txt ", nous avons placé le texte source placé au tout début de l'article. AprÚs le travail, l'analyseur a écrit le résultat dans le fichier " output.txt ":





     № 2      , 15   2020 . ,   5400,00  
    Payment
    {
        Purpose =   
        Address =   
        Period =  2020
    }
     . .      15299,00  ,   
    Payment
    {
        Purpose =  
    }
    № 575      , 145  17.09.2020   2020  ,   18% - 5300  . 
    Payment
    {
        Purpose =  
        Address =   
        Period =  2020
    }
          , 23 ,  51  01.09.2020 - 7500  . 
    Payment
    {
        Purpose =   
        Address =  
    }
     № 1-03  01.07.2020       211   2020  23000  .. ( 18% ) 
    Payment
    {
        Purpose =  
        Address =  
        Period =  2020
    }
      
      



Extraire des faits du langage naturel est une tĂąche plutĂŽt non triviale dans le monde informatique Ă  ce jour. Nous avons maintenant un autre outil disponible entre nos mains. Comme vous pouvez le voir, crĂ©er votre premiĂšre grammaire peut ĂȘtre assez facile, tout en passant un peu de temps Ă  apprendre. pour Tomita, une documentation dĂ©taillĂ©e et complĂšte est fournie. Cependant, la qualitĂ© des faits mis en Ă©vidence dĂ©pend fortement du dĂ©veloppeur lui-mĂȘme et de ses connaissances dans le domaine de l'expert.








All Articles