@chaffjs/lang-en 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dates.d.ts.map +1 -1
- package/dist/dates.js +22 -4
- package/dist/dates.js.map +1 -1
- package/dist/emphasis.d.ts +7 -0
- package/dist/emphasis.d.ts.map +1 -0
- package/dist/emphasis.js +15 -0
- package/dist/emphasis.js.map +1 -0
- package/dist/pos.d.ts.map +1 -1
- package/dist/pos.js +25 -2
- package/dist/pos.js.map +1 -1
- package/lexicons/count-adjective.yaml +8 -0
- package/lexicons/dependent-possessive.yaml +10 -0
- package/lexicons/emphasis-word.yaml +4 -2
- package/lexicons/example-marker.yaml +12 -0
- package/lexicons/finite-auxiliary.yaml +9 -0
- package/lexicons/invariant-noun.yaml +26 -0
- package/lexicons/misnumbered-phrase.yaml +7 -0
- package/lexicons/name-title.yaml +20 -0
- package/lexicons/pair-opener.yaml +13 -0
- package/lexicons/plural-determiner.yaml +10 -0
- package/lexicons/singular-determiner.yaml +13 -0
- package/package.json +1 -1
- package/src/dates.ts +22 -4
- package/src/emphasis.ts +16 -0
- package/src/pos.ts +28 -2
package/dist/dates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAuG9C,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,OAAO,EAOD,CAAC"}
|
package/dist/dates.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
// Dates in English text, and the weekday written beside one.
|
|
2
2
|
const MONTHS = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
|
|
3
|
-
|
|
3
|
+
/** "Sep", "Sept": a month cut short, which may carry a period ("Sept. 12, 2025"). */
|
|
4
|
+
const ABBREVIATED = new Map([...MONTHS.map((name, index) => [name.slice(0, 3), index + 1]), ["sept", 9]]);
|
|
5
|
+
/** Title case or capitals ("SEP 01, 2022" on a web page): a lower-case "mar" or "may" is never a month. */
|
|
6
|
+
const MONTH_WORD = /\b(?<month>[A-Z][a-z]{2,8}|[A-Z]{3,9})\b/gu;
|
|
7
|
+
/** "12-SEP-2025", the day-month-year form of labels and logs. Only a three-letter month is written this way. */
|
|
8
|
+
const HYPHENATED_DATE = /(?<![\w-])(?<d>\d{1,2})-(?<month>[A-Z][a-z]{2}|[A-Z]{3})-(?<y>\d{4})(?![\w-])/gu;
|
|
4
9
|
const ISO_DATE = /\b(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})\b/gu;
|
|
5
10
|
const DAY_BEFORE = /(?<d>\d{1,2})(?:st|nd|rd|th)? $/u;
|
|
6
11
|
const DAY_YEAR_AFTER = /^ (?<d>\d{1,2})(?:st|nd|rd|th)?,? (?<y>\d{4})\b/u;
|
|
@@ -35,12 +40,21 @@ const monthYear = (text, at, end, month) => {
|
|
|
35
40
|
* The month is found first and its neighbours read with anchored patterns, never one long alternation.
|
|
36
41
|
*/
|
|
37
42
|
const namedDate = (text, match) => {
|
|
38
|
-
const
|
|
43
|
+
const word = (match.groups?.["month"] ?? "").toLowerCase();
|
|
44
|
+
const full = MONTHS.indexOf(word) + 1;
|
|
45
|
+
const month = full === 0 ? (ABBREVIATED.get(word) ?? 0) : full;
|
|
39
46
|
if (month === 0)
|
|
40
47
|
return undefined;
|
|
41
|
-
const end = match.index + match[0].length;
|
|
48
|
+
const end = match.index + match[0].length + (full === 0 && text.charAt(match.index + match[0].length) === "." ? 1 : 0);
|
|
42
49
|
return monthDayYear(text, match.index, end, month) ?? monthYear(text, match.index, end, month);
|
|
43
50
|
};
|
|
51
|
+
const hyphenatedDate = (match) => {
|
|
52
|
+
const month = ABBREVIATED.get((match.groups?.["month"] ?? "").toLowerCase());
|
|
53
|
+
if (month === undefined)
|
|
54
|
+
return [];
|
|
55
|
+
const value = `${match.groups?.["y"] ?? ""}-${pad(String(month))}-${pad(match.groups?.["d"] ?? "")}`;
|
|
56
|
+
return [{ start: match.index, end: match.index + match[0].length, attrs: { value } }];
|
|
57
|
+
};
|
|
44
58
|
const isoDate = (match) => ({
|
|
45
59
|
start: match.index,
|
|
46
60
|
end: match.index + match[0].length,
|
|
@@ -78,7 +92,11 @@ const withWeekday = (text, date) => {
|
|
|
78
92
|
const weekday = before ?? weekdayOf(WEEKDAY_AFTER.exec(text.slice(date.end, date.end + 16))?.groups?.["day"]);
|
|
79
93
|
return weekday === undefined ? date : { ...date, attrs: { ...date.attrs, weekday } };
|
|
80
94
|
};
|
|
81
|
-
export const dates = (text) => [
|
|
95
|
+
export const dates = (text) => [
|
|
96
|
+
...[...text.matchAll(MONTH_WORD)].flatMap((match) => namedDate(text, match) ?? []),
|
|
97
|
+
...[...text.matchAll(HYPHENATED_DATE)].flatMap(hyphenatedDate),
|
|
98
|
+
...[...text.matchAll(ISO_DATE)].map(isoDate),
|
|
99
|
+
]
|
|
82
100
|
.toSorted((left, right) => left.start - right.start)
|
|
83
101
|
.map((date) => withWeekday(text, date));
|
|
84
102
|
//# sourceMappingURL=dates.js.map
|
package/dist/dates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAE7D,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC1I,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dictionary knows the lower-case word, and only as an adverb (never, always, also). An acronym names a thing, so a word
|
|
3
|
+
* with no noun or adjective reading cannot be one. A word that is also a noun or an adjective (fast, eagle, cheese) is kept:
|
|
4
|
+
* FAST and EAGLE are a telescope and a simulation, and the context tagger cannot tell them from emphasis.
|
|
5
|
+
*/
|
|
6
|
+
export declare const isEmphasisedAdverb: (surface: string, tagsOf: (word: string) => readonly string[] | undefined) => boolean;
|
|
7
|
+
//# sourceMappingURL=emphasis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emphasis.d.ts","sourceRoot":"","sources":["../src/emphasis.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,OAI7G,CAAC"}
|
package/dist/emphasis.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// A word written in capitals for emphasis (the office will NEVER call you), told from an acronym by the dictionary.
|
|
2
|
+
const CAPITALS = /^\p{Lu}{2,}$/u;
|
|
3
|
+
const ADVERB_TAGS = new Set(["RB", "RBR", "RBS"]);
|
|
4
|
+
/**
|
|
5
|
+
* The dictionary knows the lower-case word, and only as an adverb (never, always, also). An acronym names a thing, so a word
|
|
6
|
+
* with no noun or adjective reading cannot be one. A word that is also a noun or an adjective (fast, eagle, cheese) is kept:
|
|
7
|
+
* FAST and EAGLE are a telescope and a simulation, and the context tagger cannot tell them from emphasis.
|
|
8
|
+
*/
|
|
9
|
+
export const isEmphasisedAdverb = (surface, tagsOf) => {
|
|
10
|
+
if (!CAPITALS.test(surface))
|
|
11
|
+
return false;
|
|
12
|
+
const tags = tagsOf(surface.toLowerCase()) ?? [];
|
|
13
|
+
return tags.length > 0 && tags.every((tag) => ADVERB_TAGS.has(tag));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=emphasis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emphasis.js","sourceRoot":"","sources":["../src/emphasis.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAEpH,MAAM,QAAQ,GAAG,eAAe,CAAC;AAEjC,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,MAAuD,EAAW,EAAE;IACtH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
package/dist/pos.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"pos.d.ts","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAkF5C,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,KAAG,MAAiE,CAAC;AAqIrG,eAAO,MAAM,OAAO,QAAO,IAI1B,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,OAAoC,CAAC;AAwChE,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,KAAK,EAAE,GAAG,SAMjD,CAAC"}
|
package/dist/pos.js
CHANGED
|
@@ -4,6 +4,7 @@ import { loadLexicons } from "./lexicons.js";
|
|
|
4
4
|
import { blankLongRuns } from "./long-runs.js";
|
|
5
5
|
import { lowercasedAt, properNounChecked, rereadAt, sentenceInitialCommonWord } from "./proper-noun.js";
|
|
6
6
|
import { isStativeParticiple, stativeVocabulary } from "./stative-participle.js";
|
|
7
|
+
import { isEmphasisedAdverb } from "./emphasis.js";
|
|
7
8
|
const require = createRequire(import.meta.url);
|
|
8
9
|
const isRecord = (value) => typeof value === "object" && value !== null;
|
|
9
10
|
const isCallable = (value) => typeof value === "function";
|
|
@@ -131,6 +132,26 @@ const determinerFeatures = (entry) => {
|
|
|
131
132
|
/** 複数形の名詞は UD の Number=Plur。数の語がそれを数えていれば(five minutes)、one of のような言い回しではなく量。 */
|
|
132
133
|
const PLURAL_TAG = new Set(["NNS", "NNPS"]);
|
|
133
134
|
const nounOrDeterminerFeatures = (entry) => (PLURAL_TAG.has(entry.pos) ? { features: { Number: "Plur" } } : determinerFeatures(entry));
|
|
135
|
+
const COMMON_NOUN_TAG = new Set(["NN", "NNS"]);
|
|
136
|
+
const NOUN_TAG = new Set(["NN", "NNS", "NNP", "NNPS"]);
|
|
137
|
+
const ADJECTIVE_TAG = new Set(["JJ", "JJR", "JJS"]);
|
|
138
|
+
/**
|
|
139
|
+
* 解析器が一つに決めた読みの、ほかの読み。名詞と付けた語が動詞にもなる(works / report)なら AlsoVerb=Yes、
|
|
140
|
+
* 形容詞と付けた語が名詞にもなる(individual / key)なら AlsoNoun=Yes。an individual works は名詞と動詞とも読める。
|
|
141
|
+
* 語彙に無い名詞・形容詞(tribunal / stimuli)は、品詞も単数・複数も解析器が形から当てたものなので Guess=Yes。
|
|
142
|
+
*/
|
|
143
|
+
const otherReading = (entry) => {
|
|
144
|
+
const tags = state.vocabulary(entry.value.toLowerCase());
|
|
145
|
+
if (tags === undefined)
|
|
146
|
+
return NOUN_TAG.has(entry.pos) || ADJECTIVE_TAG.has(entry.pos) ? { Guess: "Yes" } : {};
|
|
147
|
+
if (COMMON_NOUN_TAG.has(entry.pos) && tags.some((tag) => tag.startsWith("VB")))
|
|
148
|
+
return { AlsoVerb: "Yes" };
|
|
149
|
+
return ADJECTIVE_TAG.has(entry.pos) && tags.some((tag) => COMMON_NOUN_TAG.has(tag)) ? { AlsoNoun: "Yes" } : {};
|
|
150
|
+
};
|
|
151
|
+
const withOtherReading = (entry, found) => {
|
|
152
|
+
const other = otherReading(entry);
|
|
153
|
+
return Object.keys(other).length === 0 ? found : { features: { ...found.features, ...other } };
|
|
154
|
+
};
|
|
134
155
|
/**
|
|
135
156
|
* 過去分詞は VerbForm=Part。Based on the review, のような分詞の導入句を、命令形の並び(fix the parser, ship it)と見分ける。
|
|
136
157
|
* -ing 形は VerbForm=Ger。解析器は動名詞と現在分詞を分けないので、過去分詞を見る判断(Part)には混ぜない。
|
|
@@ -142,7 +163,7 @@ const featuresOf = (tagged, at) => {
|
|
|
142
163
|
if (entry.pos === "VBG")
|
|
143
164
|
return { features: { VerbForm: "Ger" } };
|
|
144
165
|
if (entry.pos !== "VBN")
|
|
145
|
-
return nounOrDeterminerFeatures(entry);
|
|
166
|
+
return withOtherReading(entry, nounOrDeterminerFeatures(entry));
|
|
146
167
|
return { features: isPassive(tagged, at) ? { VerbForm: "Part", Voice: "Pass" } : { VerbForm: "Part" } };
|
|
147
168
|
};
|
|
148
169
|
const isTags = (value) => Array.isArray(value) && value.every((tag) => typeof tag === "string");
|
|
@@ -163,6 +184,8 @@ export const prepare = () => {
|
|
|
163
184
|
state.vocabulary = buildVocabulary();
|
|
164
185
|
};
|
|
165
186
|
export const isReady = () => state.ready !== undefined;
|
|
187
|
+
/** 大文字で強調した副詞(NEVER)は、解析器が名前と付けても副詞。Emph=Yes は、略語ではないと detector に伝える。 */
|
|
188
|
+
const withEmphasis = (token) => isEmphasisedAdverb(token.surface, state.vocabulary) ? { ...token, pos: "ADV", lemma: token.surface.toLowerCase(), features: { Emph: "Yes" } } : token;
|
|
166
189
|
/**
|
|
167
190
|
* wink は位置を返さないので、表層を順に照合して復元する。
|
|
168
191
|
* 見つからないものは飛ばし、カーソルは進めない。位置の当てずっぽうを下流に流さない。
|
|
@@ -179,7 +202,7 @@ const locate = (text, tagged) => tagged.reduce((acc, entry, at) => {
|
|
|
179
202
|
...(entry.lemma === undefined ? {} : { lemma: entry.lemma }),
|
|
180
203
|
...featuresOf(tagged, at),
|
|
181
204
|
};
|
|
182
|
-
return { tokens: [...acc.tokens, token], cursor: end };
|
|
205
|
+
return { tokens: [...acc.tokens, withEmphasis(token)], cursor: end };
|
|
183
206
|
}, { tokens: [], cursor: 0 }).tokens;
|
|
184
207
|
/** 英語の語はこれより長くならない。超える並びは語として読まない。 */
|
|
185
208
|
const RUN_LIMIT = 1000;
|
package/dist/pos.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pos.js","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pos.js","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Possessives that only stand before a noun. One of these directly before a verb ("Your can check", "Their is no
|
|
2
|
+
# limit") is "you" or "there" mistyped. "his" and "her" are left out: "His is red", "give her a copy".
|
|
3
|
+
id: dependent-possessive
|
|
4
|
+
language: en
|
|
5
|
+
entries:
|
|
6
|
+
- pattern: my
|
|
7
|
+
- pattern: your
|
|
8
|
+
- pattern: our
|
|
9
|
+
- pattern: their
|
|
10
|
+
- pattern: its
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
# English
|
|
1
|
+
# English words written in capitals for emphasis (should NOT change, the NEW formula): they have no reading as
|
|
2
2
|
# an acronym, so there is nothing to expand. A word that is also an acronym (OR: Oregon, operating room;
|
|
3
|
-
# IS: International Standard) does not belong here.
|
|
3
|
+
# IS: International Standard) does not belong here. A word the dictionary knows only as an adverb (NEVER,
|
|
4
|
+
# ALWAYS) needs no entry: lang-en reads it as emphasis by itself. Matched as written.
|
|
4
5
|
id: emphasis-word
|
|
5
6
|
language: en
|
|
6
7
|
entries:
|
|
7
8
|
- pattern: "NOT"
|
|
8
9
|
- pattern: "AND"
|
|
9
10
|
- pattern: "ONLY"
|
|
11
|
+
- pattern: "NEW"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Words that open examples of, or a restatement of, the noun before them: "the screen lock on your phone, such as a PIN
|
|
2
|
+
# or phone-based fingerprint". oxford-comma-consistency starts the list after them, so the noun they follow is not an
|
|
3
|
+
# item: "such as a PIN or a fingerprint" is two items, and "such as a PIN, a password or a fingerprint" is still three.
|
|
4
|
+
id: example-marker
|
|
5
|
+
language: en
|
|
6
|
+
entries:
|
|
7
|
+
- pattern: such as
|
|
8
|
+
- pattern: including
|
|
9
|
+
- pattern: e.g.
|
|
10
|
+
- pattern: i.e.
|
|
11
|
+
- pattern: for example
|
|
12
|
+
- pattern: for instance
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Nouns whose singular and plural are spelled alike, or that name one thing while ending in -s. The tagger may read
|
|
2
|
+
# either number into them, so agreement-slip does not count them: "a series", "a means", "these staff", "this data".
|
|
3
|
+
id: invariant-noun
|
|
4
|
+
language: en
|
|
5
|
+
entries:
|
|
6
|
+
- pattern: news
|
|
7
|
+
- pattern: series
|
|
8
|
+
- pattern: species
|
|
9
|
+
- pattern: means
|
|
10
|
+
- pattern: data
|
|
11
|
+
- pattern: media
|
|
12
|
+
- pattern: criteria
|
|
13
|
+
- pattern: phenomena
|
|
14
|
+
- pattern: staff
|
|
15
|
+
- pattern: personnel
|
|
16
|
+
- pattern: police
|
|
17
|
+
- pattern: headquarters
|
|
18
|
+
- pattern: crossroads
|
|
19
|
+
- pattern: whereabouts
|
|
20
|
+
- pattern: savings
|
|
21
|
+
- pattern: sheep
|
|
22
|
+
- pattern: fish
|
|
23
|
+
- pattern: deer
|
|
24
|
+
- pattern: aircraft
|
|
25
|
+
- pattern: spacecraft
|
|
26
|
+
- pattern: offspring
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Phrases with a plural where English takes the singular: "remains ones of the most intriguing" is "one of the most".
|
|
2
|
+
# Not counted after a determiner, an adjective or a pronoun, where "ones" is the pronoun ("the ones of the most use").
|
|
3
|
+
id: misnumbered-phrase
|
|
4
|
+
language: en
|
|
5
|
+
entries:
|
|
6
|
+
- pattern: ones of the most
|
|
7
|
+
- pattern: ones of the least
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Official titles set before a surname printed in capitals: a hearing transcript's speakers (Senator HAWLEY., Secretary
|
|
2
|
+
# BLINKEN.) and the Japanese government's romanised names, surname first (Prime Minister ABE Shinzo). A word in capitals
|
|
3
|
+
# right after one of these is a name, not an acronym. "Minister" also covers Prime Minister and Foreign Minister, "President"
|
|
4
|
+
# Vice President. Titles often followed by an acronym (Chair, General, Justice) are left out. Matched as written.
|
|
5
|
+
id: name-title
|
|
6
|
+
language: en
|
|
7
|
+
entries:
|
|
8
|
+
- pattern: "President"
|
|
9
|
+
- pattern: "Minister"
|
|
10
|
+
- pattern: "Secretary"
|
|
11
|
+
- pattern: "Secretary-General"
|
|
12
|
+
- pattern: "Chief Justice"
|
|
13
|
+
- pattern: "Governor"
|
|
14
|
+
- pattern: "Senator"
|
|
15
|
+
- pattern: "Ambassador"
|
|
16
|
+
- pattern: "Mayor"
|
|
17
|
+
- pattern: "Chancellor"
|
|
18
|
+
- pattern: "Commissioner"
|
|
19
|
+
- pattern: "Chairman"
|
|
20
|
+
- pattern: "Chairwoman"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Words that take exactly two things, each with the conjunction that joins its pair: "between Provider and Customer",
|
|
2
|
+
# "both state and federal", "either email or post", "whether written or oral". When one stands in the item right
|
|
3
|
+
# before its own conjunction, oxford-comma-consistency reads that conjunction as part of the item, not as the list's
|
|
4
|
+
# last joint: "the Key Terms between Provider and Customer, and any policies". "between Acme, Beta and Gamma" is still
|
|
5
|
+
# a list: "between" is not in the last item. "the impact of either option and implementation" is still a list: "either"
|
|
6
|
+
# pairs with "or", not "and".
|
|
7
|
+
id: pair-opener
|
|
8
|
+
language: en
|
|
9
|
+
entries:
|
|
10
|
+
- pattern: between and
|
|
11
|
+
- pattern: both and
|
|
12
|
+
- pattern: either or
|
|
13
|
+
- pattern: whether or
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Determiners that count several things. A singular noun after one of these ("these new version") is a slip. They also
|
|
2
|
+
# stand alone ("These help us"), so a noun is counted only when an adjective comes between.
|
|
3
|
+
#
|
|
4
|
+
# "one of the" is left out. It takes a plural ("one of the most important features"), but in the corpus it only ever
|
|
5
|
+
# stood before a singular in "some one of the name of Cecily", which is right: "some one" is "someone".
|
|
6
|
+
id: plural-determiner
|
|
7
|
+
language: en
|
|
8
|
+
entries:
|
|
9
|
+
- pattern: these
|
|
10
|
+
- pattern: those
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Determiners that count one thing. A plural noun after one of these ("a significant changes", "each new users") is a
|
|
2
|
+
# slip. "that" is left out: the tagger cannot tell the demonstrative from the conjunction ("so that users can").
|
|
3
|
+
# Only the articles never stand alone; after the others a noun is counted only when an adjective comes between, because
|
|
4
|
+
# "This results in a loss" is a pronoun and a verb, not a determiner and a noun.
|
|
5
|
+
id: singular-determiner
|
|
6
|
+
language: en
|
|
7
|
+
entries:
|
|
8
|
+
- pattern: a
|
|
9
|
+
- pattern: an
|
|
10
|
+
- pattern: another
|
|
11
|
+
- pattern: each
|
|
12
|
+
- pattern: every
|
|
13
|
+
- pattern: this
|
package/package.json
CHANGED
package/src/dates.ts
CHANGED
|
@@ -3,7 +3,12 @@ import type { Mention } from "chaffjs/plugin";
|
|
|
3
3
|
// Dates in English text, and the weekday written beside one.
|
|
4
4
|
|
|
5
5
|
const MONTHS = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
|
|
6
|
-
|
|
6
|
+
/** "Sep", "Sept": a month cut short, which may carry a period ("Sept. 12, 2025"). */
|
|
7
|
+
const ABBREVIATED: ReadonlyMap<string, number> = new Map([...MONTHS.map((name, index) => [name.slice(0, 3), index + 1] as const), ["sept", 9]]);
|
|
8
|
+
/** Title case or capitals ("SEP 01, 2022" on a web page): a lower-case "mar" or "may" is never a month. */
|
|
9
|
+
const MONTH_WORD = /\b(?<month>[A-Z][a-z]{2,8}|[A-Z]{3,9})\b/gu;
|
|
10
|
+
/** "12-SEP-2025", the day-month-year form of labels and logs. Only a three-letter month is written this way. */
|
|
11
|
+
const HYPHENATED_DATE = /(?<![\w-])(?<d>\d{1,2})-(?<month>[A-Z][a-z]{2}|[A-Z]{3})-(?<y>\d{4})(?![\w-])/gu;
|
|
7
12
|
const ISO_DATE = /\b(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})\b/gu;
|
|
8
13
|
const DAY_BEFORE = /(?<d>\d{1,2})(?:st|nd|rd|th)? $/u;
|
|
9
14
|
const DAY_YEAR_AFTER = /^ (?<d>\d{1,2})(?:st|nd|rd|th)?,? (?<y>\d{4})\b/u;
|
|
@@ -41,12 +46,21 @@ const monthYear = (text: string, at: number, end: number, month: number): Mentio
|
|
|
41
46
|
* The month is found first and its neighbours read with anchored patterns, never one long alternation.
|
|
42
47
|
*/
|
|
43
48
|
const namedDate = (text: string, match: RegExpExecArray): Mention | undefined => {
|
|
44
|
-
const
|
|
49
|
+
const word = (match.groups?.["month"] ?? "").toLowerCase();
|
|
50
|
+
const full = MONTHS.indexOf(word) + 1;
|
|
51
|
+
const month = full === 0 ? (ABBREVIATED.get(word) ?? 0) : full;
|
|
45
52
|
if (month === 0) return undefined;
|
|
46
|
-
const end = match.index + match[0].length;
|
|
53
|
+
const end = match.index + match[0].length + (full === 0 && text.charAt(match.index + match[0].length) === "." ? 1 : 0);
|
|
47
54
|
return monthDayYear(text, match.index, end, month) ?? monthYear(text, match.index, end, month);
|
|
48
55
|
};
|
|
49
56
|
|
|
57
|
+
const hyphenatedDate = (match: RegExpExecArray): Mention[] => {
|
|
58
|
+
const month = ABBREVIATED.get((match.groups?.["month"] ?? "").toLowerCase());
|
|
59
|
+
if (month === undefined) return [];
|
|
60
|
+
const value = `${match.groups?.["y"] ?? ""}-${pad(String(month))}-${pad(match.groups?.["d"] ?? "")}`;
|
|
61
|
+
return [{ start: match.index, end: match.index + match[0].length, attrs: { value } }];
|
|
62
|
+
};
|
|
63
|
+
|
|
50
64
|
const isoDate = (match: RegExpExecArray): Mention => ({
|
|
51
65
|
start: match.index,
|
|
52
66
|
end: match.index + match[0].length,
|
|
@@ -88,6 +102,10 @@ const withWeekday = (text: string, date: Mention): Mention => {
|
|
|
88
102
|
};
|
|
89
103
|
|
|
90
104
|
export const dates = (text: string): Mention[] =>
|
|
91
|
-
[
|
|
105
|
+
[
|
|
106
|
+
...[...text.matchAll(MONTH_WORD)].flatMap((match) => namedDate(text, match) ?? []),
|
|
107
|
+
...[...text.matchAll(HYPHENATED_DATE)].flatMap(hyphenatedDate),
|
|
108
|
+
...[...text.matchAll(ISO_DATE)].map(isoDate),
|
|
109
|
+
]
|
|
92
110
|
.toSorted((left, right) => left.start - right.start)
|
|
93
111
|
.map((date) => withWeekday(text, date));
|
package/src/emphasis.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// A word written in capitals for emphasis (the office will NEVER call you), told from an acronym by the dictionary.
|
|
2
|
+
|
|
3
|
+
const CAPITALS = /^\p{Lu}{2,}$/u;
|
|
4
|
+
|
|
5
|
+
const ADVERB_TAGS: ReadonlySet<string> = new Set(["RB", "RBR", "RBS"]);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The dictionary knows the lower-case word, and only as an adverb (never, always, also). An acronym names a thing, so a word
|
|
9
|
+
* with no noun or adjective reading cannot be one. A word that is also a noun or an adjective (fast, eagle, cheese) is kept:
|
|
10
|
+
* FAST and EAGLE are a telescope and a simulation, and the context tagger cannot tell them from emphasis.
|
|
11
|
+
*/
|
|
12
|
+
export const isEmphasisedAdverb = (surface: string, tagsOf: (word: string) => readonly string[] | undefined): boolean => {
|
|
13
|
+
if (!CAPITALS.test(surface)) return false;
|
|
14
|
+
const tags = tagsOf(surface.toLowerCase()) ?? [];
|
|
15
|
+
return tags.length > 0 && tags.every((tag) => ADVERB_TAGS.has(tag));
|
|
16
|
+
};
|
package/src/pos.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { loadLexicons } from "./lexicons.ts";
|
|
|
5
5
|
import { blankLongRuns } from "./long-runs.ts";
|
|
6
6
|
import { lowercasedAt, properNounChecked, rereadAt, sentenceInitialCommonWord } from "./proper-noun.ts";
|
|
7
7
|
import { isStativeParticiple, stativeVocabulary } from "./stative-participle.ts";
|
|
8
|
+
import { isEmphasisedAdverb } from "./emphasis.ts";
|
|
8
9
|
|
|
9
10
|
const require = createRequire(import.meta.url);
|
|
10
11
|
|
|
@@ -164,6 +165,27 @@ const PLURAL_TAG = new Set(["NNS", "NNPS"]);
|
|
|
164
165
|
|
|
165
166
|
const nounOrDeterminerFeatures = (entry: Tagged): Features => (PLURAL_TAG.has(entry.pos) ? { features: { Number: "Plur" } } : determinerFeatures(entry));
|
|
166
167
|
|
|
168
|
+
const COMMON_NOUN_TAG = new Set(["NN", "NNS"]);
|
|
169
|
+
const NOUN_TAG = new Set(["NN", "NNS", "NNP", "NNPS"]);
|
|
170
|
+
const ADJECTIVE_TAG = new Set(["JJ", "JJR", "JJS"]);
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* 解析器が一つに決めた読みの、ほかの読み。名詞と付けた語が動詞にもなる(works / report)なら AlsoVerb=Yes、
|
|
174
|
+
* 形容詞と付けた語が名詞にもなる(individual / key)なら AlsoNoun=Yes。an individual works は名詞と動詞とも読める。
|
|
175
|
+
* 語彙に無い名詞・形容詞(tribunal / stimuli)は、品詞も単数・複数も解析器が形から当てたものなので Guess=Yes。
|
|
176
|
+
*/
|
|
177
|
+
const otherReading = (entry: Tagged): Readonly<Record<string, string>> => {
|
|
178
|
+
const tags = state.vocabulary(entry.value.toLowerCase());
|
|
179
|
+
if (tags === undefined) return NOUN_TAG.has(entry.pos) || ADJECTIVE_TAG.has(entry.pos) ? { Guess: "Yes" } : {};
|
|
180
|
+
if (COMMON_NOUN_TAG.has(entry.pos) && tags.some((tag) => tag.startsWith("VB"))) return { AlsoVerb: "Yes" };
|
|
181
|
+
return ADJECTIVE_TAG.has(entry.pos) && tags.some((tag) => COMMON_NOUN_TAG.has(tag)) ? { AlsoNoun: "Yes" } : {};
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const withOtherReading = (entry: Tagged, found: Features): Features => {
|
|
185
|
+
const other = otherReading(entry);
|
|
186
|
+
return Object.keys(other).length === 0 ? found : { features: { ...found.features, ...other } };
|
|
187
|
+
};
|
|
188
|
+
|
|
167
189
|
/**
|
|
168
190
|
* 過去分詞は VerbForm=Part。Based on the review, のような分詞の導入句を、命令形の並び(fix the parser, ship it)と見分ける。
|
|
169
191
|
* -ing 形は VerbForm=Ger。解析器は動名詞と現在分詞を分けないので、過去分詞を見る判断(Part)には混ぜない。
|
|
@@ -172,7 +194,7 @@ const featuresOf = (tagged: readonly Tagged[], at: number): Features => {
|
|
|
172
194
|
const entry = tagged[at];
|
|
173
195
|
if (entry === undefined) return {};
|
|
174
196
|
if (entry.pos === "VBG") return { features: { VerbForm: "Ger" } };
|
|
175
|
-
if (entry.pos !== "VBN") return nounOrDeterminerFeatures(entry);
|
|
197
|
+
if (entry.pos !== "VBN") return withOtherReading(entry, nounOrDeterminerFeatures(entry));
|
|
176
198
|
return { features: isPassive(tagged, at) ? { VerbForm: "Part", Voice: "Pass" } : { VerbForm: "Part" } };
|
|
177
199
|
};
|
|
178
200
|
|
|
@@ -200,6 +222,10 @@ export const prepare = (): void => {
|
|
|
200
222
|
|
|
201
223
|
export const isReady = (): boolean => state.ready !== undefined;
|
|
202
224
|
|
|
225
|
+
/** 大文字で強調した副詞(NEVER)は、解析器が名前と付けても副詞。Emph=Yes は、略語ではないと detector に伝える。 */
|
|
226
|
+
const withEmphasis = (token: Token): Token =>
|
|
227
|
+
isEmphasisedAdverb(token.surface, state.vocabulary) ? { ...token, pos: "ADV", lemma: token.surface.toLowerCase(), features: { Emph: "Yes" } } : token;
|
|
228
|
+
|
|
203
229
|
/**
|
|
204
230
|
* wink は位置を返さないので、表層を順に照合して復元する。
|
|
205
231
|
* 見つからないものは飛ばし、カーソルは進めない。位置の当てずっぽうを下流に流さない。
|
|
@@ -217,7 +243,7 @@ const locate = (text: string, tagged: readonly Tagged[]): Token[] =>
|
|
|
217
243
|
...(entry.lemma === undefined ? {} : { lemma: entry.lemma }),
|
|
218
244
|
...featuresOf(tagged, at),
|
|
219
245
|
};
|
|
220
|
-
return { tokens: [...acc.tokens, token], cursor: end };
|
|
246
|
+
return { tokens: [...acc.tokens, withEmphasis(token)], cursor: end };
|
|
221
247
|
},
|
|
222
248
|
{ tokens: [], cursor: 0 },
|
|
223
249
|
).tokens;
|