blob: 259fa6095aa05b225553be27b453a175cb9bf312 [file] [log] [blame]
Akronbe3d3662023-04-26 13:22:38 +02001source all/allpref.xfst
2
3define Caseinsensitive [
4a (->) A,
5b (->) B,
6c (->) C,
7d (->) D,
8e (->) E,
9f (->) F,
10g (->) G,
11h (->) H,
12i (->) I,
13j (->) J,
14k (->) K,
15l (->) L,
16m (->) M,
17n (->) N,
18o (->) O,
19p (->) P,
20q (->) Q,
21r (->) R,
22s (->) S,
23t (->) T,
24u (->) U,
25v (->) V,
26w (->) W,
27x (->) X,
28y (->) Y,
29z (->) Z,
30ö (->) Ö,
31ü (->) Ü,
32ä (->) Ä,
33è (->) È,
34é (->) É,
35ú (->) Ú,
36á (->) Á,
37â (->) Â,
38ê (->) Ê,
39î (->) Î,
40ô (->) Ô,
41û (->) Û,
42ß (->) {SS}
43];
44
45! Foma complains when this reuses the above definition
46define CapitalCaseinsensitive [
47a (->) A,
48b (->) B,
49c (->) C,
50d (->) D,
51e (->) E,
52f (->) F,
53g (->) G,
54h (->) H,
55i (->) I,
56j (->) J,
57k (->) K,
58l (->) L,
59m (->) M,
60n (->) N,
61o (->) O,
62p (->) P,
63q (->) Q,
64r (->) R,
65s (->) S,
66t (->) T,
67u (->) U,
68v (->) V,
69w (->) W,
70x (->) X,
71y (->) Y,
72z (->) Z,
73ö (->) Ö,
74ü (->) Ü,
75ä (->) Ä,
76è (->) È,
77é (->) É,
78ú (->) Ú,
79á (->) Á,
80â (->) Â,
81ê (->) Ê,
82î (->) Î,
83ô (->) Ô,
84û (->) Û,
85ß (->) {SS}
86|| .#. _ ];
87
88define Letter [ [ AsciiLetter | ö | ü | ä | è | é | ú | á | â | ê | î | ô | û | ß ] .o. Caseinsensitive ];
89
90define NotSmallCaps [? - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - t - u - v - w - x - y - z - ü - ö - ä - è - é - ú - á - â - ê - î - ô - û];
91
Akron72a64222023-04-26 17:00:45 +020092source en/clitics.xfst
Akronbe3d3662023-04-26 13:22:38 +020093
Akron72a64222023-04-26 17:00:45 +020094# define Word Char+ (Apos Char+)*;
95define Word [[ Char+ | Clitics ] - CliticsNTPart | CliticsNT];
Akronbe3d3662023-04-26 13:22:38 +020096
97define Plusampersand @txt"de/plusampersand.txt";
98define Word [Plusampersand | Word] (Dash [Plusampersand | Word])*;
99
100! Abbreviations and Initials
101define Months [{Jan}|{Feb}|{Mar}|{Apr}|{Jun}|{Jul}|{Aug}|{Sep}(t)|{Oct}|{Nov}|{Dec}];
102define Abbr [ [ @txt"en/abbrv.txt" | Letter | Months ] .o. CapitalCaseinsensitive ] %.;
103
104source all/allpost.xfst
105
106echo - Compile Real Token
107
108define RealToken [Punct|Emdash|Abbr|Word|SNS|AcronymDep|Ord|Num|Years|Times|XMLEntities|Omission];
109
Akrond0dfea82023-04-26 19:24:17 +0200110! Treatmeant for I as a word in "M. I. Baxter was killed in World War I. So was I."
111define NonAbbrI [ {am}|{was}|{will}|{have}|{had}|{would}|{do}|{did}|{and}|{War}|{than}|{not}|[P|p]{art} ];
112
113
Akronbe3d3662023-04-26 13:22:38 +0200114echo - Introduce Token splitter
115
116define Token [
117 RealToken @-> ... NLout,
118 XML @-> ... NLout,
119 URL @-> ... NLout,
120 Email @-> ... NLout,
121 File @-> ... NLout,
122 Domain @-> ... NLout,
123 [Emoticons|Arrows] @-> ... NLout
Akron72a64222023-04-26 17:00:45 +0200124]
125! I as a separate token
126.o. ["I" @-> ... NLout \/ NonAbbrI [WS | NLout ]+ _ ]
127! Negative clitics are tokens
128.o. [ {n't} ->@ NLout ... \/ NLout ];
Akronbe3d3662023-04-26 13:22:38 +0200129
130source all/allsentencesplit.xfst
131
132! foma -e "source tokenizer.xfst" -q -s && cat text.txt | flookup tokenizer.fst -x -b