2017-07-15 1 views
1

J'apprends à utiliser Gate pour récupérer des informations à partir de documents. Quelqu'un pourrait-il m'expliquer exactement ce que je dois faire pour que ma règle de grammaire JAPE fonctionne? J'ai vérifié la plupart des tutoriels et le manuel de Gate mais je ne comprends toujours pas. Je voudrais extraire la personne, le lieu et la date en tant que mes entités nommées.Comment créer des règles de grammaire JAPE dans la porte

Donc ce que je fait est: 1. Identifié mes modèles de date dans les documents 2. Créer des règles de grammaire JAPE pour chaque motif 3. Chargez le fichier .jape dans la porte comme un nouveau transducteur jape

Ma date Les modèles sont les suivants: 1. DateMonthYear 2. MonthYear

Donc, si je comprends bien, je devrais définir des règles de grammaire JAPE pour chacun de ces modèles. Et c'est ce que j'essaie de faire. J'ai défini mes règles dans un fichier .jape mais il wouldn charger dans la porte et il me donne une erreur cette ressource ne peut pas être créé, le fichier .jape est le suivant:

Phase: datetimefinder 
Input: Token Lookup SpaceToken 
Options: control = appelt 

Macro: DAY_ONEDIGIT 
({Toke.kind == number,Token.category==CD, Token.length == "1"}) 

Macro: DAY_TWODIGIT 
({Token.kind == number,Token.category==CD, Token.length == "2"}) 

Macro: MONTH 
({Lookup.MajorType="Month"}) 

Macro: YEAR 
({Token.kind== number,Token.category==CD, Token.length== "4"}) 

////////Rule number 1 
Rule: ddmmyyyy 
priority:50 
(
    (
    (DAY_ONEDIGIT|DAY_TWODIGIT) 
    ({Token.kind==punctuation}|{SpaceToken})? 
    ) 
    (
    (MONTH) 
    ({Token.kind==punctuation}|{SpaceToken})? 
    (YEAR) 
    ) 
) 
:ddmmyyyy 
--> 
:ddmmyyyy.DateMonthYear= {rule = "ddmmyyyy"} 

//Rule number 2 
Rule: mmyyyy 
priority: 50 
( 
    (MONTH) 
    ({Token})? 
    ({SpaceToken})? 
    (YEAR) 
) 
:mmyyyy 
--> 
:mmyyyy.MonthYear= {rule = "mmyyyy"} 

Je ne sais pas si je besoin d'avoir de nouvelles listes des différents modèles d'annotation (par exemple DateMonth). Quelqu'un peut-il me dire ce que je devrais avoir, et faire pour que cela fonctionne. J'ai vérifié le manuel de porte et d'autres questions ici mais je ne peux pas trouver n'importe quoi qui donne un tutoriel complet sur la façon de mettre en place ce cadre entier.

Répondre

0

Le message d'erreur est:

gate.creole.ResourceInstantiationException: gate.jape.parser.ParseException: Cannot parse a phase in file:/your_jape_file_path.jape: Encountered " "=" "= "" at line 12, column 19. 
Was expecting: 
    <attrOp> ... 

    at gate.jape.plus.Transducer.init(Transducer.java:642) 

Voir la faute de frappe à line 12, column 19 de votre fichier jape: ({Lookup.MajorType="Month"}), vous devez le symbole égal: ({Lookup.MajorType=="Month"}).

Après correction, voir un autre message:

Rule ddmmyyyy contains unlisted annotation type Toke 

Il y a une autre faute de frappe à la ligne 6: ({Toke.kind == number,.... Il devrait être ({Token.kind == number,....

+0

Incroyable .. Je rectifie la faute de frappe et cela a fonctionné, merci. Mais pensez-vous que c'est juste? J'apprends juste pas sûr si ma grammaire est juste. –

+0

@NampaGwakondo Je pense que c'est ok, tout à fait un élément de base (sauf l'utilisation avancée de macros :-), Si elle fait (annotant) ce que vous attendiez, alors c'est ok, vous ne pensez pas? – dedek