@echogarden/text-segmentation 0.6.0 → 0.8.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.
Files changed (55) hide show
  1. package/dist/exports/Exports.d.ts +3 -0
  2. package/dist/exports/Exports.d.ts.map +1 -0
  3. package/dist/exports/Exports.js +3 -0
  4. package/dist/exports/Exports.js.map +1 -0
  5. package/dist/patterns/EastAsianCharacterPatterns.d.ts.map +1 -0
  6. package/dist/patterns/EastAsianCharacterPatterns.js.map +1 -0
  7. package/dist/{Patterns.d.ts → patterns/Patterns.d.ts} +1 -0
  8. package/dist/patterns/Patterns.d.ts.map +1 -0
  9. package/dist/{Patterns.js → patterns/Patterns.js} +9 -8
  10. package/dist/patterns/Patterns.js.map +1 -0
  11. package/dist/patterns/Suppressions.d.ts.map +1 -0
  12. package/dist/patterns/Suppressions.js.map +1 -0
  13. package/dist/{TextSegmentation.d.ts → segmentation/TextSegmentation.d.ts} +0 -1
  14. package/dist/segmentation/TextSegmentation.d.ts.map +1 -0
  15. package/dist/segmentation/TextSegmentation.js +575 -0
  16. package/dist/segmentation/TextSegmentation.js.map +1 -0
  17. package/dist/segmentation/WordSequence.d.ts.map +1 -0
  18. package/dist/segmentation/WordSequence.js.map +1 -0
  19. package/dist/tests/Test.d.ts.map +1 -0
  20. package/dist/{Test.js → tests/Test.js} +7 -5
  21. package/dist/tests/Test.js.map +1 -0
  22. package/dist/utilities/Timer.d.ts +7 -3
  23. package/dist/utilities/Timer.d.ts.map +1 -1
  24. package/dist/utilities/Timer.js +41 -39
  25. package/dist/utilities/Timer.js.map +1 -1
  26. package/package.json +7 -7
  27. package/src/exports/Exports.ts +2 -0
  28. package/src/{Patterns.ts → patterns/Patterns.ts} +11 -10
  29. package/src/segmentation/TextSegmentation.ts +743 -0
  30. package/src/{Test.ts → tests/Test.ts} +7 -5
  31. package/src/utilities/Timer.ts +50 -48
  32. package/dist/EastAsianCharacterPatterns.d.ts.map +0 -1
  33. package/dist/EastAsianCharacterPatterns.js.map +0 -1
  34. package/dist/Patterns.d.ts.map +0 -1
  35. package/dist/Patterns.js.map +0 -1
  36. package/dist/Suppressions.d.ts.map +0 -1
  37. package/dist/Suppressions.js.map +0 -1
  38. package/dist/Test.d.ts.map +0 -1
  39. package/dist/Test.js.map +0 -1
  40. package/dist/TextSegmentation.d.ts.map +0 -1
  41. package/dist/TextSegmentation.js +0 -364
  42. package/dist/TextSegmentation.js.map +0 -1
  43. package/dist/WordSequence.d.ts.map +0 -1
  44. package/dist/WordSequence.js.map +0 -1
  45. package/src/TextSegmentation.ts +0 -520
  46. /package/dist/{EastAsianCharacterPatterns.d.ts → patterns/EastAsianCharacterPatterns.d.ts} +0 -0
  47. /package/dist/{EastAsianCharacterPatterns.js → patterns/EastAsianCharacterPatterns.js} +0 -0
  48. /package/dist/{Suppressions.d.ts → patterns/Suppressions.d.ts} +0 -0
  49. /package/dist/{Suppressions.js → patterns/Suppressions.js} +0 -0
  50. /package/dist/{WordSequence.d.ts → segmentation/WordSequence.d.ts} +0 -0
  51. /package/dist/{WordSequence.js → segmentation/WordSequence.js} +0 -0
  52. /package/dist/{Test.d.ts → tests/Test.d.ts} +0 -0
  53. /package/src/{EastAsianCharacterPatterns.ts → patterns/EastAsianCharacterPatterns.ts} +0 -0
  54. /package/src/{Suppressions.ts → patterns/Suppressions.ts} +0 -0
  55. /package/src/{WordSequence.ts → segmentation/WordSequence.ts} +0 -0
@@ -1,5 +1,5 @@
1
- import { addMissingPunctuationWordsToWordSequence, SegmentationOptions, SegmentationResult, segmentText, segmentWordSequence, splitToWords, WordSequence } from "./TextSegmentation.js"
2
- import { Timer } from "./utilities/Timer.js"
1
+ import { addMissingPunctuationWordsToWordSequence, SegmentationOptions, SegmentationResult, segmentText, segmentWordSequence, splitToWords, WordSequence } from '../exports/Exports.js'
2
+ import { Timer } from '../utilities/Timer.js'
3
3
 
4
4
  const log = console.log
5
5
 
@@ -131,21 +131,23 @@ This A.I. techonology, tells the Dr. goodbye and nothing else. Yes.
131
131
  `
132
132
 
133
133
  const text2 = `
134
- Hello World. Yo!
135
134
 
136
135
 
136
+ Hello World. Yo!
137
+ \t
138
+
137
139
  gooooogoo
138
140
 
139
141
  , Hi. BOBO.
140
142
  `
141
143
 
142
- const wordSequence = await splitToWords(text1, { language: 'en' })
144
+ const wordSequence = await splitToWords(text2, { language: 'en' })
143
145
 
144
146
  const result = await segmentWordSequence(wordSequence)
145
147
 
146
148
  const sentencesText = result.sentences.map(x => x.text)
147
149
 
148
- log(sentencesText.join(' \n '))
150
+ log(sentencesText.join(' | '))
149
151
  }
150
152
 
151
153
  //test1()
@@ -1,95 +1,97 @@
1
- import { roundToDigits } from "./Utilities.js"
1
+ export class Timer {
2
+ private readonly logger: TimerLogger
2
3
 
3
- declare const chrome: any
4
- declare const process: any
4
+ private startTime = 0
5
5
 
6
- export class Timer {
7
- startTime = 0
6
+ constructor(logger?: TimerLogger) {
7
+ if (logger) {
8
+ this.logger = logger
9
+ } else {
10
+ this.logger = console.log
11
+ }
8
12
 
9
- constructor() {
10
13
  this.restart()
11
14
  }
12
15
 
13
- restart() {
16
+ // Resets the timer to the current time.
17
+ restart(): void {
14
18
  this.startTime = Timer.currentTime
15
19
  }
16
20
 
21
+ // Elapsed time in milliseconds (monotonic where supported).
17
22
  get elapsedTime(): number {
18
- // Elapsed time (milliseconds)
19
23
  return Timer.currentTime - this.startTime
20
24
  }
21
25
 
26
+ // Elapsed time in seconds.
22
27
  get elapsedTimeSeconds(): number {
23
- // Elapsed time (seconds)
24
28
  return this.elapsedTime / 1000
25
29
  }
26
30
 
31
+ // Returns elapsed ms and restarts the timer.
27
32
  getElapsedTimeAndRestart(): number {
28
- const elapsedTime = this.elapsedTime
33
+ const elapsed = this.elapsedTime
29
34
  this.restart()
30
35
 
31
- return elapsedTime
36
+ return elapsed
32
37
  }
33
38
 
39
+ // Logs elapsed time (in ms) and restarts the timer.
34
40
  logAndRestart(title: string, timePrecision = 3): number {
35
- const elapsedTime = this.elapsedTime
36
-
37
- //
38
- const message = `${title}: ${roundToDigits(elapsedTime, timePrecision)}ms`
39
-
40
- console.log(message)
41
- //
42
-
41
+ const elapsedMs = this.elapsedTime
42
+ this.logger(`${title}: ${roundToDigits(elapsedMs, timePrecision)}ms`)
43
43
  this.restart()
44
44
 
45
- return elapsedTime
45
+ return elapsedMs
46
46
  }
47
47
 
48
+ // Current high-resolution timestamp in milliseconds since Unix epoch.
48
49
  static get currentTime(): number {
49
- if (!this.timestampFunc) {
50
- this.createGlobalTimestampFunction()
51
- }
52
-
53
50
  return this.timestampFunc()
54
51
  }
55
52
 
53
+ // Current timestamp in microseconds (integer).
56
54
  static get microsecondTimestamp(): number {
57
55
  return Math.floor(Timer.currentTime * 1000)
58
56
  }
59
57
 
60
- private static createGlobalTimestampFunction() {
61
- if (typeof process === 'object' && typeof process.hrtime === 'function') {
62
- let baseTimestamp = 0
58
+ // Clock setup
59
+ private static timestampFunc: () => number = Timer.createTimestampFunction()
63
60
 
64
- this.timestampFunc = () => {
65
- const nodeTimeStamp = process.hrtime()
66
- const millisecondTime = (nodeTimeStamp[0] * 1000) + (nodeTimeStamp[1] / 1000000)
61
+ private static createTimestampFunction(): () => number {
62
+ const g = globalThis as any
67
63
 
68
- return baseTimestamp + millisecondTime
69
- }
64
+ // 1. Modern standard: performance.now() (Browsers & Node 16+)
65
+ if (typeof g.performance === 'object' && typeof g.performance.now === 'function') {
66
+ const timeOrigin =
67
+ g.performance.timeOrigin ?? (Date.now() - g.performance.now())
70
68
 
71
- baseTimestamp = Date.now() - this.timestampFunc()
69
+ return () => timeOrigin + g.performance.now()
72
70
  }
73
- else if (typeof chrome === 'object' && chrome.Interval) {
74
- const baseTimestamp = Date.now()
75
71
 
76
- const chromeIntervalObject = new chrome.Interval()
77
- chromeIntervalObject.start()
72
+ // 2. Node.js high resolution timer (BigInt variant, Node 10.4+)
73
+ if (typeof g.process === 'object' && typeof g.process.hrtime === 'function') {
74
+ const startNs = g.process.hrtime.bigint()
78
75
 
79
- this.timestampFunc = () => baseTimestamp + chromeIntervalObject.microseconds() / 1000
80
- }
81
- else if (typeof performance === 'object' && performance.now) {
82
- const baseTimestamp = Date.now() - performance.now()
76
+ const epochBaseMs = Date.now() - (Number(startNs) / 1e6)
83
77
 
84
- this.timestampFunc = () => baseTimestamp + performance.now()
85
- }
86
- else if (Date.now) {
87
- this.timestampFunc = () => Date.now()
78
+ return () =>
79
+ epochBaseMs + Number(g.process.hrtime.bigint()) / 1e6
88
80
  }
89
- else {
90
- this.timestampFunc = () => (new Date()).getTime()
81
+
82
+ // 3. Last-resort fallback (non-monotonic)
83
+ if (typeof Date.now === 'function') {
84
+ return () => Date.now()
91
85
  }
86
+
87
+ return () => new Date().getTime()
92
88
  }
89
+ }
90
+
91
+ export function roundToDigits(value: number, digits: number): number {
92
+ const factor = 10 ** digits
93
93
 
94
- private static timestampFunc: () => number
94
+ return Math.round(value * factor) / factor
95
95
  }
96
+
97
+ type TimerLogger = (msg: string) => void
@@ -1 +0,0 @@
1
- {"version":3,"file":"EastAsianCharacterPatterns.d.ts","sourceRoot":"","sources":["../src/EastAsianCharacterPatterns.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,yBAAyB,QAAmC,CAAA"}
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"file":"Patterns.d.ts","sourceRoot":"","sources":["../src/Patterns.ts"],"names":[],"mappings":"AAKA,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,mCAK9D;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,qCAQ7D;AAuSD,eAAO,MAAM,iBAAiB,kFAAgD,CAAA;AAC9E,eAAO,MAAM,2BAA2B,0CAA2B,CAAA;AACnE,eAAO,MAAM,yBAAyB,0CAAyB,CAAA;AAK/D,eAAO,MAAM,mBAAmB,QAAoC,CAAA;AACpE,eAAO,MAAM,uBAAuB,QAAiC,CAAA;AAErE,eAAO,MAAM,yBAAyB,QAA+C,CAAA;AAErF,eAAO,MAAM,qBAAqB,QAAsC,CAAA;AACxE,eAAO,MAAM,wCAAwC,QAAyD,CAAA;AAE9G,eAAO,MAAM,gCAAgC,QAAiD,CAAA;AAC9F,eAAO,MAAM,mDAAmD,QAA2D,CAAA;AAE3H,eAAO,MAAM,0BAA0B,QAA2C,CAAA;AAClF,eAAO,MAAM,wBAAwB,QAAyC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Patterns.js","sourceRoot":"","sources":["../src/Patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEtL,gGAAgG;AAChG,0BAA0B;AAC1B,gGAAgG;AAChG,MAAM,UAAU,wBAAwB,CAAC,YAAsB;IAC9D,OAAO,KAAK,CACX,uBAAuB,CAAC,YAAY,CAAC,EACrC,kBAAkB,CAClB,CAAA;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAsB;IAC7D,MAAM,mBAAmB,GACxB,OAAO,CACN,KAAK,CAAC,GAAG,YAAY,CAAC,EACtB,EAAE,eAAe,EAAE,oBAAoB,EAAE,CACzC,CAAA;IAEF,OAAO,mBAAmB,CAAA;AAC3B,CAAC;AAED,gGAAgG;AAChG,4BAA4B;AAC5B,gGAAgG;AAChG,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;AAC/C,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;AAC3C,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;AACtD,MAAM,kBAAkB,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AAEzD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,oBAAoB,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAEhD,MAAM,mBAAmB,GAAG,KAAK,CAChC,aAAa,EACb,WAAW,CACX,CAAA;AAED,MAAM,0BAA0B,GAAG,KAAK,CACvC,aAAa,EACb,WAAW,EACX,YAAY,CACZ,CAAA;AAED,kEAAkE;AAClE,MAAM,YAAY,GAAG,KAAK,CACzB,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,EAC3E,eAAe,CAAC,oBAAoB,CAAC,EACrC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAC7C,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAA;AAClC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE3G,MAAM,oCAAoC,GAAG,KAAK,CAAC,GAAG,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAElG,gGAAgG;AAChG,mBAAmB;AACnB,gGAAgG;AAChG,MAAM,uBAAuB,GAC5B,OAAO,CACN,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC3B,YAAY,EAAE,oBAAoB;IAClC,YAAY,EAAE,oBAAoB;CAClC,CAAC,CAAA;AAEH,MAAM,iBAAiB,GAAG,OAAO,CAAC;IACjC,SAAS,CAAC,oBAAoB,CAAC;IAE/B,SAAS,CAAC;QACT,GAAG;QACH,SAAS,CAAC,oBAAoB,CAAC;KAC/B,CAAC;CACF,EAAE;IACF,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC;IAC/D,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC;CAC7D,CAAC,CAAA;AAEF,MAAM,+BAA+B,GACpC,OAAO,CACN,GAAG,EAAE;IACL,YAAY,EAAE,oBAAoB;IAClC,YAAY,EAAE;QACb,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC;QACjC,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC;KAC/C;CACD,CAAC,CAAA;AAEH,MAAM,kBAAkB,GACvB,OAAO,CACN,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IACjB,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC;IAC/D,YAAY,EAAE,oBAAoB;CAClC,CAAC,CAAA;AAEH,MAAM,aAAa,GAAG;IACrB,QAAQ,CAAC,kBAAkB,CAAC;IAC5B,YAAY;IAEZ,UAAU,CAAC,KAAK,CACf,YAAY,EACZ,uBAAuB,EACvB,+BAA+B,CAC/B,CAAC;CACF,CAAA;AAED,MAAM,eAAe,GAAG;IACvB,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,SAAS,CAAC,oBAAoB,CAAC;CAC/B,CAAA;AAED,MAAM,gDAAgD,GAAG,OAAO,CAAC;IAChE,aAAa;IAEb,QAAQ,CAAC,KAAK,CACb,eAAe,EAEf,OAAO,CACN,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QACnD,eAAe,EAAE,YAAY;KAC7B,CAAC,CACF,CAAC;CAAC,EAAE;IAEL,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC;IAC/D,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC;CAC7D,CAAC,CAAA;AAGF,MAAM,oCAAoC,GACzC,OAAO,CAAC;IACP,oCAAoC;IACpC,aAAa;CACb,EAAE;IACF,eAAe,EAAE,YAAY;IAC7B,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC;CAC7D,CAAC,CAAA;AAEH,MAAM,oCAAoC,GACzC,OAAO,CAAC;IACP,aAAa;IACb,oCAAoC;CACpC,EAAE;IACF,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC;IAC/D,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;CACpC,CAAC,CAAA;AAEH,MAAM,2BAA2B,GAAG,KAAK,CACxC,oCAAoC,EACpC,oCAAoC,CACpC,CAAA;AAED,gGAAgG;AAChG,gBAAgB;AAChB,gGAAgG;AAChG,MAAM,WAAW,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEpG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAChB,GAAG;QACH,KAAK,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;KACxE,CAAC;CACF,EAAE;IACF,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,CAAC;IAC/D,eAAe,EAAE,GAAG;IACpB,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACrF,eAAe,EAAE,GAAG;CACpB,CAAC,CAAA;AAEF,gGAAgG;AAChG,kBAAkB;AAClB,gGAAgG;AAChG,MAAM,iCAAiC,GACtC,OAAO,CACN,KAAK,CACJ;IACC,aAAa;IAEb,SAAS,CAAC;QACT,IAAI;QACJ,aAAa;KACb,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC;CACb,EACD;IACC,aAAa;IAEb,SAAS,CAAC;QACT,GAAG;QACH,QAAQ,CAAC,GAAG,CAAC;QACb,aAAa;KACb,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC;CACb,CACD,EAAE;IACH,eAAe,EAAE,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC;IACzD,eAAe,EAAE,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC;CACzD,CAAC,CAAA;AAEH,MAAM,oBAAoB,GACzB,KAAK,CACJ,aAAa,EACb,WAAW,EACX,YAAY,CACZ,CAAA;AAEF,MAAM,yBAAyB,GAC9B,OAAO,CACN,gBAAgB,EAAE;IAElB,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,mBAAmB;CACjC,CAAC,CAAA;AAEH,MAAM,yBAAyB,GAC9B,OAAO,CACN,gBAAgB,EAAE;IAElB,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;CACrF,CAAC,CAAA;AAEH,MAAM,gBAAgB,GACrB,SAAS,CACR,KAAK,CACJ,oBAAoB,EACpB,yBAAyB,EACzB,GAAG,CACH,CACD,CAAA;AAEF,MAAM,qBAAqB,GAAG;IAC7B,gBAAgB;IAEhB,SAAS,CAAC;QACT,GAAG;QACH,gBAAgB;KAChB,CAAC;CACF,CAAA;AAED,MAAM,uBAAuB,GAAG,OAAO,CAAC;IACvC,gBAAgB;IAEhB,SAAS,CAAC;QACT,GAAG;QACH,gBAAgB;KAChB,CAAC;CACF,EAAE;AACF,8CAA8C;AAC9C,2CAA2C;CAC3C,CAAC,CAAA;AAEF,MAAM,8BAA8B,GAAG;IACtC,gBAAgB;IAEhB,SAAS,CAAC;QACT,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;QACf,gBAAgB;KAChB,CAAC;CACF,CAAA;AAED,MAAM,kBAAkB,GAAG,KAAK,CAC/B,YAAY,EAEZ,WAAW,EACX,2BAA2B,EAE3B,uBAAuB,EACvB,gDAAgD,EAEhD,8BAA8B,EAC9B,iCAAiC,EACjC,gBAAgB,CAChB,CAAA;AAED,gGAAgG;AAChG,6BAA6B;AAC7B,gGAAgG;AAChG,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE/E,MAAM,sBAAsB,GAAG;IAC9B,UAAU;IACV,KAAK,CAAC,GAAG,yBAAyB,CAAC;IACnC,QAAQ;CACR,CAAA;AAED,MAAM,yCAAyC,GAAG;IACjD,UAAU;IACV,KAAK,CAAC,GAAG,yBAAyB,EAAE,GAAG,EAAE,GAAG,CAAC;IAC7C,QAAQ;CACR,CAAA;AAED,gGAAgG;AAChG,+BAA+B;AAC/B,gGAAgG;AAChG,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;AAExE,MAAM,iCAAiC,GAAG;IACzC,UAAU;IACV,KAAK,CAAC,GAAG,2BAA2B,CAAC;IACrC,QAAQ;CACR,CAAA;AAED,MAAM,2CAA2C,GAAG;IACnD,UAAU;IACV,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,2BAA2B,EAAE,GAAG,yBAAyB,EAAE,UAAU,CAAC;IACvH,QAAQ;CACR,CAAA;AAED,gGAAgG;AAChG,iBAAiB;AACjB,gGAAgG;AAEhG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAC9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAE/D,gGAAgG;AAChG,+BAA+B;AAC/B,gGAAgG;AAChG,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAA;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AAErF,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,wCAAwC,GAAG,WAAW,CAAC,yCAAyC,CAAC,CAAA;AAE9G,MAAM,CAAC,MAAM,gCAAgC,GAAG,WAAW,CAAC,iCAAiC,CAAC,CAAA;AAC9F,MAAM,CAAC,MAAM,mDAAmD,GAAG,WAAW,CAAC,2CAA2C,CAAC,CAAA;AAE3H,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC,2BAA2B,CAAC,CAAA;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Suppressions.d.ts","sourceRoot":"","sources":["../src/Suppressions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CASrD,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAG3D,CAAA;AAED,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAO7E,CAAA;AAED,eAAO,MAAM,gBAAgB,UAE5B,CAAA;AAED,eAAO,MAAM,eAAe,UAE3B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Suppressions.js","sourceRoot":"","sources":["../src/Suppressions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACzD,6pCAA6pC;IAC7pC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAC/1B,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC9+D,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,E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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../src/Test.ts"],"names":[],"mappings":""}
package/dist/Test.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.js","sourceRoot":"","sources":["../src/Test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextSegmentation.d.ts","sourceRoot":"","sources":["../src/TextSegmentation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAOhE,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,+BAI5E;AAED,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,+BAA+B,+BA6K9G;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,yBAmF7E;AAmDD,wBAAgB,wCAAwC,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;;;EAsDtG;AA+ED,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,qBAAqB,EAAE,KAAK,EAAE,CAAA;CAC9B;AAED,qBAAa,YAAY;IACxB,SAAS,EAAE,KAAK,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;IAEnB,YAAY,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAGhD;IAED,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,IAAI,KAAK,CAKrB;CACD;AAED,qBAAa,QAAS,SAAQ,YAAY;IACzC,OAAO,EAAE,MAAM,EAAE,CAAK;CACtB;AAED,qBAAa,MAAO,SAAQ,YAAY;CACvC;AAED,MAAM,WAAW,KAAK;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACvC;AAED,eAAO,MAAM,0BAA0B,EAAE,mBAIxC,CAAA;AAED,MAAM,WAAW,+BAA+B;IAC/C,mCAAmC,EAAE,OAAO,CAAA;CAC5C;AAED,eAAO,MAAM,sCAAsC,EAAE,+BAEpD,CAAA"}
@@ -1,364 +0,0 @@
1
- import { buildWordOrNumberPattern as buildWordSplitterPattern, phraseSeparatorRegExp, sentenceSeparatorTrailingPunctuationCharacterRegExp, sentenceSeparatorCharacterRegExp, whitespacePatternRegExp, letterPatternGlobalRegExp } from './Patterns.js';
2
- import { cldrSuppressions, additionalSuppressions, leadingApostropheContractionSuppressions, nounSuppressions, tldSuppressions } from './Suppressions.js';
3
- import { eastAsianCharRangesRegExp } from './EastAsianCharacterPatterns.js';
4
- import { WordSequence } from './WordSequence.js';
5
- import { getShortLanguageCode } from './utilities/Utilities.js';
6
- export { WordSequence } from './WordSequence.js';
7
- import { buildRegExp } from 'regexp-composer';
8
- ////////////////////////////////////////////////////////////////////////////////////////////////
9
- // Exported methods
10
- ////////////////////////////////////////////////////////////////////////////////////////////////
11
- export async function segmentText(text, options) {
12
- const wordSequence = await splitToWords(text, options);
13
- return segmentWordSequence(wordSequence);
14
- }
15
- export async function segmentWordSequence(wordSequence, options) {
16
- options = { ...defaultWordSequenceSegmentationOptions, ...options };
17
- const segmentWordRanges = [];
18
- {
19
- let segmentStartWordOffset = 0;
20
- let nonWhitespaceWordSeen = false;
21
- for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
22
- const word = wordSequence.getWordAt(wordIndex);
23
- if (word.endsWith('\n') && nonWhitespaceWordSeen) {
24
- const nextWord = wordIndex < wordSequence.length - 1 ? wordSequence.getWordAt(wordIndex + 1) : '';
25
- if (nextWord !== '\r' && nextWord !== '\n') {
26
- segmentWordRanges.push({ start: segmentStartWordOffset, end: wordIndex + 1 });
27
- segmentStartWordOffset = wordIndex + 1;
28
- }
29
- }
30
- if (nonWhitespaceWordSeen === false) {
31
- nonWhitespaceWordSeen = !whitespacePatternRegExp.test(word);
32
- }
33
- }
34
- if (segmentStartWordOffset < wordSequence.length) {
35
- segmentWordRanges.push({ start: segmentStartWordOffset, end: wordSequence.length });
36
- }
37
- }
38
- const sentenceWordRanges = [];
39
- const segmentSentenceRanges = [];
40
- {
41
- const minimumSentenceLetterCount = 2;
42
- for (let segmentIndex = 0; segmentIndex < segmentWordRanges.length; segmentIndex++) {
43
- const segmentWordRange = segmentWordRanges[segmentIndex];
44
- const segmentStartWordIndex = segmentWordRange.start;
45
- const segmentEndWordIndex = segmentWordRange.end;
46
- segmentSentenceRanges.push({ start: sentenceWordRanges.length, end: sentenceWordRanges.length });
47
- let sentenceStartWordOffset = segmentStartWordIndex;
48
- let currentSentenceLetterCount = 0;
49
- for (let wordIndex = segmentStartWordIndex; wordIndex < segmentEndWordIndex; wordIndex++) {
50
- const word = wordSequence.getWordAt(wordIndex);
51
- if (currentSentenceLetterCount < minimumSentenceLetterCount) {
52
- const matches = word.matchAll(letterPatternGlobalRegExp);
53
- for (const _ of matches) {
54
- currentSentenceLetterCount += 1;
55
- if (currentSentenceLetterCount >= minimumSentenceLetterCount) {
56
- break;
57
- }
58
- }
59
- }
60
- if (currentSentenceLetterCount >= minimumSentenceLetterCount && sentenceSeparatorCharacterRegExp.test(word)) {
61
- let trailingSequenceEndIndex = wordIndex;
62
- let trailingSequenceContainedWhitespace = false;
63
- while (trailingSequenceEndIndex < segmentEndWordIndex) {
64
- const trailingWord = wordSequence.getWordAt(trailingSequenceEndIndex);
65
- if (sentenceSeparatorTrailingPunctuationCharacterRegExp.test(trailingWord)) {
66
- if (!trailingSequenceContainedWhitespace && whitespacePatternRegExp.test(trailingWord)) {
67
- trailingSequenceContainedWhitespace = true;
68
- }
69
- trailingSequenceEndIndex++;
70
- }
71
- else {
72
- break;
73
- }
74
- }
75
- sentenceWordRanges.push({
76
- start: sentenceStartWordOffset,
77
- end: trailingSequenceEndIndex
78
- });
79
- segmentSentenceRanges[segmentSentenceRanges.length - 1].end += 1;
80
- sentenceStartWordOffset = trailingSequenceEndIndex;
81
- currentSentenceLetterCount = 0;
82
- wordIndex = trailingSequenceEndIndex - 1;
83
- }
84
- }
85
- if (sentenceStartWordOffset < segmentEndWordIndex) {
86
- sentenceWordRanges.push({ start: sentenceStartWordOffset, end: segmentEndWordIndex });
87
- segmentSentenceRanges[segmentSentenceRanges.length - 1].end += 1;
88
- }
89
- }
90
- }
91
- const sentences = [];
92
- for (const wordRange of sentenceWordRanges) {
93
- const sentenceWordSequence = wordSequence.slice(wordRange.start, wordRange.end);
94
- sentences.push(new Sentence(wordRange, sentenceWordSequence));
95
- }
96
- for (const sentence of sentences) {
97
- const phraseWordRanges = [];
98
- let sentenceEndWordOffset = sentence.wordRange.end;
99
- let phraseStartWordOffset = sentence.wordRange.start;
100
- for (let wordIndex = phraseStartWordOffset; wordIndex < sentenceEndWordOffset; wordIndex++) {
101
- const currentWord = wordSequence.getWordAt(wordIndex);
102
- const isCurrentWordPhraseSeparator = phraseSeparatorRegExp.test(currentWord) &&
103
- (!options.requireSpaceAfterColonsOrSemicolons ||
104
- (currentWord !== ':' && currentWord !== ';') ||
105
- whitespacePatternRegExp.test(wordSequence.getWordAt(wordIndex + 1)));
106
- if (isCurrentWordPhraseSeparator) {
107
- let whitespaceSeenOnce = false;
108
- while (wordIndex < sentenceEndWordOffset - 1) {
109
- const nextWord = wordSequence.getWordAt(wordIndex + 1);
110
- if (!sentenceSeparatorTrailingPunctuationCharacterRegExp.test(nextWord)) {
111
- break;
112
- }
113
- if (whitespacePatternRegExp.test(nextWord)) {
114
- whitespaceSeenOnce = true;
115
- }
116
- if (nextWord === '"' && whitespaceSeenOnce) {
117
- break;
118
- }
119
- wordIndex += 1;
120
- }
121
- phraseWordRanges.push({
122
- start: phraseStartWordOffset,
123
- end: wordIndex + 1
124
- });
125
- phraseStartWordOffset = wordIndex + 1;
126
- }
127
- }
128
- if (phraseStartWordOffset < sentenceEndWordOffset) {
129
- phraseWordRanges.push({ start: phraseStartWordOffset, end: sentenceEndWordOffset });
130
- }
131
- for (const wordRange of phraseWordRanges) {
132
- const phraseWordSequence = wordSequence.slice(wordRange.start, wordRange.end);
133
- sentence.phrases.push(new Phrase(wordRange, phraseWordSequence));
134
- }
135
- }
136
- const result = {
137
- words: wordSequence,
138
- sentences,
139
- segmentSentenceRanges,
140
- };
141
- return result;
142
- }
143
- const cachedWordSplitterRegExps = new Map();
144
- export async function splitToWords(text, options) {
145
- if (!options) {
146
- options = {};
147
- }
148
- options = { ...defaultSegmentationOptions, ...options };
149
- if (options.language) {
150
- options.language = getShortLanguageCode(options.language);
151
- }
152
- const optionsAsJson = JSON.stringify(options);
153
- let wordSplitterRegExp = cachedWordSplitterRegExps.get(optionsAsJson);
154
- if (!wordSplitterRegExp) {
155
- wordSplitterRegExp = buildWordSplitterRegExpForOptions(options);
156
- cachedWordSplitterRegExps.set(optionsAsJson, wordSplitterRegExp);
157
- }
158
- let wordSequence = new WordSequence();
159
- function addPunctuationWordsBetween(startOffset, endOffset) {
160
- const punctuationWordSubstring = text.substring(startOffset, endOffset);
161
- let charOffset = startOffset;
162
- let punctuationWordStartOffset = startOffset;
163
- function addPunctuationWordIfNeeded() {
164
- if (charOffset > punctuationWordStartOffset) {
165
- const wordText = text.substring(punctuationWordStartOffset, charOffset);
166
- wordSequence.addWord(wordText, punctuationWordStartOffset, true);
167
- punctuationWordStartOffset = charOffset;
168
- }
169
- }
170
- for (const char of punctuationWordSubstring) {
171
- if (char === ' ') {
172
- charOffset += 1;
173
- continue;
174
- }
175
- addPunctuationWordIfNeeded();
176
- charOffset += char.length;
177
- addPunctuationWordIfNeeded();
178
- }
179
- addPunctuationWordIfNeeded();
180
- }
181
- const wordMatches = text.matchAll(wordSplitterRegExp);
182
- let lastMatchEndOffset = 0;
183
- if (wordMatches) {
184
- for (const match of wordMatches) {
185
- const offsets = match.indices[0];
186
- const matchStartOffset = offsets[0];
187
- const matchEndOffset = offsets[1];
188
- if (matchStartOffset > lastMatchEndOffset) {
189
- addPunctuationWordsBetween(lastMatchEndOffset, matchStartOffset);
190
- }
191
- const wordText = text.substring(matchStartOffset, matchEndOffset);
192
- wordSequence.addWord(wordText, matchStartOffset, false);
193
- lastMatchEndOffset = matchEndOffset;
194
- }
195
- addPunctuationWordsBetween(lastMatchEndOffset, text.length);
196
- }
197
- if (options.enableEastAsianPostprocessing) {
198
- wordSequence = await postprocessEastAsianWords(text, wordSequence);
199
- }
200
- return wordSequence;
201
- }
202
- async function postprocessEastAsianWords(containingText, wordSequence) {
203
- const icuSegmentation = await getIcuSegmentation();
204
- if (icuSegmentation === undefined) {
205
- return wordSequence;
206
- }
207
- let icuInitialized = false;
208
- const newWordSequence = new WordSequence();
209
- for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
210
- const wordEntry = wordSequence.entries[wordIndex];
211
- const wordStartOffset = wordEntry.startOffset;
212
- const word = wordSequence.getWordAt(wordIndex);
213
- if (eastAsianCharRangesRegExp.test(word)) {
214
- if (!icuInitialized) {
215
- await icuSegmentation.initialize();
216
- icuInitialized = true;
217
- }
218
- const wordBreaks = [...icuSegmentation.createWordBreakIterator(word)];
219
- for (let i = 0; i < wordBreaks.length - 1; i++) {
220
- const subwordStartOffset = wordStartOffset + wordBreaks[i];
221
- const subwordEndOffset = wordStartOffset + wordBreaks[i + 1];
222
- const subwordText = containingText.substring(subwordStartOffset, subwordEndOffset);
223
- newWordSequence.addWord(subwordText, subwordStartOffset, false);
224
- }
225
- }
226
- else {
227
- const wordText = containingText.substring(wordEntry.startOffset, wordEntry.endOffset);
228
- newWordSequence.addWord(wordText, wordEntry.startOffset, wordEntry.isPunctuation);
229
- }
230
- }
231
- return newWordSequence;
232
- }
233
- // Add any missing punctuation words to a word sequence
234
- export function addMissingPunctuationWordsToWordSequence(wordSequence, sourceText) {
235
- const originalWordsReverseMapping = new Map();
236
- const wordSequenceWithPunctuation = new WordSequence();
237
- function addWordEntriesForTextSlice(textSlice, initialCharOffset) {
238
- let charOffset = initialCharOffset;
239
- // Add entry for every codepoint (this will correctly treat characters beyond BMP)
240
- for (const char of textSlice) {
241
- const charEndOffset = charOffset + char.length;
242
- const lastEntry = wordSequenceWithPunctuation.lastEntry;
243
- if (char === ' ' && lastEntry && lastEntry.isPunctuation && lastEntry.text[0] === ' ') {
244
- wordSequenceWithPunctuation.lastEntry.text += ' ';
245
- wordSequenceWithPunctuation.lastEntry.endOffset = charEndOffset;
246
- }
247
- else {
248
- const wordText = sourceText.substring(charOffset, charEndOffset);
249
- wordSequenceWithPunctuation.addWord(wordText, charOffset, true);
250
- }
251
- charOffset = charEndOffset;
252
- }
253
- }
254
- for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
255
- const wordEntry = wordSequence.getEntryAt(wordIndex);
256
- const wordStartOffset = wordEntry.startOffset;
257
- const previousWordEndOffset = wordIndex > 0 ? wordSequence.entries[wordIndex - 1].endOffset : 0;
258
- // Add entries for any punctuation characters between the current and previous word (or start)
259
- if (previousWordEndOffset !== wordStartOffset) {
260
- const textSlice = sourceText.substring(previousWordEndOffset, wordStartOffset);
261
- addWordEntriesForTextSlice(textSlice, previousWordEndOffset);
262
- }
263
- wordSequenceWithPunctuation.entries.push(wordEntry);
264
- originalWordsReverseMapping.set(wordSequenceWithPunctuation.length - 1, wordIndex);
265
- // If last word, add entries for any trailing punctuation characters
266
- if (wordIndex === wordSequence.length - 1) {
267
- if (sourceText.length !== wordEntry.endOffset) {
268
- const textSlice = sourceText.substring(wordEntry.endOffset, sourceText.length);
269
- addWordEntriesForTextSlice(textSlice, wordEntry.endOffset);
270
- }
271
- }
272
- }
273
- return { wordSequenceWithPunctuation, originalWordsReverseMapping };
274
- }
275
- function getPunctuationRanges(wordSequence, text) {
276
- const punctuationRanges = [];
277
- const wordEntries = wordSequence.entries;
278
- if (wordEntries[0].startOffset > 0) {
279
- punctuationRanges.push({ start: 0, end: wordEntries[0].startOffset });
280
- }
281
- for (let i = 0; i < wordEntries.length; i++) {
282
- const entry = wordEntries[i];
283
- const previousEndOffset = wordEntries[i - 1]?.endOffset ?? 0;
284
- if (entry.startOffset > previousEndOffset) {
285
- punctuationRanges.push({ start: previousEndOffset, end: entry.startOffset });
286
- }
287
- if (entry.isPunctuation) {
288
- punctuationRanges.push({ start: entry.startOffset, end: entry.endOffset });
289
- }
290
- }
291
- {
292
- const lastEndOffset = wordEntries[wordEntries.length - 1]?.endOffset;
293
- if (lastEndOffset && lastEndOffset < text.length) {
294
- punctuationRanges.push({ start: lastEndOffset, end: text.length });
295
- }
296
- }
297
- return punctuationRanges;
298
- }
299
- ////////////////////////////////////////////////////////////////////////////////////////////////
300
- // Helper methods
301
- ////////////////////////////////////////////////////////////////////////////////////////////////
302
- function buildWordSplitterRegExpForOptions(options) {
303
- const cldrSuppressionsForLang = cldrSuppressions[options.language ?? ''] ?? [];
304
- const extendedSuppressionsForLang = additionalSuppressions[options.language ?? ''] ?? [];
305
- const contractionSuppressionsForLang = leadingApostropheContractionSuppressions[options.language ?? ''] ?? [];
306
- const contractionSuppressionsForLangWithSingleQuote = contractionSuppressionsForLang.map(str => str.replaceAll(`'`, `’`));
307
- const customSuppressions = options.customSuppressions ?? [];
308
- let suppressions = [
309
- ...customSuppressions,
310
- ...cldrSuppressionsForLang,
311
- ...extendedSuppressionsForLang,
312
- ...contractionSuppressionsForLang,
313
- ...contractionSuppressionsForLangWithSingleQuote,
314
- ...nounSuppressions,
315
- ...tldSuppressions,
316
- ];
317
- const wordPattern = buildWordSplitterPattern([
318
- ...suppressions,
319
- ...suppressions.map(word => word.toLocaleLowerCase()),
320
- ...suppressions.map(word => word.toLocaleUpperCase()),
321
- ]);
322
- const wordSplitterRegExp = buildRegExp(wordPattern, { global: true });
323
- return wordSplitterRegExp;
324
- }
325
- async function getIcuSegmentation() {
326
- try {
327
- const icuSegmentation = await import('@echogarden/icu-segmentation-wasm');
328
- return icuSegmentation;
329
- }
330
- catch {
331
- return undefined;
332
- }
333
- }
334
- export class TextFragment {
335
- wordRange;
336
- words;
337
- constructor(wordRange, words) {
338
- this.wordRange = wordRange;
339
- this.words = words;
340
- }
341
- get text() {
342
- return this.words.text;
343
- }
344
- get charRange() {
345
- return {
346
- start: this.words.firstEntry.startOffset,
347
- end: this.words.lastEntry.endOffset
348
- };
349
- }
350
- }
351
- export class Sentence extends TextFragment {
352
- phrases = [];
353
- }
354
- export class Phrase extends TextFragment {
355
- }
356
- export const defaultSegmentationOptions = {
357
- language: '',
358
- customSuppressions: [],
359
- enableEastAsianPostprocessing: true,
360
- };
361
- export const defaultWordSequenceSegmentationOptions = {
362
- requireSpaceAfterColonsOrSemicolons: true
363
- };
364
- //# sourceMappingURL=TextSegmentation.js.map