2017-07-15 154 views
1

我正在學習使用Gate從文檔檢索信息。有人能請我解釋一下爲了讓我的JAPE語法規則起作用我必須做些什麼。我已經檢查了大多數教程和門手冊,但我仍然沒有明白。我想提取人員,地點和日期作爲我的命名實體。如何在Gate中創建JAPE語法規則

因此,我所做的是:1。 鑑定我的約會模式中的文件 2.創建每個模式 3.裝載.jape文件戲言語法規則到門作爲一個新的戲言傳感器

我的日期模式如下: 1. DateMonthYear 2. MonthYear

因此,如果我理解正確,我將不得不爲每個這些模式定義JAPE語法規則。這就是我想要做的。我已經定義我的規則在.jape文件,但它不會告發加載到門,它給我說,資源不能創建了一個錯誤,該.jape文件如下:

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"} 

我不知道如果我需要有不同註釋模式的新列表(例如DateMonth)。有人可以告訴我我應該做什麼,並且爲了讓它運行。我在這裏檢查了大門手冊和其他問題,但是我無法找到任何提供關於如何設置整個框架的完整教程的任何內容。

回答

0

的錯誤信息是:

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) 

見錯字在你的戲言文件line 12, column 19({Lookup.MajorType="Month"}),則需要雙倍的等號:({Lookup.MajorType=="Month"})

校正之後,看到另一條消息:

Rule ddmmyyyy contains unlisted annotation type Toke 

有一個在線路6的另一錯字:({Toke.kind == number,...。它應該是({Token.kind == number,...

+0

令人難以置信..我糾正了錯字,它工作,謝謝。但你認爲這是對的嗎?我只是在學習不確定我的語法是否正確。 –

+0

@NampaGwakondo我認爲它很好,非常基本的東西(除了高級宏的使用:-),如果它在做(註釋)你的預期,那麼它沒問題,你不覺得嗎? – dedek