Changeset 49

Show
Ignore:
Timestamp:
01/01/07 17:51:53 (2 years ago)
Author:
chris
Message:

- Added test for preparsed (morphologically analysed) input

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lex/trunk/test/com/qwirx/lex/ParserTest.java

    r30 r49  
    66package com.qwirx.lex; 
    77 
     8import java.util.ArrayList; 
    89import java.util.Hashtable; 
    910import java.util.Iterator; 
     
    1516import com.qwirx.lex.parser.Chart; 
    1617import com.qwirx.lex.parser.Edge; 
     18import com.qwirx.lex.parser.MorphEdge; 
    1719import com.qwirx.lex.parser.Parser; 
    1820import com.qwirx.lex.parser.Rule; 
     
    14451447    // and he planted Yahweh God a garden in Eden from [the] east 
    14461448     
    1447     Rule [] hebrew = new Rule[] { 
     1449    Rule [] hebrewCons = new Rule[] { 
    14481450        Rule.makeFromString(1,  "CONJ",    "W"), 
    14491451        Rule.makeFromString(2,  "V",       "NV<["), 
     
    14681470    }; 
    14691471 
    1470     public void testParseHebrewGenesis2_8()   
     1472    public void testParseHebrewConsGenesis2_8()   
    14711473    {         
    1472         Parser p = new Parser(hebrew); 
     1474        Parser p = new Parser(hebrewCons); 
    14731475        List edges = p.parseFor( 
    1474             "W NV<[ JHWH/ >LHJM/ GN/ B <DN=/ MN QDM/", "CLAUSE", false); 
     1476            "W NV<[ JHWH/ >LHJM/ GN/ B <DN=/ MN QDM/", "CLAUSE"); 
    14751477        assertEquals(1, edges.size()); 
    14761478 
     
    14891491    } 
    14901492 
     1493    // Gen 02,08 
     1494    // 
     1495    // WA-  | J.I-  | Ø-    | V.A62<- | Ø     | J:HW@94H- | Ø          
     1496    // CONJ | V/TNS | V/STM | V/LEX   | V/PGN | N/PROP    | N/GNS   
     1497    // 
     1498    // >:ELOH- | I91Jm | G.An&- | Ø     | B.:- | <;73DEn- | Ø      
     1499    // N/PROP  | N/GNS | N/COM  | N/GNS | P    | N/PROP   | N/GNS  
     1500    // 
     1501    // MI- | Q.E92DEm- | Ø 
     1502    // P   | N/PROP    | N/GNS 
     1503    // 
     1504    // Expected output: 
     1505    // | SENTENCE                                                                                                | 
     1506    // | CLAUSE                                                                                                  | 
     1507    // | CLM  | CORE                                                       | PERIPH                              | 
     1508    // |      | NUC                       | ARG            | ARG           | PP               | PP               | 
     1509    // |      | CORE/V                    | NP             | NP            | NUC/P   | NP     | NUC/P   | NP     | 
     1510    // |      | OPT | IGN | NUC/V | ARG/V |                |               | PRED/P  |        | PRED/P  |        | 
     1511    // | CONJ | TNS | STM | LEX   | PGN   | N/PROP | N/GNS | N/COM | N/GNS | P       | N/PROP | P       | N/PROP | 
     1512     
     1513    Rule [] hebrewQuest = new Rule[] { 
     1514        Rule.makeFromString(0,  "CLM",     "{CONJ}"), 
     1515        Rule.makeFromString(1,  "OPT",     "{V/TNS}"), 
     1516        Rule.makeFromString(2,  "IGN",     "{V/STM}"), 
     1517        Rule.makeFromString(3,  "NUC/V",   "{V/LEX}"), 
     1518        Rule.makeFromString(4,  "ARG/V",   "{V/PGN}"), 
     1519        Rule.makeFromString(5,  "CORE/V",  "{OPT} {IGN} {NUC/V} {ARG/V}"), 
     1520        Rule.makeFromString(5,  "N/PROP",  "{HEAD/NPROP} {MARK/N}"), 
     1521        Rule.makeFromString(5,  "N/COM",   "{HEAD/NCOM} {MARK/N}"), 
     1522        Rule.makeFromString(6,  "NP",      "{N/PROP}+"), 
     1523        Rule.makeFromString(7,  "NP",      "{N/COM}"), 
     1524        Rule.makeFromString(8,  "PRED/P",  "{P}"), 
     1525        Rule.makeFromString(9,  "NUC/P",   "{PRED/P}"), 
     1526        Rule.makeFromString(10, "NUC",     "{CORE/V}"), 
     1527        Rule.makeFromString(11, "ARG",     "{NP}"), 
     1528        Rule.makeFromString(12, "PP",      "{NUC/P} {NP}"), 
     1529        Rule.makeFromString(14, "CORE",    "{NUC} {ARG} {ARG}"), 
     1530        Rule.makeFromString(15, "PERIPH",  "{PP}*"), 
     1531        Rule.makeFromString(16, "CLAUSE",  "{CLM} {CORE} {PERIPH}"), 
     1532        Rule.makeFromString(17, "SENTENCE","{CLAUSE}"), 
     1533    }; 
     1534 
     1535    public void testParseHebrewQuestGenesis2_8()   
     1536    {         
     1537        Parser p = new Parser(hebrewQuest); 
     1538         
     1539        List input = new ArrayList(); 
     1540         
     1541        input.add(new MorphEdge("CONJ",   "WA-",      0));  
     1542        input.add(new MorphEdge("V/TNS",  "J.I",      1));  
     1543        input.add(new MorphEdge("V/STM",  "",         2));  
     1544        input.add(new MorphEdge("V/LEX",  "V.A62<",   3));  
     1545        input.add(new MorphEdge("V/PGN",  "",         4));  
     1546        input.add(new MorphEdge("HEAD/NPROP", "J:HW@94H", 5));  
     1547        input.add(new MorphEdge("MARK/N",  "",         6));  
     1548        input.add(new MorphEdge("HEAD/NPROP", ">:ELOH",   7));  
     1549        input.add(new MorphEdge("MARK/N",  "I91Jm",    8));  
     1550        input.add(new MorphEdge("HEAD/NCOM",  "G.An&-",   9));  
     1551        input.add(new MorphEdge("MARK/N",  "",         10));  
     1552        input.add(new MorphEdge("P",      "B.:-",     11));  
     1553        input.add(new MorphEdge("HEAD/NPROP", "<;73DEn",  12));  
     1554        input.add(new MorphEdge("MARK/N",  "",         13));  
     1555        input.add(new MorphEdge("P",      "MI-",      14));  
     1556        input.add(new MorphEdge("HEAD/NPROP", "Q.E92DEm", 15));  
     1557        input.add(new MorphEdge("MARK/N",  "",         16));  
     1558         
     1559        p.setVerbose(true); 
     1560        List edges = p.parseFor(input, "SENTENCE"); 
     1561        assertEquals(1, edges.size()); 
     1562 
     1563        Edge CLAUSE = (Edge)( edges.get(0) ); 
     1564         
     1565        assertEquals("{SENTENCE " + 
     1566            "{CLAUSE {CLM {CONJ \"WA-\"}} " + 
     1567            "{CORE " + 
     1568            "{NUC {CORE/V " + 
     1569            "{OPT {V/TNS \"J.I\"}} " + 
     1570            "{IGN {V/STM \"\"}} " + 
     1571            "{NUC/V {V/LEX \"V.A62<\"}} " + 
     1572            "{ARG/V {V/PGN \"\"}}" + 
     1573            "}} " + 
     1574            "{ARG {NP " + 
     1575            "{N/PROP {HEAD/NPROP \"J:HW@94H\"} {MARK/N \"\"}} " + 
     1576            "{N/PROP {HEAD/NPROP \">:ELOH\"} {MARK/N \"I91Jm\"}}" + 
     1577            "}} " + 
     1578            "{ARG {NP " + 
     1579            "{N/COM {HEAD/NCOM \"G.An&-\"} {MARK/N \"\"}}" + 
     1580            "}}} " + 
     1581            "{PERIPH " + 
     1582            "{PP " + 
     1583            "{NUC/P {PRED/P {P \"B.:-\"}}} " + 
     1584            "{NP {N/PROP {HEAD/NPROP \"<;73DEn\"} {MARK/N \"\"}}}" + 
     1585            "} " + 
     1586            "{PP " + 
     1587            "{NUC/P {PRED/P {P \"MI-\"}}} " + 
     1588            "{NP {N/PROP {HEAD/NPROP \"Q.E92DEm\"} {MARK/N \"\"}}}" + 
     1589            "}" + 
     1590            "}}}", CLAUSE.toString()); 
     1591    } 
     1592 
    14911593        public static void main(String[] args)  
    14921594    {