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%) |
-?
-?
â ,
â
â
â
-?
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.