chaffjs 0.16.0 → 0.17.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/calendar-number.d.ts +7 -2
- package/dist/calendar-number.d.ts.map +1 -1
- package/dist/calendar-number.js +10 -3
- package/dist/calendar-number.js.map +1 -1
- package/dist/closing-numbers.d.ts +20 -0
- package/dist/closing-numbers.d.ts.map +1 -0
- package/dist/closing-numbers.js +56 -0
- package/dist/closing-numbers.js.map +1 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +11 -9
- package/dist/commands/test.js.map +1 -1
- package/dist/detectors/acronym-context.d.ts +2 -0
- package/dist/detectors/acronym-context.d.ts.map +1 -1
- package/dist/detectors/acronym-context.js +13 -0
- package/dist/detectors/acronym-context.js.map +1 -1
- package/dist/detectors/acronym-expansion.d.ts +2 -0
- package/dist/detectors/acronym-expansion.d.ts.map +1 -1
- package/dist/detectors/acronym-expansion.js +104 -1
- package/dist/detectors/acronym-expansion.js.map +1 -1
- package/dist/detectors/agreement-slip.d.ts +32 -0
- package/dist/detectors/agreement-slip.d.ts.map +1 -0
- package/dist/detectors/agreement-slip.js +137 -0
- package/dist/detectors/agreement-slip.js.map +1 -0
- package/dist/detectors/content-morphemes.d.ts +4 -0
- package/dist/detectors/content-morphemes.d.ts.map +1 -0
- package/dist/detectors/content-morphemes.js +12 -0
- package/dist/detectors/content-morphemes.js.map +1 -0
- package/dist/detectors/en-shape.d.ts +0 -1
- package/dist/detectors/en-shape.d.ts.map +1 -1
- package/dist/detectors/en-shape.js +0 -235
- package/dist/detectors/en-shape.js.map +1 -1
- package/dist/detectors/heading-echo.d.ts.map +1 -1
- package/dist/detectors/heading-echo.js +12 -18
- package/dist/detectors/heading-echo.js.map +1 -1
- package/dist/detectors/heading-overlap.d.ts +13 -0
- package/dist/detectors/heading-overlap.d.ts.map +1 -0
- package/dist/detectors/heading-overlap.js +52 -0
- package/dist/detectors/heading-overlap.js.map +1 -0
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +6 -1
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/letter-joined-name.d.ts +13 -0
- package/dist/detectors/letter-joined-name.d.ts.map +1 -0
- package/dist/detectors/letter-joined-name.js +11 -0
- package/dist/detectors/letter-joined-name.js.map +1 -0
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +5 -2
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/orthography.js +2 -2
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/oxford-comma.d.ts +3 -0
- package/dist/detectors/oxford-comma.d.ts.map +1 -0
- package/dist/detectors/oxford-comma.js +340 -0
- package/dist/detectors/oxford-comma.js.map +1 -0
- package/dist/detectors/signals.d.ts.map +1 -1
- package/dist/detectors/signals.js +29 -10
- package/dist/detectors/signals.js.map +1 -1
- package/dist/detectors/stacked-hedge.d.ts +0 -7
- package/dist/detectors/stacked-hedge.d.ts.map +1 -1
- package/dist/detectors/stacked-hedge.js +6 -3
- package/dist/detectors/stacked-hedge.js.map +1 -1
- package/dist/detectors/stray-space.d.ts +7 -0
- package/dist/detectors/stray-space.d.ts.map +1 -0
- package/dist/detectors/stray-space.js +34 -0
- package/dist/detectors/stray-space.js.map +1 -0
- package/dist/detectors/structure.d.ts +3 -1
- package/dist/detectors/structure.d.ts.map +1 -1
- package/dist/detectors/structure.js +4 -2
- package/dist/detectors/structure.js.map +1 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +15 -3
- package/dist/document.js.map +1 -1
- package/dist/genre-parse.d.ts +5 -1
- package/dist/genre-parse.d.ts.map +1 -1
- package/dist/genre-parse.js +16 -3
- package/dist/genre-parse.js.map +1 -1
- package/dist/genre-suggest.d.ts.map +1 -1
- package/dist/genre-suggest.js +15 -1
- package/dist/genre-suggest.js.map +1 -1
- package/dist/line-paragraphs.d.ts.map +1 -1
- package/dist/line-paragraphs.js +3 -1
- package/dist/line-paragraphs.js.map +1 -1
- package/dist/mask.d.ts.map +1 -1
- package/dist/mask.js +2 -11
- package/dist/mask.js.map +1 -1
- package/dist/number-name.js +1 -1
- package/dist/number-name.js.map +1 -1
- package/dist/opening-line.d.ts +3 -0
- package/dist/opening-line.d.ts.map +1 -0
- package/dist/opening-line.js +14 -0
- package/dist/opening-line.js.map +1 -0
- package/dist/orthography.d.ts +5 -1
- package/dist/orthography.d.ts.map +1 -1
- package/dist/orthography.js +7 -1
- package/dist/orthography.js.map +1 -1
- package/dist/paragraph-length.d.ts +7 -0
- package/dist/paragraph-length.d.ts.map +1 -0
- package/dist/paragraph-length.js +10 -0
- package/dist/paragraph-length.js.map +1 -0
- package/dist/plugin.d.ts +6 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/quoted-span.d.ts +0 -2
- package/dist/quoted-span.d.ts.map +1 -1
- package/dist/quoted-span.js +1 -1
- package/dist/quoted-span.js.map +1 -1
- package/dist/rule-load.d.ts.map +1 -1
- package/dist/rule-load.js +8 -0
- package/dist/rule-load.js.map +1 -1
- package/dist/run-semantic.d.ts +3 -1
- package/dist/run-semantic.d.ts.map +1 -1
- package/dist/run-semantic.js +8 -3
- package/dist/run-semantic.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +4 -1
- package/dist/run.js.map +1 -1
- package/dist/semantic.d.ts +1 -1
- package/dist/semantic.d.ts.map +1 -1
- package/dist/semantic.js +10 -3
- package/dist/semantic.js.map +1 -1
- package/dist/span-merge.d.ts +4 -0
- package/dist/span-merge.d.ts.map +1 -0
- package/dist/span-merge.js +12 -0
- package/dist/span-merge.js.map +1 -0
- package/dist/speaker-labels.d.ts +4 -0
- package/dist/speaker-labels.d.ts.map +1 -0
- package/dist/speaker-labels.js +106 -0
- package/dist/speaker-labels.js.map +1 -0
- package/dist/stray-space.d.ts +17 -0
- package/dist/stray-space.d.ts.map +1 -0
- package/dist/stray-space.js +66 -0
- package/dist/stray-space.js.map +1 -0
- package/dist/structure/relative-resolve.d.ts.map +1 -1
- package/dist/structure/relative-resolve.js +26 -20
- package/dist/structure/relative-resolve.js.map +1 -1
- package/dist/team-names.d.ts.map +1 -1
- package/dist/team-names.js +11 -14
- package/dist/team-names.js.map +1 -1
- package/genres.yaml +34 -2
- package/package.json +3 -3
- package/rules/agreement-slip.yaml +36 -0
- package/rules/empty-conclusion.yaml +1 -0
- package/rules/heading-echo.yaml +1 -0
- package/rules/max-paragraph-length.yaml +9 -2
- package/rules/max-sentence-length.yaml +4 -0
- package/rules/oxford-comma-consistency.yaml +1 -1
- package/rules/stray-space.yaml +38 -0
- package/rules/undefined-acronym.yaml +1 -0
- package/src/calendar-number.ts +16 -7
- package/src/closing-numbers.ts +72 -0
- package/src/commands/test.ts +19 -14
- package/src/detectors/acronym-context.ts +16 -0
- package/src/detectors/acronym-expansion.ts +132 -1
- package/src/detectors/agreement-slip.ts +191 -0
- package/src/detectors/content-morphemes.ts +19 -0
- package/src/detectors/en-shape.ts +0 -269
- package/src/detectors/heading-echo.ts +12 -20
- package/src/detectors/heading-overlap.ts +65 -0
- package/src/detectors/index.ts +6 -1
- package/src/detectors/letter-joined-name.ts +15 -0
- package/src/detectors/lexicon.ts +6 -2
- package/src/detectors/orthography.ts +2 -2
- package/src/detectors/oxford-comma.ts +402 -0
- package/src/detectors/signals.ts +32 -9
- package/src/detectors/stacked-hedge.ts +6 -3
- package/src/detectors/stray-space.ts +40 -0
- package/src/detectors/structure.ts +10 -2
- package/src/document.ts +25 -4
- package/src/genre-parse.ts +30 -5
- package/src/genre-suggest.ts +15 -2
- package/src/line-paragraphs.ts +4 -1
- package/src/mask.ts +2 -11
- package/src/number-name.ts +1 -1
- package/src/opening-line.ts +17 -0
- package/src/orthography.ts +10 -2
- package/src/paragraph-length.ts +9 -0
- package/src/plugin.ts +6 -0
- package/src/quoted-span.ts +1 -1
- package/src/rule-load.ts +8 -0
- package/src/run-semantic.ts +28 -20
- package/src/run.ts +5 -1
- package/src/semantic.ts +11 -3
- package/src/span-merge.ts +13 -0
- package/src/speaker-labels.ts +129 -0
- package/src/stray-space.ts +81 -0
- package/src/structure/relative-resolve.ts +34 -19
- package/src/team-names.ts +13 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speaker-labels.d.ts","sourceRoot":"","sources":["../src/speaker-labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AA0HxC,iCAAiC;AACjC,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,IAAI,EAKhD,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 戯曲・台本・議事録・書き起こしの、話し手の名前(`ALGERNON.`、行頭の `夫` と全角空白、`○事務局`)。
|
|
3
|
+
* 名前は誰が話すかの印であって本文ではない。文として数えると、名前だけの文が増え、名前が固有名詞と言い回しの繰り返しに入る。
|
|
4
|
+
*
|
|
5
|
+
* 形だけで決める。同じ形の行頭の名前が、MIN_SPEAKERS 人以上それぞれ MIN_TURNS 回以上繰り返され、どれも後に発言が続き、
|
|
6
|
+
* その形の行が文書の段落の多くを始める。1 つの名前の繰り返しは見出し(○ と全角空白の後の「注意事項」)、
|
|
7
|
+
* 繰り返されない名前は偶然、ときどき出るだけの `NOTE:` `WARNING:` は注記なので、話し手と読まない。
|
|
8
|
+
* そう読めた形では、1 度しか話さない人の名前も話し手の名前とする(議事録の委員)。
|
|
9
|
+
*/
|
|
10
|
+
/** 話し手と読むのに要る、繰り返す名前の数。 */
|
|
11
|
+
const MIN_SPEAKERS = 2;
|
|
12
|
+
/** 名前が繰り返されたと読む回数。 */
|
|
13
|
+
const MIN_TURNS = 3;
|
|
14
|
+
/** 対話と読むのに要る、その形の行の数。数回の注記(NOTE: と WARNING:)は対話ではない。 */
|
|
15
|
+
const MIN_DIALOGUE_TURNS = 10;
|
|
16
|
+
/** その形の行が始める段落の割合の下限。会議録は長い発言が何段落も続くので、戯曲より低い。 */
|
|
17
|
+
const MIN_TURN_SHARE = 0.1;
|
|
18
|
+
/**
|
|
19
|
+
* 英語の名前は大文字で書いたものだけ(ALGERNON、LADY BRACKNELL、Mr. SMITH)。
|
|
20
|
+
* 大文字小文字まじりの「Title:」「Notes:」「Content-Type:」は、記録や表の項目の名前と形が同じで、見分けられない。
|
|
21
|
+
*/
|
|
22
|
+
const CAPS_WORD = String.raw `[A-Z][A-Z'’&-]*\.?`;
|
|
23
|
+
const CAPS_NAME = String.raw `(?:[A-Z][a-z]{1,3}\. )?${CAPS_WORD}(?: ${CAPS_WORD}){0,3}`;
|
|
24
|
+
/** 日本語の名前に入らない文字。空白、括弧、句読点、かぎ括弧、コロン。 */
|
|
25
|
+
const JA_NAME = String.raw `[^\s\u3000()()、。,.「」『』::]`;
|
|
26
|
+
/** 各 pattern の 1 番目の組が行頭の空白、2 番目が覆う範囲、`name` の組が名前。 */
|
|
27
|
+
const SHAPES = [
|
|
28
|
+
{ id: "caps", pattern: new RegExp(String.raw `^(\s*)((?<name>${CAPS_NAME})[.:]?)\s*$`, "u"), alone: true },
|
|
29
|
+
{ id: "caps", pattern: new RegExp(String.raw `^(\s*)((?<name>${CAPS_NAME})[.:])\s+\S`, "u"), alone: false },
|
|
30
|
+
{ id: "mark", pattern: new RegExp(String.raw `^([ \t\u3000]*)([○◯〇](?<name>${JA_NAME}{1,20})(?:([^)\n]*))?)[ \t\u3000]*$`, "u"), alone: true },
|
|
31
|
+
{ id: "mark", pattern: new RegExp(String.raw `^([ \t\u3000]*)([○◯〇](?<name>${JA_NAME}{1,20})(?:([^)\n]*))?\u3000+)\S`, "u"), alone: false },
|
|
32
|
+
{ id: "spaced", pattern: new RegExp(String.raw `^([ \t]*)((?<name>${JA_NAME}{1,10})\u3000+)\S`, "u"), alone: false },
|
|
33
|
+
{ id: "quote", pattern: new RegExp(String.raw `^([ \t]*)((?<name>${JA_NAME}{1,10}))[ \t]*「`, "u"), alone: false },
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* 名前でないもの。番号(数字・漢数字・ローマ数字・「第」で始まる序数・1 字の仮名)は見出しや項目の印で、話し手ではない。
|
|
37
|
+
* 助詞で終わる語は地の文の主語(「私は「…」」)。英字 1 字は、名前より略語や項目の印が多い。
|
|
38
|
+
*/
|
|
39
|
+
const NUMERAL = /^[\d0-9一二三四五六七八九十百千〇IVXLCDM]+(?:の[\d0-9一二三四五六七八九十百千〇]+)*$/u;
|
|
40
|
+
const ORDINAL = /^第[\d0-9一二三四五六七八九十百千〇]/u;
|
|
41
|
+
const DIGIT = /[\d0-9]/u;
|
|
42
|
+
const SINGLE_KANA = /^[\p{Script=Hiragana}\p{Script=Katakana}]$/u;
|
|
43
|
+
const LETTER = /\p{L}/u;
|
|
44
|
+
const PARTICLE_END = /[はがもをにへとでやの]$/u;
|
|
45
|
+
const isName = (shape, name) => LETTER.test(name) &&
|
|
46
|
+
!NUMERAL.test(name.replace(/[\s.'’&-]/gu, "")) &&
|
|
47
|
+
!ORDINAL.test(name) &&
|
|
48
|
+
!DIGIT.test(name) &&
|
|
49
|
+
!SINGLE_KANA.test(name) &&
|
|
50
|
+
!(shape === "quote" && PARTICLE_END.test(name)) &&
|
|
51
|
+
!(shape === "caps" && name.replace(/[^A-Z]/gu, "").length < 2);
|
|
52
|
+
const linesOf = (text) => {
|
|
53
|
+
const scan = { start: 0 };
|
|
54
|
+
return text.split("\n").map((raw) => {
|
|
55
|
+
const line = { start: scan.start, text: raw.replace(/\r$/u, "") };
|
|
56
|
+
scan.start += raw.length + 1;
|
|
57
|
+
return line;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const isBlank = (line) => line === undefined || line.text.trim() === "";
|
|
61
|
+
/** 名前だけの行は、次の行に発言があるときだけ話し手の名前(空行の後の大文字の行は見出し)。 */
|
|
62
|
+
const candidateOf = (lines, index) => {
|
|
63
|
+
const line = lines[index];
|
|
64
|
+
if (line === undefined)
|
|
65
|
+
return undefined;
|
|
66
|
+
return SHAPES.flatMap((shape) => {
|
|
67
|
+
const match = shape.pattern.exec(line.text);
|
|
68
|
+
const lead = match?.[1];
|
|
69
|
+
const label = match?.[2];
|
|
70
|
+
const name = match?.groups?.["name"]?.replace(/[.:]$/u, "");
|
|
71
|
+
if (lead === undefined || label === undefined || name === undefined || !isName(shape.id, name))
|
|
72
|
+
return [];
|
|
73
|
+
if (shape.alone && isBlank(lines[index + 1]))
|
|
74
|
+
return [];
|
|
75
|
+
const start = line.start + lead.length;
|
|
76
|
+
return [{ shape: shape.id, name, span: { start, end: start + label.length } }];
|
|
77
|
+
})[0];
|
|
78
|
+
};
|
|
79
|
+
const countBy = (items, keyOf) => items.reduce((counts, item) => counts.set(keyOf(item), (counts.get(keyOf(item)) ?? 0) + 1), new Map());
|
|
80
|
+
const speakerKey = (candidate) => `${candidate.shape}\n${candidate.name}`;
|
|
81
|
+
/** 形ごとに、MIN_TURNS 回以上出る名前が MIN_SPEAKERS 人以上いるか。 */
|
|
82
|
+
const speakerShapes = (candidates) => {
|
|
83
|
+
const turns = countBy(candidates, speakerKey);
|
|
84
|
+
const speakers = [...new Map(candidates.map((candidate) => [speakerKey(candidate), candidate])).values()];
|
|
85
|
+
const repeated = speakers.filter((speaker) => (turns.get(speakerKey(speaker)) ?? 0) >= MIN_TURNS);
|
|
86
|
+
const perShape = countBy(repeated, (speaker) => speaker.shape);
|
|
87
|
+
return new Set([...perShape].filter(([, count]) => count >= MIN_SPEAKERS).map(([shape]) => shape));
|
|
88
|
+
};
|
|
89
|
+
/** 空行の後から始まる、空でない行のまとまり(段落)の数。 */
|
|
90
|
+
const paragraphCount = (lines) => lines.filter((line, index) => !isBlank(line) && (index === 0 || isBlank(lines[index - 1]))).length;
|
|
91
|
+
/** 話し手の形のうち、その形の行が MIN_DIALOGUE_TURNS 以上あり、段落の MIN_TURN_SHARE 以上を始めるもの。 */
|
|
92
|
+
const dialogueShapes = (candidates, paragraphs) => {
|
|
93
|
+
const turns = countBy(candidates, (candidate) => candidate.shape);
|
|
94
|
+
return new Set([...speakerShapes(candidates)].filter((shape) => {
|
|
95
|
+
const count = turns.get(shape) ?? 0;
|
|
96
|
+
return count >= MIN_DIALOGUE_TURNS && count >= paragraphs * MIN_TURN_SHARE;
|
|
97
|
+
}));
|
|
98
|
+
};
|
|
99
|
+
/** text の中の話し手の名前の範囲。発言は含まない。 */
|
|
100
|
+
export const speakerLabels = (text) => {
|
|
101
|
+
const lines = linesOf(text);
|
|
102
|
+
const candidates = lines.flatMap((_, index) => candidateOf(lines, index) ?? []);
|
|
103
|
+
const shapes = dialogueShapes(candidates, paragraphCount(lines));
|
|
104
|
+
return candidates.filter((candidate) => shapes.has(candidate.shape)).map((candidate) => candidate.span);
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=speaker-labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speaker-labels.js","sourceRoot":"","sources":["../src/speaker-labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Sentence } from "./plugin.ts";
|
|
2
|
+
/** between-phrases は助詞の後ろ(文節の切れ目)、inside-phrase は文節を始められない語の前(助詞・助動詞・名詞に続く「する」)。 */
|
|
3
|
+
export type JointKind = "between-phrases" | "inside-phrase";
|
|
4
|
+
/** offset は前の語の終わり(文書の座標)。before / after は境目の両側の語。 */
|
|
5
|
+
export type Joint = {
|
|
6
|
+
readonly offset: number;
|
|
7
|
+
readonly kind: JointKind;
|
|
8
|
+
readonly spaced: boolean;
|
|
9
|
+
readonly before: string;
|
|
10
|
+
readonly after: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 文の中の、日本語の語と語の境目のうち、空けるか詰めるかを数えるもの。written は本文でないものを覆う前の、文と同じ範囲。
|
|
14
|
+
* 英字・数字との境目は latin-spacing が見るので入れない。
|
|
15
|
+
*/
|
|
16
|
+
export declare const phraseJoints: (sentence: Sentence, written: string) => Joint[];
|
|
17
|
+
//# sourceMappingURL=stray-space.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stray-space.d.ts","sourceRoot":"","sources":["../src/stray-space.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAC;AAIzD,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAE5D,sDAAsD;AACtD,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA6DrJ;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,QAAQ,EAAE,SAAS,MAAM,KAAG,KAAK,EAMvE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { isJapanese } from "./orthography.js";
|
|
2
|
+
import { isWithinAny, quotedIn } from "./quoted-span.js";
|
|
3
|
+
const SPACES = /^[ \u3000]+$/u;
|
|
4
|
+
const PARTICLE = new Set(["ADP", "SCONJ"]);
|
|
5
|
+
// 文節の頭に立てない語。「確認 しました」の「する」は名詞の後ろのときだけ(「し始める」の「し」は動詞の頭に立つ)。
|
|
6
|
+
const BOUND = new Set(["ADP", "SCONJ", "PART", "AUX"]);
|
|
7
|
+
const LIGHT_VERB = "する";
|
|
8
|
+
/**
|
|
9
|
+
* 空白の後ろの「が」を、解析器は文頭の接続詞(「が、」)と読む。一字の接続詞(が・と・や・か)は助詞として扱う。
|
|
10
|
+
* 二字以上(また・なお)は文節を始める接続詞。
|
|
11
|
+
*/
|
|
12
|
+
const isBound = (token) => BOUND.has(token.pos) || (token.pos === "CCONJ" && [...token.surface].length === 1);
|
|
13
|
+
const kindOf = (left, right) => {
|
|
14
|
+
if (isBound(right) || (right.lemma === LIGHT_VERB && left.pos === "NOUN"))
|
|
15
|
+
return "inside-phrase";
|
|
16
|
+
// 名詞どうし(担当 田中、赤坂 文弥、フルデスクトップ モード)は名札・名前・複合語の書き方で、数えない。
|
|
17
|
+
return PARTICLE.has(left.pos) ? "between-phrases" : undefined;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* 行(か文)の頭の語か。助詞は前の語に付くので、行頭の「助詞」(「ヘ」)は項目の記号を読み違えたもので、後ろの空白は記号と本文の区切り。
|
|
21
|
+
* 行頭の内容語(折り返した「確認 しました」の「確認」)は語句の頭なので、ここでは外さない。
|
|
22
|
+
*/
|
|
23
|
+
const isLineHead = (text, at) => text.slice(text.lastIndexOf("\n", at - 1) + 1, at).trim() === "";
|
|
24
|
+
const isWord = (token) => token.surface.trim() !== "";
|
|
25
|
+
const pairsOf = (tokens) => tokens.filter(isWord).flatMap((right, index, words) => {
|
|
26
|
+
const left = words[index - 1];
|
|
27
|
+
return left === undefined ? [] : [{ left, right }];
|
|
28
|
+
});
|
|
29
|
+
// 強調とリンクの括弧。読み手には見えない。
|
|
30
|
+
const CHROME = /[*_~[\]]/gu;
|
|
31
|
+
/**
|
|
32
|
+
* 空けたか詰めたか。間が何も無いか強調・リンクの括弧だけなら詰めた、書き手が書いた空白(半角・全角)だけなら空けた。
|
|
33
|
+
* 括弧の隣の空白(「**…こと** とする」「手順は [README]」)は、日本語の隣で強調が効かない Markdown のための空白なので数えない。
|
|
34
|
+
* 改行(Markdown の改行や、行の折り返し)や、見える字を覆った空白(コード)をまたぐ語も、境目に数えない。
|
|
35
|
+
*/
|
|
36
|
+
const spacing = (sentence, written, pair) => {
|
|
37
|
+
const [from, to] = [pair.left.span.end - sentence.span.start, pair.right.span.start - sentence.span.start];
|
|
38
|
+
const gap = written.slice(from, to);
|
|
39
|
+
if (gap.replace(CHROME, "") === "")
|
|
40
|
+
return false;
|
|
41
|
+
return SPACES.test(gap) ? true : undefined;
|
|
42
|
+
};
|
|
43
|
+
const jointOf = (sentence, written, quoted, pair) => {
|
|
44
|
+
const { left, right } = pair;
|
|
45
|
+
if (!isJapanese(left.surface.at(-1)) || !isJapanese(right.surface.at(0)))
|
|
46
|
+
return undefined;
|
|
47
|
+
const spaced = spacing(sentence, written, pair);
|
|
48
|
+
if (spaced === undefined || isWithinAny(quoted, { start: left.span.start, end: right.span.end }))
|
|
49
|
+
return undefined;
|
|
50
|
+
const kind = kindOf(left, right);
|
|
51
|
+
if (kind === undefined || (kind === "between-phrases" && isLineHead(sentence.text, left.span.start - sentence.span.start)))
|
|
52
|
+
return undefined;
|
|
53
|
+
return { offset: left.span.end, kind, spaced, before: left.surface, after: right.surface };
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* 文の中の、日本語の語と語の境目のうち、空けるか詰めるかを数えるもの。written は本文でないものを覆う前の、文と同じ範囲。
|
|
57
|
+
* 英字・数字との境目は latin-spacing が見るので入れない。
|
|
58
|
+
*/
|
|
59
|
+
export const phraseJoints = (sentence, written) => {
|
|
60
|
+
const quoted = quotedIn(sentence);
|
|
61
|
+
return pairsOf(sentence.tokens ?? []).flatMap((pair) => {
|
|
62
|
+
const joint = jointOf(sentence, written, quoted, pair);
|
|
63
|
+
return joint === undefined ? [] : [joint];
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=stray-space.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stray-space.js","sourceRoot":"","sources":["../src/stray-space.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relative-resolve.d.ts","sourceRoot":"","sources":["../../src/structure/relative-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"relative-resolve.d.ts","sourceRoot":"","sources":["../../src/structure/relative-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA4NlD,eAAO,MAAM,eAAe,GAAI,MAAM,aAAa,EAAE,eAAe,MAAM,GAAG,SAAS,KAAG,aAGxF,CAAC"}
|
|
@@ -68,22 +68,22 @@ const continued = (level, node, context) => {
|
|
|
68
68
|
return undefined;
|
|
69
69
|
const parts = origin.target.split(".");
|
|
70
70
|
const kept = level - context.articleLevel + 1;
|
|
71
|
-
return parts.length < kept ? undefined : { target: parts.slice(0, kept).join(".")
|
|
71
|
+
return parts.length < kept ? undefined : { ...origin, target: parts.slice(0, kept).join(".") };
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
74
74
|
* 参照が名指しした深さを覚える。名指しは、書き出しの深さ(第〇条なら条、前項なら項)から番地の深さまで。
|
|
75
75
|
* 番地を深さで切る起点は条。条より外のまとまりは番地の形が違うので覚えない。
|
|
76
76
|
*/
|
|
77
|
-
const remember = (context,
|
|
77
|
+
const remember = (context, reference, from) => {
|
|
78
78
|
const articleLevel = context.articleLevel;
|
|
79
79
|
// 章・節は番地の形(ch1)が条から始まらないので覚えない。覚えると「同条」が章を指してしまう。
|
|
80
80
|
if (articleLevel === undefined || from < articleLevel)
|
|
81
81
|
return;
|
|
82
|
-
const parts = target.split(".");
|
|
82
|
+
const parts = reference.target.split(".");
|
|
83
83
|
parts.forEach((_, index) => {
|
|
84
84
|
const level = articleLevel + index;
|
|
85
85
|
if (level >= from)
|
|
86
|
-
context.last.set(level, { target: parts.slice(0, index + 1).join(".")
|
|
86
|
+
context.last.set(level, { ...reference, target: parts.slice(0, index + 1).join(".") });
|
|
87
87
|
});
|
|
88
88
|
};
|
|
89
89
|
/** 「第二項第三号」を足す。一つ深いものは続け、二つ深い号は番号の無い第 1 項の中(x.1.n)に置く。 */
|
|
@@ -112,12 +112,16 @@ const baseOf = (way, node, anchor, last, context) => {
|
|
|
112
112
|
}
|
|
113
113
|
return anchor === undefined ? undefined : byPosition(way, Number(node.attrs["count"]), anchor);
|
|
114
114
|
};
|
|
115
|
-
/**
|
|
116
|
-
const
|
|
115
|
+
/** 同と並びの続きは、元の参照が指した文書を引き継ぐ。前・次・本はこの文書の中。 */
|
|
116
|
+
const citedOf = (way, node, last, context) => {
|
|
117
117
|
if (way === "same")
|
|
118
|
-
return last
|
|
119
|
-
return way === "continue" ? continued(Number(node.attrs["level"]), node, context)
|
|
118
|
+
return last;
|
|
119
|
+
return way === "continue" ? continued(Number(node.attrs["level"]), node, context) : undefined;
|
|
120
120
|
};
|
|
121
|
+
const citedAttrs = (cited) => ({
|
|
122
|
+
...(cited?.document === undefined ? {} : { document: cited.document }),
|
|
123
|
+
...(cited?.unitWord === undefined ? {} : { unitWord: cited.unitWord }),
|
|
124
|
+
});
|
|
121
125
|
const resolveOne = (node, path, context) => {
|
|
122
126
|
const way = String(node.attrs["relative"]);
|
|
123
127
|
const level = Number(node.attrs["level"]);
|
|
@@ -128,12 +132,11 @@ const resolveOne = (node, path, context) => {
|
|
|
128
132
|
if (place === undefined)
|
|
129
133
|
return undefined;
|
|
130
134
|
const fallback = fallbackOf(place, context.implicitLevel);
|
|
131
|
-
const document = documentOf(way, node, last, context);
|
|
132
135
|
const attrs = {
|
|
133
136
|
target: place.address,
|
|
134
137
|
label: String(node.attrs["label"]),
|
|
135
138
|
...(fallback === undefined ? {} : { fallback }),
|
|
136
|
-
...(
|
|
139
|
+
...citedAttrs(citedOf(way, node, last, context)),
|
|
137
140
|
};
|
|
138
141
|
return { ...node, attrs };
|
|
139
142
|
};
|
|
@@ -142,19 +145,17 @@ const isRelative = (node) => node.kind === "reference" && node.attrs["relative"]
|
|
|
142
145
|
const walk = (node, path, context) => {
|
|
143
146
|
if (isRelative(node)) {
|
|
144
147
|
const resolved = resolveOne(node, path, context);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
remember(context, target, document, Number(node.attrs["names"] ?? node.attrs["level"]));
|
|
148
|
+
if (resolved === undefined)
|
|
149
|
+
return undefined;
|
|
150
|
+
const reference = lastOf(resolved);
|
|
151
|
+
context.byStart.set(node.span.start, reference);
|
|
152
|
+
remember(context, reference, Number(node.attrs["names"] ?? node.attrs["level"]));
|
|
151
153
|
return resolved;
|
|
152
154
|
}
|
|
153
155
|
if (node.kind === "reference") {
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
context
|
|
157
|
-
remember(context, target, document, context.articleLevel ?? 0);
|
|
156
|
+
const reference = lastOf(node);
|
|
157
|
+
context.byStart.set(node.span.start, reference);
|
|
158
|
+
remember(context, reference, context.articleLevel ?? 0);
|
|
158
159
|
}
|
|
159
160
|
const inside = [...path, node];
|
|
160
161
|
const children = node.children.flatMap((child) => {
|
|
@@ -164,6 +165,11 @@ const walk = (node, path, context) => {
|
|
|
164
165
|
return { ...node, children };
|
|
165
166
|
};
|
|
166
167
|
const optional = (value) => (value === undefined ? undefined : String(value));
|
|
168
|
+
const lastOf = (reference) => ({
|
|
169
|
+
target: String(reference.attrs["target"]),
|
|
170
|
+
document: optional(reference.attrs["document"]),
|
|
171
|
+
unitWord: optional(reference.attrs["unitWord"]),
|
|
172
|
+
});
|
|
167
173
|
const articlesOf = (node) => {
|
|
168
174
|
const place = node.kind === "article" ? placeOf(node) : undefined;
|
|
169
175
|
return [...(place === undefined ? [] : [place]), ...node.children.flatMap(articlesOf)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relative-resolve.js","sourceRoot":"","sources":["../../src/structure/relative-resolve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relative-resolve.js","sourceRoot":"","sources":["../../src/structure/relative-resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/team-names.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-names.d.ts","sourceRoot":"","sources":["../src/team-names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"team-names.d.ts","sourceRoot":"","sources":["../src/team-names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AA2BxC;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,KAAG,IAAI,EAIpE,CAAC;AAEJ,yCAAyC;AACzC,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,IAAI,EAAE,EAAE,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,OAAqE,CAAC"}
|
package/dist/team-names.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mergeSpans } from "./span-merge.js";
|
|
1
2
|
const SPACE = /\s/u;
|
|
2
3
|
const ESCAPE = /[.*+?^${}()|[\]\\]/gu;
|
|
3
4
|
const WHITESPACE_RUN = String.raw `\s+`;
|
|
@@ -6,29 +7,25 @@ const WRAP = String.raw `(?:\r?\n[ \t]*)?`;
|
|
|
6
7
|
const patternOf = (name) => {
|
|
7
8
|
const pieces = Array.from(name.trim()).reduce((acc, char) => {
|
|
8
9
|
const previous = acc.at(-1);
|
|
9
|
-
if (SPACE.test(char))
|
|
10
|
-
|
|
10
|
+
if (SPACE.test(char)) {
|
|
11
|
+
if (previous !== WHITESPACE_RUN)
|
|
12
|
+
acc.push(WHITESPACE_RUN);
|
|
13
|
+
return acc;
|
|
14
|
+
}
|
|
11
15
|
const escaped = char.replace(ESCAPE, "\\$&");
|
|
12
|
-
|
|
16
|
+
if (previous !== undefined && previous !== WHITESPACE_RUN)
|
|
17
|
+
acc.push(WRAP);
|
|
18
|
+
acc.push(escaped);
|
|
19
|
+
return acc;
|
|
13
20
|
}, []);
|
|
14
21
|
return new RegExp(pieces.join(""), "gu");
|
|
15
22
|
};
|
|
16
23
|
const occurrences = (text, name) => name.trim().length === 0 ? [] : [...text.matchAll(patternOf(name))].map((match) => ({ start: match.index, end: match.index + match[0].length }));
|
|
17
|
-
const merged = (spans) => spans
|
|
18
|
-
.toSorted((left, right) => left.start - right.start)
|
|
19
|
-
.reduce((acc, span) => {
|
|
20
|
-
const last = acc.at(-1);
|
|
21
|
-
if (last !== undefined && span.start < last.end)
|
|
22
|
-
acc[acc.length - 1] = { start: last.start, end: Math.max(last.end, span.end) };
|
|
23
|
-
else
|
|
24
|
-
acc.push(span);
|
|
25
|
-
return acc;
|
|
26
|
-
}, []);
|
|
27
24
|
/**
|
|
28
25
|
* チームが chaff.yaml の names に並べた名前が、text のどこにあるか。綴りは書かれたとおり(Apple と apple は別)。
|
|
29
26
|
* 重なる出現は 1 つの範囲にまとめる。接するだけなら別の名前(並んだ 2 つの名前は 2 つと数える)。位置は text の先頭を 0 とする。
|
|
30
27
|
*/
|
|
31
|
-
export const nameSpans = (text, names) =>
|
|
28
|
+
export const nameSpans = (text, names) => mergeSpans(names.flatMap((name) => occurrences(text, name)), false);
|
|
32
29
|
/** [start, end) が names の範囲のどれかと重なるか。 */
|
|
33
30
|
export const touchesAny = (spans, start, end) => spans.some((span) => start < span.end && span.start < end);
|
|
34
31
|
//# sourceMappingURL=team-names.js.map
|
package/dist/team-names.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-names.js","sourceRoot":"","sources":["../src/team-names.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"team-names.js","sourceRoot":"","sources":["../src/team-names.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,KAAK,GAAG,KAAK,CAAC;AACpB,MAAM,MAAM,GAAG,sBAAsB,CAAC;AACtC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA,KAAK,CAAC;AACvC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA,kBAAkB,CAAC;AAE1C,wDAAwD;AACxD,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACpE,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,QAAQ,KAAK,cAAc;gBAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,cAAc;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CACzD,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEnJ;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAwB,EAAU,EAAE,CAC1E,UAAU,CACR,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAChD,KAAK,CACN,CAAC;AAEJ,yCAAyC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,KAAa,EAAE,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC"}
|
package/genres.yaml
CHANGED
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
# A group's rules apply to every genre in it; a genre's own rules win over its group's.
|
|
6
6
|
# A rule turned off here is listed under "did not run" with the genre as the reason.
|
|
7
7
|
# profile: the document profile (profiles/*.yaml) this genre reads with, when chaff.yaml names none.
|
|
8
|
+
# suggest: when no genre is set, what makes a file look like this genre, strongest first:
|
|
9
|
+
# paths (the file's path), then per language an opening (the body's first line, past front matter and
|
|
10
|
+
# headings) or a line with min_lines (how many lines must have that shape). A wrong suggestion misleads
|
|
11
|
+
# more than none, so a cue is added only where the corpus shows it does not fire on other kinds.
|
|
8
12
|
# Which genres a rule applies to at all is the rule's use_for; the numbers behind a level are the rule's by_genre.
|
|
9
13
|
|
|
10
14
|
groups:
|
|
@@ -106,6 +110,7 @@ groups:
|
|
|
106
110
|
no-mixed-desumasu: off
|
|
107
111
|
contraction-consistency: off
|
|
108
112
|
doubled-word: off
|
|
113
|
+
agreement-slip: off
|
|
109
114
|
agentless-passive: off
|
|
110
115
|
expletive-construction: off
|
|
111
116
|
excessive-hedging: off
|
|
@@ -191,6 +196,11 @@ genres:
|
|
|
191
196
|
summary:
|
|
192
197
|
ja: 仕事のメールと手紙
|
|
193
198
|
en: Work email and letters
|
|
199
|
+
# A letter is a letter even when it encloses an agreement (an offer letter), so it goes by how it opens.
|
|
200
|
+
# Not by an addressee line (〇〇御中, To: ...): quotes and proposals open with one too.
|
|
201
|
+
suggest:
|
|
202
|
+
ja: { opening: "^(?:拝啓|謹啓|前略)(?:\\s|$)|^件名\\s*[::]" }
|
|
203
|
+
en: { opening: "^(?:Dear [^\\n]{1,60}|To whom it may concern)[,:]?$|^Subject\\s*:" }
|
|
194
204
|
- id: business/press-release
|
|
195
205
|
name: { ja: プレスリリース・お知らせ, en: Press release and notice }
|
|
196
206
|
summary:
|
|
@@ -232,6 +242,14 @@ genres:
|
|
|
232
242
|
paths: ["(^|/)(laws?|statutes?|regulations?|kitei|kisoku)(/|[-_.])"]
|
|
233
243
|
ja: { line: "(?:この|本)(?:法律|政令|省令|府令|規則|規程|条例|定款|通達)", min_lines: 2 }
|
|
234
244
|
en: { line: "\\b(?:[Tt]his (?:Act|[Pp]art|[Ss]ubpart|[Rr]egulation)|[Tt]hese [Rr]egulations)\\b|^§\\s?\\d", min_lines: 3 }
|
|
245
|
+
# A statute or an internal rule is read article by article against its own numbers, like a contract.
|
|
246
|
+
# The statutes in the corpus (yarn corpus) give these no findings, deleted articles (第三条 削除) and 第十条の二 included.
|
|
247
|
+
rules:
|
|
248
|
+
numbering-gap: normal
|
|
249
|
+
duplicate-definition: normal
|
|
250
|
+
dangling-reference: normal
|
|
251
|
+
date-weekday-mismatch: normal
|
|
252
|
+
total-mismatch: normal
|
|
235
253
|
- id: legal/judgment
|
|
236
254
|
name: { ja: 判決, en: Court decision }
|
|
237
255
|
summary:
|
|
@@ -253,10 +271,9 @@ genres:
|
|
|
253
271
|
summary:
|
|
254
272
|
ja: 使い方の説明・手順書・ヘルプ
|
|
255
273
|
en: User guides, how-to pages and help
|
|
274
|
+
# Path only: step and procedure headings are as common in tech blogs and specifications as in manuals.
|
|
256
275
|
suggest:
|
|
257
276
|
paths: ["(^|/)(manuals?|guides?|how-?tos?|help|tutorials?|user-?guides?)(/|[-_.])"]
|
|
258
|
-
ja: { line: "^#{1,6}\\s.*(?:手順|操作方法|設定方法)", min_lines: 2 }
|
|
259
|
-
en: { line: "^#{1,6}\\s*(?:Steps?\\b|Step \\d|Prerequisites|Before you begin|Troubleshooting)", min_lines: 2 }
|
|
260
277
|
- id: docs/faq
|
|
261
278
|
name: { ja: よくある質問, en: FAQ }
|
|
262
279
|
summary:
|
|
@@ -275,6 +292,11 @@ genres:
|
|
|
275
292
|
paths: ["(^|/)(glossary|glossaries|yogo|用語集)(/|[-_.])"]
|
|
276
293
|
ja: { line: "^#{1,6}\\s*用語集", min_lines: 1 }
|
|
277
294
|
en: { line: "^#{1,6}\\s*Glossary\\b", min_lines: 1 }
|
|
295
|
+
# A reader looks up one entry and reads only that. A definition is a noun phrase (風の吹いてくる方向。), and sibling
|
|
296
|
+
# entries share one wording on purpose (Portion of labor productivity change attributed to …), which no reader sees twice.
|
|
297
|
+
rules:
|
|
298
|
+
taigen-dome-in-prose: off
|
|
299
|
+
ngram-repetition: off
|
|
278
300
|
- id: academic/paper
|
|
279
301
|
name: { ja: 論文, en: Academic paper }
|
|
280
302
|
summary:
|
|
@@ -293,8 +315,11 @@ genres:
|
|
|
293
315
|
summary:
|
|
294
316
|
ja: 小説・物語
|
|
295
317
|
en: Novels and stories
|
|
318
|
+
# A line that is a spoken line (「…」, or 「…」と云った): a sentence in quotes, not a term being defined
|
|
319
|
+
# (「…」とは, 「…」という, 「…」とする, 「…」と定める, 「…」と称する, 「…」と呼ぶ).
|
|
296
320
|
suggest:
|
|
297
321
|
paths: ["(^|/)(novels?|fiction|stories|shosetsu)(/|[-_.])"]
|
|
322
|
+
ja: { line: "^「[^」]+」と(?!は|い[うい]|する|定め|称|呼)|^「[^」]*[、。?!…―][^」]*」$", min_lines: 10 }
|
|
298
323
|
- id: literature/essay
|
|
299
324
|
name: { ja: 随筆, en: Literary essay }
|
|
300
325
|
summary:
|
|
@@ -305,15 +330,21 @@ genres:
|
|
|
305
330
|
summary:
|
|
306
331
|
ja: 詩・短歌・俳句
|
|
307
332
|
en: Poems and verse
|
|
333
|
+
# Verse lines: short lines with no sentence punctuation (a tanka's three lines; a capitalised line of English verse).
|
|
334
|
+
# A glossary or a list of names has short lines too, so it takes many of them.
|
|
308
335
|
suggest:
|
|
309
336
|
paths: ["(^|/)(poems?|poetry|tanka|haiku)(/|[-_.])"]
|
|
337
|
+
ja: { line: "^(?=.*[ぁ-ゖ])[ぁ-ゖゝゞァ-ヺー-ヾ一-鿿々〆]{3,20}$", min_lines: 40 }
|
|
338
|
+
en: { line: "^\\s{0,8}[A-Z][a-z’']*,? [^.#|*\\[\\]()<>:0-9]{6,50}[a-z,;!?’—-]$", min_lines: 80 }
|
|
310
339
|
- id: literature/play
|
|
311
340
|
name: { ja: 戯曲・脚本, en: Play and script }
|
|
312
341
|
summary:
|
|
313
342
|
ja: 戯曲・脚本
|
|
314
343
|
en: Plays and scripts
|
|
344
|
+
# A speaker's name before the line: 妻 あたしは… (two ideographic spaces; a statute's 第一条 has one), ALGERNON.
|
|
315
345
|
suggest:
|
|
316
346
|
paths: ["(^|/)(plays?|screenplays?|kyakuhon)(/|[-_.])"]
|
|
347
|
+
ja: { line: "^[^\\s○◯●※・]{1,6} \\S", min_lines: 20 }
|
|
317
348
|
en: { line: "^[A-Z][A-Z '-]{2,}\\.$", min_lines: 10 }
|
|
318
349
|
- id: speech/address
|
|
319
350
|
name: { ja: スピーチ・挨拶, en: Speech }
|
|
@@ -349,6 +380,7 @@ genres:
|
|
|
349
380
|
no-mixed-desumasu: off
|
|
350
381
|
contraction-consistency: off
|
|
351
382
|
doubled-word: off
|
|
383
|
+
agreement-slip: off
|
|
352
384
|
sasete-itadaku: off
|
|
353
385
|
double-keigo: off
|
|
354
386
|
cushion-phrase-density: off
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chaffjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Prose validation harness. Finds what is hard to read, and never rewrites it for you.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chaff",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@anthropic-ai/sdk": "^0.125.0",
|
|
58
|
-
"@chaffjs/lang-en": "0.
|
|
59
|
-
"@chaffjs/lang-ja": "0.
|
|
58
|
+
"@chaffjs/lang-en": "0.15.0",
|
|
59
|
+
"@chaffjs/lang-ja": "0.16.0",
|
|
60
60
|
"mdast-util-from-markdown": "^2.0.3",
|
|
61
61
|
"mdast-util-frontmatter": "^2.0.1",
|
|
62
62
|
"mdast-util-gfm-table": "^2.0.0",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: agreement-slip
|
|
2
|
+
layer: L3
|
|
3
|
+
status: experimental
|
|
4
|
+
how_to_find: agreement-slip
|
|
5
|
+
requires: [pos]
|
|
6
|
+
languages: [en]
|
|
7
|
+
extra_word_lists: [singular-determiner, plural-determiner, invariant-noun, count-adjective, dependent-possessive, finite-auxiliary, misnumbered-phrase]
|
|
8
|
+
severity: warning
|
|
9
|
+
|
|
10
|
+
name:
|
|
11
|
+
ja: 語の形が合っていない
|
|
12
|
+
en: Words that do not agree
|
|
13
|
+
|
|
14
|
+
why:
|
|
15
|
+
ja: 「a significant changes」「these new version」のように限定詞と名詞の単数・複数が食い違う文や、「Your can check」のように所有の語が主語の位置にある文は、書き換えの途中で片方だけ直した跡です。読み手はつまずき、急いで書いた文書に見えます。解析器の読みが一通りに決まる形だけを数え、単数と複数が同じ綴りの語(series / data)、代名詞にも読める this / these の直後の語、名詞を重ねた語(a sales team)は数えていません。
|
|
16
|
+
en: A determiner and a noun that differ in number ("a significant changes", "these new version"), or a possessive where the subject belongs ("Your can check"), is left over from an edit that fixed one word and not the other. The reader stumbles, and the document looks rushed. Only forms with one reading are counted; nouns spelled alike in both numbers ("series", "data"), a word right after "this" or "these" (which can stand alone), and nouns that modify another noun ("a sales team") are not.
|
|
17
|
+
|
|
18
|
+
message:
|
|
19
|
+
ja: 「{word}」で単数と複数が合っていません
|
|
20
|
+
en: '"{word}" mixes singular and plural'
|
|
21
|
+
|
|
22
|
+
messages:
|
|
23
|
+
number:
|
|
24
|
+
ja: 「{word}」で単数と複数が合っていません
|
|
25
|
+
en: '"{word}" mixes singular and plural'
|
|
26
|
+
possessive:
|
|
27
|
+
ja: 「{word}」で、所有の語が主語の位置にあります
|
|
28
|
+
en: '"{word}" puts a possessive where the subject belongs'
|
|
29
|
+
|
|
30
|
+
how_to_fix:
|
|
31
|
+
ja: 限定詞か名詞のどちらかに揃えてください(a significant change / significant changes)。所有の語なら、主語の語に直してください(Your can → You can、their is → there is)。
|
|
32
|
+
en: Make the determiner and the noun agree ("a significant change" or "significant changes"). For a possessive, write the subject you meant ("Your can" becomes "You can", "their is" becomes "there is").
|
|
33
|
+
|
|
34
|
+
levels: { strict: 1, normal: 1, relaxed: 1 }
|
|
35
|
+
|
|
36
|
+
use_for: [blog, business, technical, legal, docs, academic, literature, speech]
|