@echogarden/text-segmentation 0.2.1 → 0.3.1

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/README.md CHANGED
@@ -30,7 +30,7 @@ npm install @echogarden/icu-segmentation-wasm
30
30
  import { splitToWords } from '@echogarden/text-segmentation'
31
31
 
32
32
  const wordSequence: WordSequence =
33
- await splitToWords('Hello, world! How are you doing today?', { language: 'en' })
33
+ await splitToWords('Hello, world! How are you doing today?', { language: 'en' })
34
34
 
35
35
  console.log(wordSequence.words)
36
36
  ```
@@ -64,22 +64,22 @@ prints a list of objects, including metadata on each word:
64
64
 
65
65
  ```ts
66
66
  [
67
- { text: 'Hello', startOffset: 0, endOffset: 5, isPunctuation: false },
68
- { text: ',', startOffset: 5, endOffset: 6, isPunctuation: true },
69
- { text: ' ', startOffset: 6, endOffset: 7, isPunctuation: true },
70
- { text: 'world', startOffset: 7, endOffset: 12, isPunctuation: false },
71
- { text: '!', startOffset: 12, endOffset: 13, isPunctuation: true },
72
- { text: ' ', startOffset: 13, endOffset: 14, isPunctuation: true },
73
- { text: 'How', startOffset: 14, endOffset: 17, isPunctuation: false },
74
- { text: ' ', startOffset: 17, endOffset: 18, isPunctuation: true },
75
- { text: 'are', startOffset: 18, endOffset: 21, isPunctuation: false },
76
- { text: ' ', startOffset: 21, endOffset: 22, isPunctuation: true },
77
- { text: 'you', startOffset: 22, endOffset: 25, isPunctuation: false },
78
- { text: ' ', startOffset: 25, endOffset: 26, isPunctuation: true },
79
- { text: 'doing', startOffset: 26, endOffset: 31, isPunctuation: false },
80
- { text: ' ', startOffset: 31, endOffset: 32, isPunctuation: true },
81
- { text: 'today', startOffset: 32, endOffset: 37, isPunctuation: false },
82
- { text: '?', startOffset: 37, endOffset: 38, isPunctuation: true }
67
+ { text: 'Hello', startOffset: 0, endOffset: 5, isPunctuation: false },
68
+ { text: ',', startOffset: 5, endOffset: 6, isPunctuation: true },
69
+ { text: ' ', startOffset: 6, endOffset: 7, isPunctuation: true },
70
+ { text: 'world', startOffset: 7, endOffset: 12, isPunctuation: false },
71
+ { text: '!', startOffset: 12, endOffset: 13, isPunctuation: true },
72
+ { text: ' ', startOffset: 13, endOffset: 14, isPunctuation: true },
73
+ { text: 'How', startOffset: 14, endOffset: 17, isPunctuation: false },
74
+ { text: ' ', startOffset: 17, endOffset: 18, isPunctuation: true },
75
+ { text: 'are', startOffset: 18, endOffset: 21, isPunctuation: false },
76
+ { text: ' ', startOffset: 21, endOffset: 22, isPunctuation: true },
77
+ { text: 'you', startOffset: 22, endOffset: 25, isPunctuation: false },
78
+ { text: ' ', startOffset: 25, endOffset: 26, isPunctuation: true },
79
+ { text: 'doing', startOffset: 26, endOffset: 31, isPunctuation: false },
80
+ { text: ' ', startOffset: 31, endOffset: 32, isPunctuation: true },
81
+ { text: 'today', startOffset: 32, endOffset: 37, isPunctuation: false },
82
+ { text: '?', startOffset: 37, endOffset: 38, isPunctuation: true }
83
83
  ]
84
84
  ```
85
85
 
@@ -87,13 +87,13 @@ prints a list of objects, including metadata on each word:
87
87
 
88
88
  ```ts
89
89
  const result: SegmentationResult =
90
- await segmentText(`Hello, world! How are you doing today?`)
90
+ await segmentText(`Hello, world! How are you doing today?`)
91
91
  ```
92
92
 
93
93
  `result` is a nested object containing a breakdown of sentences, phrases and words in the given text. It is described by these TypeScript types:
94
94
  ```ts
95
95
  interface SegmentationResult {
96
- wordSequence: WordSequence
96
+ words: WordSequence
97
97
  sentences: Sentence[]
98
98
  }
99
99
 
@@ -101,7 +101,7 @@ interface Sentence {
101
101
  text: string
102
102
  charRange: Range
103
103
  wordRange: Range
104
- wordSequence: WordSequence
104
+ words: WordSequence
105
105
 
106
106
  phrases: Phrase[]
107
107
  }
@@ -110,7 +110,7 @@ interface Phrase {
110
110
  text: string
111
111
  charRange: Range
112
112
  wordRange: Range
113
- wordSequence: WordSequence
113
+ words: WordSequence
114
114
  }
115
115
 
116
116
  interface Range {
@@ -140,12 +140,18 @@ There are several types of accepted patterns, evaluated in this order:
140
140
  * Language-specific suppressions. For example, in English it would include abbreviations like `Mr.`, `Mrs.`, `e.g.`, `i.e`, `etc.`, or contractions like and `'cause`, `'bout` in English, `'n` in Afrikaans
141
141
  * Noun suppressions, shared in all languages, like names of brands, misc. abbreviations and programming languages. Examples: `C#`, `F#`, `C++`, `Yahoo!`, `Toys"R"Us`, `Dunkin'`, `Ke$ha`, `Sky+`, `I/O`, `A/C`, `A/V`
142
142
  * Top-level domains, like `.com`, `.org`, `.net` (also doubling as the noun `.NET` as in the ".NET framework")
143
- * Number patterns, consisting of a sequences of digits separated by various separator characters, like decimal separators `3.14`, `3,14`, and thousands separators like `233,421` (`,`), `233.421` (`.`) or `233 421` (` `). optional `-` or `+` signs like `-34,534.123`, `+43 345,344`
144
- * Date, time, and phone number patterns, consisting of digits separated by characters like `/`, `:`, `-`, like `15:23:23`, `1953/11/06`, `64-534-756`
145
- * Percentage patterns, which are a subset of number patterns preceded or followed by `%`, like `53.243%` or `%34.12`
143
+ * Number patterns, consisting of a sequences of digits separated by various separator characters, like decimal separators `3.14`, `3,14`, and thousands separators like `233,421` (`,`), `233.421` (`.`) or `233 421` (` `). optional `-` or `+` signs like `-34,534.123`, `+43 345,344`, or scientific notation like `1.554e-34`
144
+ * Time patterns like `15:12` and `06:34:23`
145
+ * Date patterns like `10/15/2021` (currently disabled)
146
+ * Dimension patterns like `53x545x76`
147
+ * Percentage patterns, which are number patterns preceded or followed by `%`, like `53.243%` or `%34.12`
146
148
  * Currency patterns like `$101.25`, `€50`, `20£`, `-53.23¥`, which, like percentage patterns, are number patterns preceded or followed by a currency symbol
149
+ * Emojis like 😄, 🎉, 👨‍👩‍👧‍👦
147
150
  * Abbreviation patterns like `Y.M.C.A`: these patterns will be automatically matched (no special suppressions needed) if there is a sequence of single `.` alternating between single letters (like `x.y.z`), optionally, there may be a space between the characters, like `x. y. z.`
148
- * **And finally** (but most importantly): word character sequences consisting of letter characters (Unicode category `Letter`), mark characters (Unicode category `Mark`) or digit characters (Unicode category `Decimal_Number`), which may include inner apostrophes like `'` and `’` and inner separators like `-`, `_` `·`
151
+ * Dot connected word sequences like `abc.def.g12`
152
+ * Underscore connected word sequence `abc_def_g12`
153
+ * Interpunct connected word sequence `abc·def·g12`
154
+ * **And finally**: word character sequences consisting of letter characters (Unicode category `Letter`), mark characters (Unicode category `Mark`) or digit characters (Unicode category `Decimal_Number`), which may include inner apostrophes like `'` and `’` and inner separators like `-`, `_` `·`
149
155
 
150
156
  **Current limitations**:
151
157
  * No current general identification of preceding or trailing apostrophes, like in English possessive plurals "The brothers' friend" or "The diplomats' contracts". **Reason**: this requires a large lexicon or more sophisticated language understanding, since the apostrophe is generally ambiguous with a single quote.
@@ -1,7 +1 @@
1
- export declare const chineseCharacterRanges: import("regexp-composer").AnyOf;
2
- export declare const japaneseHiraganaCharacterRanges: import("regexp-composer").AnyOf;
3
- export declare const japaneseKatakanaCharacterRanges: import("regexp-composer").AnyOf;
4
- export declare const thaiLetterRanges: import("regexp-composer").AnyOf;
5
- export declare const khmerLetterRanges: import("regexp-composer").AnyOf;
6
- export declare const eastAsianCharRanges: import("regexp-composer").AnyOf;
7
1
  export declare const eastAsianCharRangesRegExp: RegExp;
@@ -1,14 +1,14 @@
1
1
  import { anyOf, buildRegExp, codepointRange } from 'regexp-composer';
2
- export const chineseCharacterRanges = anyOf(codepointRange('4E00', '9FFF'), // Main
2
+ const chineseCharacterRanges = anyOf(codepointRange('4E00', '9FFF'), // Main
3
3
  codepointRange('3400', '4DBF'), // CJK Unified Ideographs Extension A
4
4
  codepointRange('20000', '2A6DF') // CJK Unified Ideographs Extension B
5
5
  );
6
- export const japaneseHiraganaCharacterRanges = anyOf(codepointRange('3040', '309F'), // Hiragana
6
+ const japaneseHiraganaCharacterRanges = anyOf(codepointRange('3040', '309F'), // Hiragana
7
7
  codepointRange('1AFF0', '1AFFF'), // Kana Extended-B
8
8
  codepointRange('1B000', '1B0FF'), // Kana Supplement
9
9
  codepointRange('1B100', '1B12F'), // Kana Extended-A
10
10
  codepointRange('1B130', '1B16F'));
11
- export const japaneseKatakanaCharacterRanges = anyOf(codepointRange('30A0', '30FF'), // Katakana
11
+ const japaneseKatakanaCharacterRanges = anyOf(codepointRange('30A0', '30FF'), // Katakana
12
12
  codepointRange('31F0', '31FF'), // Katakana Phonetic Extensions
13
13
  codepointRange('3200', '32FF'), // Enclosed CJK Letters and Months
14
14
  codepointRange('FF00', 'FFEF'), // Halfwidth and Fullwidth Forms
@@ -16,9 +16,9 @@ codepointRange('1AFF0', '1AFFF'), // Kana Extended-B
16
16
  codepointRange('1B000', '1B0FF'), // Kana Supplement
17
17
  codepointRange('1B100', '1B12F'), // Kana Extended-A
18
18
  codepointRange('1B130', '1B16F'));
19
- export const thaiLetterRanges = anyOf(codepointRange('0E00', '0E7F'));
20
- export const khmerLetterRanges = anyOf(codepointRange('1780', '17FF'), // Letters
19
+ const thaiLetterRanges = anyOf(codepointRange('0E00', '0E7F'));
20
+ const khmerLetterRanges = anyOf(codepointRange('1780', '17FF'), // Letters
21
21
  codepointRange('19E0', '19FF'));
22
- export const eastAsianCharRanges = anyOf(chineseCharacterRanges, japaneseHiraganaCharacterRanges, japaneseKatakanaCharacterRanges, thaiLetterRanges, khmerLetterRanges);
22
+ const eastAsianCharRanges = anyOf(chineseCharacterRanges, japaneseHiraganaCharacterRanges, japaneseKatakanaCharacterRanges, thaiLetterRanges, khmerLetterRanges);
23
23
  export const eastAsianCharRangesRegExp = buildRegExp(eastAsianCharRanges);
24
24
  //# sourceMappingURL=EastAsianCharacterPatterns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EastAsianCharacterPatterns.js","sourceRoot":"","sources":["../src/EastAsianCharacterPatterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAC1C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;AACvC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,qCAAqC;AACrE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,qCAAqC;CACtE,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CACnD,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;AAC3C,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAChC,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CACnD,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;AAC3C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,+BAA+B;AAC/D,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,kCAAkC;AAClE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,gCAAgC;AAChE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAChC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CACpC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAC9B,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CACrC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;AAC1C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAC9B,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CACvC,sBAAsB,EACtB,+BAA+B,EAC/B,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,CACjB,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAA"}
1
+ {"version":3,"file":"EastAsianCharacterPatterns.js","sourceRoot":"","sources":["../src/EastAsianCharacterPatterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEpE,MAAM,sBAAsB,GAAG,KAAK,CACnC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;AACvC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,qCAAqC;AACrE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,qCAAqC;CACtE,CAAA;AAED,MAAM,+BAA+B,GAAG,KAAK,CAC5C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;AAC3C,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAChC,CAAA;AAED,MAAM,+BAA+B,GAAG,KAAK,CAC5C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;AAC3C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,+BAA+B;AAC/D,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,kCAAkC;AAClE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,gCAAgC;AAChE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB;AACpD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAChC,CAAA;AAED,MAAM,gBAAgB,GAAG,KAAK,CAC7B,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAC9B,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,CAC9B,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;AAC1C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAC9B,CAAA;AAED,MAAM,mBAAmB,GAAG,KAAK,CAChC,sBAAsB,EACtB,+BAA+B,EAC/B,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,CACjB,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAA"}
@@ -1,34 +1,9 @@
1
1
  export declare function buildWordOrNumberPattern(suppressions: string[]): import("regexp-composer").AnyOf;
2
2
  export declare function buildSuppressionPattern(suppressions: string[]): import("regexp-composer").Pattern;
3
- export declare const punctuationPattern: import("regexp-composer").SpecialToken;
4
- export declare const digitPattern: import("regexp-composer").SpecialToken;
5
- export declare const arabicNumeralPattern: import("regexp-composer").SpecialToken;
6
- export declare const numericSeparatorPattern: import("regexp-composer").Pattern;
7
- export declare const dateTimeSeparatorPattern: import("regexp-composer").Pattern;
8
- export declare const dateTimePattern: import("regexp-composer").OneOrMore;
9
- export declare const spacedThousandsSeparatorPattern: import("regexp-composer").Pattern;
10
- export declare const numericSignPattern: import("regexp-composer").Pattern;
11
- export declare const numberPattern: import("regexp-composer").OneOrMore[];
12
- export declare const prefixPercentageOrCurrencyPattern: import("regexp-composer").Pattern;
13
- export declare const suffixPercentagePattern: import("regexp-composer").Pattern;
14
- export declare const percentagePattern: import("regexp-composer").AnyOf;
15
- export declare const letterPattern: import("regexp-composer").SpecialToken;
16
- export declare const markPattern: import("regexp-composer").SpecialToken;
17
- export declare const apostrophPattern: import("regexp-composer").AnyOf;
18
- export declare const letterOrMarkPattern: import("regexp-composer").AnyOf;
19
- export declare const dottedAbbreviationSequencePattern: import("regexp-composer").Pattern;
20
- export declare const wordCharacterPattern: import("regexp-composer").AnyOf;
21
- export declare const wordSeparatorPattern: import("regexp-composer").Pattern;
22
- export declare const wordInnerApostrophPattern: import("regexp-composer").Pattern;
23
- export declare const wordStartApostrophPattern: import("regexp-composer").Pattern;
24
- export declare const basicWordPattern: import("regexp-composer").OneOrMore;
25
- export declare const wordSegmentPattern: import("regexp-composer").AnyOf;
26
- export declare const phraseSeparators: string[];
3
+ export declare const wordCharacterRegExp: RegExp;
4
+ export declare const whitespacePatternRegExp: RegExp;
5
+ export declare const letterPatternGlobalRegExp: RegExp;
27
6
  export declare const phraseSeparatorRegExp: RegExp;
28
- export declare const sentenceSeparators: string[];
7
+ export declare const phraseSeparatorTrailingPunctuationRegExp: RegExp;
29
8
  export declare const sentenceSeparatorRegExp: RegExp;
30
9
  export declare const sentenceSeparatorTrailingPunctuationRegExp: RegExp;
31
- export declare const phraseSeparatorTrailingPunctuationRegExp: RegExp;
32
- export declare const oneOrMoreSpacesRegExp: RegExp;
33
- export declare const wordCharacterRegExp: RegExp;
34
- export declare const whitespacePatternRegExp: RegExp;
package/dist/Patterns.js CHANGED
@@ -1,4 +1,7 @@
1
- import { anyOf, buildRegExp, charRange, inputEnd, inputStart, matches, oneOrMore, possibly, repeated, tab, unicodeProperty, whitespace } from 'regexp-composer';
1
+ import { anyOf, buildRegExp, charRange, inputEnd, inputStart, matches, oneOrMore, possibly, repeated, tab, unicodeProperty, whitespace, zeroOrMore } from 'regexp-composer';
2
+ ////////////////////////////////////////////////////////////////////////////////////////////////
3
+ // Pattern builder methods
4
+ ////////////////////////////////////////////////////////////////////////////////////////////////
2
5
  export function buildWordOrNumberPattern(suppressions) {
3
6
  return anyOf(buildSuppressionPattern(suppressions), wordSegmentPattern);
4
7
  }
@@ -7,57 +10,97 @@ export function buildSuppressionPattern(suppressions) {
7
10
  return suppressionsPattern;
8
11
  }
9
12
  ////////////////////////////////////////////////////////////////////////////////////////////////
13
+ // Single character patterns
14
+ ////////////////////////////////////////////////////////////////////////////////////////////////
15
+ const letterPattern = unicodeProperty('Letter');
16
+ const markPattern = unicodeProperty('Mark');
17
+ const letterOrMarkPattern = anyOf(letterPattern, markPattern);
18
+ const apostrophPattern = anyOf(`'`, `’`, `‘`);
19
+ const punctuationPattern = unicodeProperty('Punctuation');
20
+ const digitPattern = unicodeProperty('Decimal_Number');
21
+ const arabicNumeralPattern = charRange('0', '9');
22
+ const emojiPattern = unicodeProperty('Emoji');
23
+ const percentageCharacters = ['%'];
24
+ const currencyCharacters = ['$', '¥', '€', '£', '₩', '₭', '₽', '₫', '฿', '¢', '₮', '؋', '₦', '₱', '₴', '₪'];
25
+ const percentageOrCurrencyCharacterPattern = anyOf(...percentageCharacters, ...currencyCharacters);
26
+ ////////////////////////////////////////////////////////////////////////////////////////////////
10
27
  // Numeric patterns
11
28
  ////////////////////////////////////////////////////////////////////////////////////////////////
12
- export const punctuationPattern = unicodeProperty('Punctuation');
13
- export const digitPattern = unicodeProperty('Decimal_Number');
14
- export const arabicNumeralPattern = charRange('0', '9');
15
- export const numericSeparatorPattern = matches(anyOf('.', ',', '٬', '_'), {
29
+ const numericSeparatorPattern = matches(anyOf('.', ',', '٬', '_'), {
16
30
  ifPrecededBy: arabicNumeralPattern,
17
31
  ifFollowedBy: arabicNumeralPattern
18
32
  });
19
- export const dateTimeSeparatorPattern = matches(anyOf('/', '-', ':'), {
20
- ifPrecededBy: arabicNumeralPattern,
21
- ifFollowedBy: arabicNumeralPattern
33
+ const dimensionsPattern = matches([
34
+ oneOrMore(arabicNumeralPattern),
35
+ oneOrMore([
36
+ 'x',
37
+ oneOrMore(arabicNumeralPattern),
38
+ ]),
39
+ ], {
40
+ ifPrecededBy: anyOf(whitespace, punctuationPattern, inputStart),
41
+ ifFollowedBy: anyOf(whitespace, punctuationPattern, inputEnd)
22
42
  });
23
- export const dateTimePattern = oneOrMore(anyOf(arabicNumeralPattern, dateTimeSeparatorPattern));
24
- export const spacedThousandsSeparatorPattern = matches(' ', {
43
+ const spacedThousandsSeparatorPattern = matches(' ', {
25
44
  ifPrecededBy: arabicNumeralPattern,
26
- ifFollowedBy: repeated(2, arabicNumeralPattern)
45
+ ifFollowedBy: [
46
+ repeated(3, arabicNumeralPattern),
47
+ anyOf(whitespace, punctuationPattern, inputEnd)
48
+ ]
27
49
  });
28
- export const numericSignPattern = matches(anyOf('-', '+'), {
29
- ifPrecededBy: anyOf(whitespace, punctuationPattern),
50
+ const numericSignPattern = matches(anyOf('-', '+'), {
51
+ ifPrecededBy: anyOf(whitespace, punctuationPattern, inputStart),
30
52
  ifFollowedBy: arabicNumeralPattern,
31
53
  });
32
- export const numberPattern = [
33
- oneOrMore(anyOf(digitPattern, numericSeparatorPattern, spacedThousandsSeparatorPattern, numericSignPattern)),
54
+ const numberPattern = [
55
+ possibly(numericSignPattern),
56
+ digitPattern,
57
+ zeroOrMore(anyOf(digitPattern, numericSeparatorPattern, spacedThousandsSeparatorPattern))
58
+ ];
59
+ const exponentPattern = [
60
+ anyOf('e', 'E'),
61
+ possibly(anyOf('+', '-')),
62
+ oneOrMore(arabicNumeralPattern),
63
+ ];
64
+ const numberPossiblyFollowedByExponentOrLettersPattern = [
65
+ numberPattern,
66
+ possibly(anyOf(exponentPattern, matches(zeroOrMore(unicodeProperty('Letter')), {
67
+ ifNotFollowedBy: digitPattern,
68
+ })))
34
69
  ];
35
- const percentageChars = ['%'];
36
- const currencySpecialChars = ['$', '¥', '€', '£', '¥', '₩', '₭', '₽', '₫', '฿', '¢', '₮', '؋', '₦', '₱', '₴', '₪'];
37
- const percentageOrCurrencyPattern = anyOf(...percentageChars, ...currencySpecialChars);
38
- export const prefixPercentageOrCurrencyPattern = matches([
39
- percentageOrCurrencyPattern,
70
+ const precedingPercentageOrCurrencyPattern = matches([
71
+ percentageOrCurrencyCharacterPattern,
40
72
  numberPattern,
41
73
  ], {
42
74
  ifNotPrecededBy: digitPattern,
43
- ifFollowedBy: anyOf(whitespace, punctuationPattern),
75
+ ifFollowedBy: anyOf(whitespace, punctuationPattern, inputEnd),
44
76
  });
45
- export const suffixPercentagePattern = matches([
77
+ const followingPercentageOrCurrencyPattern = matches([
46
78
  numberPattern,
47
- percentageOrCurrencyPattern,
79
+ percentageOrCurrencyCharacterPattern,
80
+ ], {
81
+ ifPrecededBy: anyOf(whitespace, punctuationPattern, inputStart),
82
+ ifNotFollowedBy: anyOf(digitPattern),
83
+ });
84
+ const percentageOrCurrencyPattern = anyOf(precedingPercentageOrCurrencyPattern, followingPercentageOrCurrencyPattern);
85
+ ////////////////////////////////////////////////////////////////////////////////////////////////
86
+ // Time patterns
87
+ ////////////////////////////////////////////////////////////////////////////////////////////////
88
+ const timePattern = matches([
89
+ anyOf(arabicNumeralPattern, [charRange('0', '1'), arabicNumeralPattern], ['2', charRange('0', '3')]),
90
+ repeated([1, 2], [
91
+ ':',
92
+ anyOf(arabicNumeralPattern, [charRange('0', '5'), arabicNumeralPattern]),
93
+ ])
48
94
  ], {
49
- ifPrecededBy: anyOf(whitespace, punctuationPattern),
50
- ifNotFollowedBy: digitPattern,
95
+ ifPrecededBy: anyOf(whitespace, punctuationPattern, inputStart),
96
+ ifNotPrecededBy: ':',
97
+ ifFollowedBy: anyOf(whitespace, punctuationPattern, inputEnd),
98
+ ifNotFollowedBy: ':',
51
99
  });
52
- export const percentagePattern = anyOf(prefixPercentageOrCurrencyPattern, suffixPercentagePattern);
53
100
  ////////////////////////////////////////////////////////////////////////////////////////////////
54
101
  // Letter patterns
55
102
  ////////////////////////////////////////////////////////////////////////////////////////////////
56
- export const letterPattern = unicodeProperty('Letter');
57
- export const markPattern = unicodeProperty('Mark');
58
- export const apostrophPattern = anyOf(`'`, `’`, `‘`);
59
- export const letterOrMarkPattern = anyOf(letterPattern, markPattern);
60
- export const dottedAbbreviationSequencePattern = matches(anyOf([
103
+ const dottedAbbreviationSequencePattern = matches(anyOf([
61
104
  letterPattern,
62
105
  oneOrMore([
63
106
  '. ',
@@ -76,51 +119,84 @@ export const dottedAbbreviationSequencePattern = matches(anyOf([
76
119
  ifNotPrecededBy: anyOf(letterOrMarkPattern, digitPattern),
77
120
  ifNotFollowedBy: anyOf(letterOrMarkPattern, digitPattern)
78
121
  });
79
- export const wordCharacterPattern = anyOf(letterPattern, markPattern, digitPattern);
80
- export const wordSeparatorPattern = matches(anyOf('-', '_', '·', '‧', '&'), {
81
- ifPrecededBy: letterOrMarkPattern,
82
- ifFollowedBy: letterOrMarkPattern
83
- });
84
- export const wordInnerApostrophPattern = matches(apostrophPattern, {
122
+ const wordCharacterPattern = anyOf(letterPattern, markPattern, digitPattern);
123
+ const wordInnerApostrophPattern = matches(apostrophPattern, {
85
124
  ifPrecededBy: letterOrMarkPattern,
86
125
  ifFollowedBy: letterOrMarkPattern,
87
126
  });
88
- export const wordStartApostrophPattern = matches(apostrophPattern, {
127
+ const wordStartApostrophPattern = matches(apostrophPattern, {
89
128
  ifPrecededBy: whitespace,
90
- ifFollowedBy: [letterOrMarkPattern, letterOrMarkPattern, whitespace]
129
+ ifFollowedBy: [letterOrMarkPattern, letterOrMarkPattern, anyOf(whitespace, inputEnd)]
130
+ });
131
+ const basicWordPattern = oneOrMore(anyOf(wordCharacterPattern, wordInnerApostrophPattern));
132
+ const hyphenatedWordPattern = [
133
+ basicWordPattern,
134
+ oneOrMore([
135
+ '-',
136
+ basicWordPattern,
137
+ ]),
138
+ ];
139
+ const dotSeparatedWordPattern = matches([
140
+ basicWordPattern,
141
+ oneOrMore([
142
+ '.',
143
+ basicWordPattern,
144
+ ]),
145
+ ], {
146
+ //ifPrecededBy: anyOf(whitespace, inputStart),
147
+ //ifFollowedBy: anyOf(whitespace, inputEnd)
91
148
  });
92
- export const basicWordPattern = oneOrMore(anyOf(wordCharacterPattern, wordSeparatorPattern, wordInnerApostrophPattern));
93
- export const wordSegmentPattern = anyOf(dottedAbbreviationSequencePattern, dateTimeSeparatorPattern, percentagePattern, numberPattern, basicWordPattern);
149
+ const interpunctSeparatedWordPattern = [
150
+ basicWordPattern,
151
+ oneOrMore([
152
+ anyOf('·', '‧'),
153
+ basicWordPattern,
154
+ ]),
155
+ ];
156
+ const underscoreSeparatedWordPattern = [
157
+ basicWordPattern,
158
+ oneOrMore([
159
+ '_',
160
+ basicWordPattern,
161
+ ]),
162
+ ];
163
+ const wordSegmentPattern = anyOf(timePattern, dimensionsPattern, percentageOrCurrencyPattern, numberPossiblyFollowedByExponentOrLettersPattern, emojiPattern, interpunctSeparatedWordPattern, dotSeparatedWordPattern, dottedAbbreviationSequencePattern, underscoreSeparatedWordPattern, basicWordPattern);
94
164
  ////////////////////////////////////////////////////////////////////////////////////////////////
95
- // Prebuilt regular expressions
165
+ // Phrase separation patterns
96
166
  ////////////////////////////////////////////////////////////////////////////////////////////////
97
- export const phraseSeparators = [',', '、', ',', '،', ';', ';', ':', ':', '—'];
98
- export const phraseSeparatorRegExp = buildRegExp([
167
+ const phraseSeparatorCharacters = [',', '、', ',', '،', ';', ';', ':', ':', '—'];
168
+ const phraseSeparatorPattern = [
99
169
  inputStart,
100
- anyOf(...phraseSeparators),
170
+ anyOf(...phraseSeparatorCharacters),
101
171
  inputEnd
102
- ]);
103
- export const sentenceSeparators = ['.', '。', '?', '?', '!', '!', '\n'];
104
- export const sentenceSeparatorRegExp = buildRegExp([
105
- inputStart,
106
- anyOf(...sentenceSeparators),
107
- inputEnd
108
- ]);
109
- export const sentenceSeparatorTrailingPunctuationRegExp = buildRegExp([
172
+ ];
173
+ const phraseSeparatorTrailingPunctuationPattern = [
110
174
  inputStart,
111
- anyOf('"', '”', '’', ')', ']', '}', '»', ...sentenceSeparators, ...phraseSeparators, oneOrMore(whitespace)),
175
+ anyOf(...phraseSeparatorCharacters, ' ', tab),
112
176
  inputEnd
113
- ]);
114
- export const phraseSeparatorTrailingPunctuationRegExp = buildRegExp([
177
+ ];
178
+ ////////////////////////////////////////////////////////////////////////////////////////////////
179
+ // Sentence separation patterns
180
+ ////////////////////////////////////////////////////////////////////////////////////////////////
181
+ const sentenceSeparatorCharacters = ['.', '。', '?', '?', '!', '!', '\n'];
182
+ const sentenceSeparatorPattern = [
115
183
  inputStart,
116
- anyOf(...phraseSeparators, ' ', tab),
184
+ anyOf(...sentenceSeparatorCharacters),
117
185
  inputEnd
118
- ]);
119
- export const oneOrMoreSpacesRegExp = buildRegExp([
186
+ ];
187
+ const sentenceSeparatorTrailingPunctuationPattern = [
120
188
  inputStart,
121
- oneOrMore(' '),
189
+ anyOf('"', '”', '’', ')', ']', '}', '»', ...sentenceSeparatorCharacters, ...phraseSeparatorCharacters, oneOrMore(whitespace)),
122
190
  inputEnd
123
- ]);
191
+ ];
192
+ ////////////////////////////////////////////////////////////////////////////////////////////////
193
+ // Prebuilt regular expressions
194
+ ////////////////////////////////////////////////////////////////////////////////////////////////
124
195
  export const wordCharacterRegExp = buildRegExp(wordCharacterPattern);
125
196
  export const whitespacePatternRegExp = buildRegExp(whitespace);
197
+ export const letterPatternGlobalRegExp = buildRegExp(letterPattern, { global: true });
198
+ export const phraseSeparatorRegExp = buildRegExp(phraseSeparatorPattern);
199
+ export const phraseSeparatorTrailingPunctuationRegExp = buildRegExp(phraseSeparatorTrailingPunctuationPattern);
200
+ export const sentenceSeparatorRegExp = buildRegExp(sentenceSeparatorPattern);
201
+ export const sentenceSeparatorTrailingPunctuationRegExp = buildRegExp(sentenceSeparatorTrailingPunctuationPattern);
126
202
  //# sourceMappingURL=Patterns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Patterns.js","sourceRoot":"","sources":["../src/Patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Patterns.js","sourceRoot":"","sources":["../src/Patterns.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const cldrSuppressions: Record<string, string[]>;
2
+ export declare const additionalSuppressions: Record<string, string[]>;
2
3
  export declare const leadingApostropheContractionSuppressions: Record<string, string[]>;
3
4
  export declare const nounSuppressions: string[];
4
5
  export declare const tldSuppressions: string[];