@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, segmentText, segmentWordSequence, splitToWords, WordSequence } from "./TextSegmentation.js";
2
- import { Timer } from "./utilities/Timer.js";
1
+ import { addMissingPunctuationWordsToWordSequence, segmentText, segmentWordSequence, splitToWords, WordSequence } from '../exports/Exports.js';
2
+ import { Timer } from '../utilities/Timer.js';
3
3
  const log = console.log;
4
4
  async function test1() {
5
5
  //const text = 'Hello! 1. Say who? 2. How are you? This is v2.0 that good. I have 2 344 234ms C# is good games'
@@ -100,17 +100,19 @@ This A.I. techonology, tells the Dr. goodbye and nothing else. Yes.
100
100
  街の
101
101
  `;
102
102
  const text2 = `
103
- Hello World. Yo!
104
103
 
105
104
 
105
+ Hello World. Yo!
106
+ \t
107
+
106
108
  gooooogoo
107
109
 
108
110
  , Hi. BOBO.
109
111
  `;
110
- const wordSequence = await splitToWords(text1, { language: 'en' });
112
+ const wordSequence = await splitToWords(text2, { language: 'en' });
111
113
  const result = await segmentWordSequence(wordSequence);
112
114
  const sentencesText = result.sentences.map(x => x.text);
113
- log(sentencesText.join(' \n '));
115
+ log(sentencesText.join(' | '));
114
116
  }
115
117
  //test1()
116
118
  //test2()
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/tests/Test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare class Timer {
2
- startTime: number;
3
- constructor();
2
+ private readonly logger;
3
+ private startTime;
4
+ constructor(logger?: TimerLogger);
4
5
  restart(): void;
5
6
  get elapsedTime(): number;
6
7
  get elapsedTimeSeconds(): number;
@@ -8,7 +9,10 @@ export declare class Timer {
8
9
  logAndRestart(title: string, timePrecision?: number): number;
9
10
  static get currentTime(): number;
10
11
  static get microsecondTimestamp(): number;
11
- private static createGlobalTimestampFunction;
12
12
  private static timestampFunc;
13
+ private static createTimestampFunction;
13
14
  }
15
+ export declare function roundToDigits(value: number, digits: number): number;
16
+ type TimerLogger = (msg: string) => void;
17
+ export {};
14
18
  //# sourceMappingURL=Timer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timer.d.ts","sourceRoot":"","sources":["../../src/utilities/Timer.ts"],"names":[],"mappings":"AAKA,qBAAa,KAAK;IACjB,SAAS,SAAI;IAEb,cAEC;IAED,OAAO,SAEN;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAG/B;IAED,wBAAwB,IAAI,MAAM,CAKjC;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,MAAM,CAYtD;IAED,MAAM,KAAK,WAAW,IAAI,MAAM,CAM/B;IAED,MAAM,KAAK,oBAAoB,IAAI,MAAM,CAExC;IAED,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAkC5C,OAAO,CAAC,MAAM,CAAC,aAAa,CAAc;CAC1C"}
1
+ {"version":3,"file":"Timer.d.ts","sourceRoot":"","sources":["../../src/utilities/Timer.ts"],"names":[],"mappings":"AAAA,qBAAa,KAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAI;IAErB,YAAY,MAAM,CAAC,EAAE,WAAW,EAQ/B;IAGD,OAAO,IAAI,IAAI,CAEd;IAGD,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAGD,wBAAwB,IAAI,MAAM,CAKjC;IAGD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,MAAM,CAMtD;IAGD,MAAM,KAAK,WAAW,IAAI,MAAM,CAE/B;IAGD,MAAM,KAAK,oBAAoB,IAAI,MAAM,CAExC;IAGD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgD;IAE5E,OAAO,CAAC,MAAM,CAAC,uBAAuB;CA4BtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA"}
@@ -1,70 +1,72 @@
1
- import { roundToDigits } from "./Utilities.js";
2
1
  export class Timer {
2
+ logger;
3
3
  startTime = 0;
4
- constructor() {
4
+ constructor(logger) {
5
+ if (logger) {
6
+ this.logger = logger;
7
+ }
8
+ else {
9
+ this.logger = console.log;
10
+ }
5
11
  this.restart();
6
12
  }
13
+ // Resets the timer to the current time.
7
14
  restart() {
8
15
  this.startTime = Timer.currentTime;
9
16
  }
17
+ // Elapsed time in milliseconds (monotonic where supported).
10
18
  get elapsedTime() {
11
- // Elapsed time (milliseconds)
12
19
  return Timer.currentTime - this.startTime;
13
20
  }
21
+ // Elapsed time in seconds.
14
22
  get elapsedTimeSeconds() {
15
- // Elapsed time (seconds)
16
23
  return this.elapsedTime / 1000;
17
24
  }
25
+ // Returns elapsed ms and restarts the timer.
18
26
  getElapsedTimeAndRestart() {
19
- const elapsedTime = this.elapsedTime;
27
+ const elapsed = this.elapsedTime;
20
28
  this.restart();
21
- return elapsedTime;
29
+ return elapsed;
22
30
  }
31
+ // Logs elapsed time (in ms) and restarts the timer.
23
32
  logAndRestart(title, timePrecision = 3) {
24
- const elapsedTime = this.elapsedTime;
25
- //
26
- const message = `${title}: ${roundToDigits(elapsedTime, timePrecision)}ms`;
27
- console.log(message);
28
- //
33
+ const elapsedMs = this.elapsedTime;
34
+ this.logger(`${title}: ${roundToDigits(elapsedMs, timePrecision)}ms`);
29
35
  this.restart();
30
- return elapsedTime;
36
+ return elapsedMs;
31
37
  }
38
+ // Current high-resolution timestamp in milliseconds since Unix epoch.
32
39
  static get currentTime() {
33
- if (!this.timestampFunc) {
34
- this.createGlobalTimestampFunction();
35
- }
36
40
  return this.timestampFunc();
37
41
  }
42
+ // Current timestamp in microseconds (integer).
38
43
  static get microsecondTimestamp() {
39
44
  return Math.floor(Timer.currentTime * 1000);
40
45
  }
41
- static createGlobalTimestampFunction() {
42
- if (typeof process === 'object' && typeof process.hrtime === 'function') {
43
- let baseTimestamp = 0;
44
- this.timestampFunc = () => {
45
- const nodeTimeStamp = process.hrtime();
46
- const millisecondTime = (nodeTimeStamp[0] * 1000) + (nodeTimeStamp[1] / 1000000);
47
- return baseTimestamp + millisecondTime;
48
- };
49
- baseTimestamp = Date.now() - this.timestampFunc();
46
+ // Clock setup
47
+ static timestampFunc = Timer.createTimestampFunction();
48
+ static createTimestampFunction() {
49
+ const g = globalThis;
50
+ // 1. Modern standard: performance.now() (Browsers & Node 16+)
51
+ if (typeof g.performance === 'object' && typeof g.performance.now === 'function') {
52
+ const timeOrigin = g.performance.timeOrigin ?? (Date.now() - g.performance.now());
53
+ return () => timeOrigin + g.performance.now();
50
54
  }
51
- else if (typeof chrome === 'object' && chrome.Interval) {
52
- const baseTimestamp = Date.now();
53
- const chromeIntervalObject = new chrome.Interval();
54
- chromeIntervalObject.start();
55
- this.timestampFunc = () => baseTimestamp + chromeIntervalObject.microseconds() / 1000;
55
+ // 2. Node.js high resolution timer (BigInt variant, Node 10.4+)
56
+ if (typeof g.process === 'object' && typeof g.process.hrtime === 'function') {
57
+ const startNs = g.process.hrtime.bigint();
58
+ const epochBaseMs = Date.now() - (Number(startNs) / 1e6);
59
+ return () => epochBaseMs + Number(g.process.hrtime.bigint()) / 1e6;
56
60
  }
57
- else if (typeof performance === 'object' && performance.now) {
58
- const baseTimestamp = Date.now() - performance.now();
59
- this.timestampFunc = () => baseTimestamp + performance.now();
60
- }
61
- else if (Date.now) {
62
- this.timestampFunc = () => Date.now();
63
- }
64
- else {
65
- this.timestampFunc = () => (new Date()).getTime();
61
+ // 3. Last-resort fallback (non-monotonic)
62
+ if (typeof Date.now === 'function') {
63
+ return () => Date.now();
66
64
  }
65
+ return () => new Date().getTime();
67
66
  }
68
- static timestampFunc;
67
+ }
68
+ export function roundToDigits(value, digits) {
69
+ const factor = 10 ** digits;
70
+ return Math.round(value * factor) / factor;
69
71
  }
70
72
  //# sourceMappingURL=Timer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../src/utilities/Timer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../src/utilities/Timer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@echogarden/text-segmentation",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "A library for multilingual word, phrase and sentence segmentation.",
5
5
  "author": "Rotem Dan",
6
6
  "license": "MIT",
@@ -23,7 +23,7 @@
23
23
  "bugs": {
24
24
  "url": "https://github.com/echogarden-project/text-segmentation/issues"
25
25
  },
26
- "main": "./dist/TextSegmentation.js",
26
+ "main": "./dist/exports/Exports.js",
27
27
  "type": "module",
28
28
  "files": [
29
29
  "dist",
@@ -33,13 +33,13 @@
33
33
  "README.md"
34
34
  ],
35
35
  "scripts": {
36
- "test": "node dist/Test.js"
36
+ "test": "node dist/tests/Test.js"
37
37
  },
38
38
  "dependencies": {
39
- "regexp-composer": "~0.3.0"
39
+ "regexp-composer": "~0.6.0"
40
40
  },
41
41
  "peerDependencies": {
42
- "@echogarden/icu-segmentation-wasm": "~0.3.0"
42
+ "@echogarden/icu-segmentation-wasm": "~0.4.0"
43
43
  },
44
44
  "peerDependenciesMeta": {
45
45
  "@echogarden/icu-segmentation-wasm": {
@@ -47,7 +47,7 @@
47
47
  }
48
48
  },
49
49
  "devDependencies": {
50
- "@types/node": "~26.1.1",
51
- "@echogarden/icu-segmentation-wasm": "~0.3.0"
50
+ "@types/node": "~26.4.0",
51
+ "@echogarden/icu-segmentation-wasm": "~0.4.0"
52
52
  }
53
53
  }
@@ -0,0 +1,2 @@
1
+ export * from '../segmentation/TextSegmentation.js'
2
+ export { WordSequence, type WordEntry } from '../segmentation/WordSequence.js'
@@ -54,6 +54,15 @@ const currencyCharacters = ['$', '¥', '€', '£', '₩', '₭', '₽', '₫',
54
54
 
55
55
  const percentageOrCurrencyCharacterPattern = anyOf(...percentageCharacters, ...currencyCharacters)
56
56
 
57
+ ////////////////////////////////////////////////////////////////////////////////////////////////
58
+ // Whitespace patterns
59
+ ////////////////////////////////////////////////////////////////////////////////////////////////
60
+
61
+ export const whitespacePattern = [inputStart, oneOrMore(whitespace), inputEnd]
62
+ export const startsWithWhitespacePattern = [inputStart, whitespace]
63
+ export const endsWithWhitespacePattern = [whitespace, inputEnd]
64
+ export const anyNumberOfSpacesPattern = [inputStart, oneOrMore(' '), inputEnd]
65
+
57
66
  ////////////////////////////////////////////////////////////////////////////////////////////////
58
67
  // Numeric patterns
59
68
  ////////////////////////////////////////////////////////////////////////////////////////////////
@@ -288,7 +297,7 @@ const phraseSeparatorPattern = [
288
297
 
289
298
  const phraseSeparatorTrailingPunctuationPattern = [
290
299
  inputStart,
291
- anyOf(...phraseSeparatorCharacters, ' ', tab),
300
+ anyOf(...phraseSeparatorCharacters, anyNumberOfSpacesPattern, tab),
292
301
  inputEnd
293
302
  ]
294
303
 
@@ -305,18 +314,10 @@ const sentenceSeparatorCharacterPattern = [
305
314
 
306
315
  const sentenceSeparatorTrailingPunctuationPattern = [
307
316
  inputStart,
308
- anyOf('"', '”', '’', ')', ']', '}', '»', '」', ...sentenceSeparatorCharacters, ...phraseSeparatorCharacters, whitespace),
317
+ anyOf('"', '”', '’', ')', ']', '}', '»', '」', ...sentenceSeparatorCharacters, ...phraseSeparatorCharacters, whitespacePattern),
309
318
  inputEnd
310
319
  ]
311
320
 
312
- ////////////////////////////////////////////////////////////////////////////////////////////////
313
- // Other patterns
314
- ////////////////////////////////////////////////////////////////////////////////////////////////
315
-
316
- export const whitespacePattern = [inputStart, oneOrMore(whitespace), inputEnd]
317
- export const startsWithWhitespacePattern = [inputStart, whitespace]
318
- export const endsWithWhitespacePattern = [whitespace, inputEnd]
319
-
320
321
  ////////////////////////////////////////////////////////////////////////////////////////////////
321
322
  // Prebuilt regular expressions
322
323
  ////////////////////////////////////////////////////////////////////////////////////////////////