@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.
- package/dist/exports/Exports.d.ts +3 -0
- package/dist/exports/Exports.d.ts.map +1 -0
- package/dist/exports/Exports.js +3 -0
- package/dist/exports/Exports.js.map +1 -0
- package/dist/patterns/EastAsianCharacterPatterns.d.ts.map +1 -0
- package/dist/patterns/EastAsianCharacterPatterns.js.map +1 -0
- package/dist/{Patterns.d.ts → patterns/Patterns.d.ts} +1 -0
- package/dist/patterns/Patterns.d.ts.map +1 -0
- package/dist/{Patterns.js → patterns/Patterns.js} +9 -8
- package/dist/patterns/Patterns.js.map +1 -0
- package/dist/patterns/Suppressions.d.ts.map +1 -0
- package/dist/patterns/Suppressions.js.map +1 -0
- package/dist/{TextSegmentation.d.ts → segmentation/TextSegmentation.d.ts} +0 -1
- package/dist/segmentation/TextSegmentation.d.ts.map +1 -0
- package/dist/segmentation/TextSegmentation.js +575 -0
- package/dist/segmentation/TextSegmentation.js.map +1 -0
- package/dist/segmentation/WordSequence.d.ts.map +1 -0
- package/dist/segmentation/WordSequence.js.map +1 -0
- package/dist/tests/Test.d.ts.map +1 -0
- package/dist/{Test.js → tests/Test.js} +7 -5
- package/dist/tests/Test.js.map +1 -0
- package/dist/utilities/Timer.d.ts +7 -3
- package/dist/utilities/Timer.d.ts.map +1 -1
- package/dist/utilities/Timer.js +41 -39
- package/dist/utilities/Timer.js.map +1 -1
- package/package.json +7 -7
- package/src/exports/Exports.ts +2 -0
- package/src/{Patterns.ts → patterns/Patterns.ts} +11 -10
- package/src/segmentation/TextSegmentation.ts +743 -0
- package/src/{Test.ts → tests/Test.ts} +7 -5
- package/src/utilities/Timer.ts +50 -48
- package/dist/EastAsianCharacterPatterns.d.ts.map +0 -1
- package/dist/EastAsianCharacterPatterns.js.map +0 -1
- package/dist/Patterns.d.ts.map +0 -1
- package/dist/Patterns.js.map +0 -1
- package/dist/Suppressions.d.ts.map +0 -1
- package/dist/Suppressions.js.map +0 -1
- package/dist/Test.d.ts.map +0 -1
- package/dist/Test.js.map +0 -1
- package/dist/TextSegmentation.d.ts.map +0 -1
- package/dist/TextSegmentation.js +0 -364
- package/dist/TextSegmentation.js.map +0 -1
- package/dist/WordSequence.d.ts.map +0 -1
- package/dist/WordSequence.js.map +0 -1
- package/src/TextSegmentation.ts +0 -520
- /package/dist/{EastAsianCharacterPatterns.d.ts → patterns/EastAsianCharacterPatterns.d.ts} +0 -0
- /package/dist/{EastAsianCharacterPatterns.js → patterns/EastAsianCharacterPatterns.js} +0 -0
- /package/dist/{Suppressions.d.ts → patterns/Suppressions.d.ts} +0 -0
- /package/dist/{Suppressions.js → patterns/Suppressions.js} +0 -0
- /package/dist/{WordSequence.d.ts → segmentation/WordSequence.d.ts} +0 -0
- /package/dist/{WordSequence.js → segmentation/WordSequence.js} +0 -0
- /package/dist/{Test.d.ts → tests/Test.d.ts} +0 -0
- /package/src/{EastAsianCharacterPatterns.ts → patterns/EastAsianCharacterPatterns.ts} +0 -0
- /package/src/{Suppressions.ts → patterns/Suppressions.ts} +0 -0
- /package/src/{WordSequence.ts → segmentation/WordSequence.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextSegmentation.js","sourceRoot":"","sources":["../src/TextSegmentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WordSequence.d.ts","sourceRoot":"","sources":["../src/WordSequence.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACxB,OAAO,EAAE,SAAS,EAAE,CAAK;IAEzB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,QAUpE;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAEhD;IAEA,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oCAIrD;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,UAEtB;IAED,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAEjD;IAEA,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,uCAItD;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEnC;IAED,KAAK,iBAEJ;IAED,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAMzC;IAED,IAAI,SAAS,aAEZ;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,QAAQ,WAEX;IAED,IAAI,UAAU,cAEb;IAED,IAAI,SAAS,cAEZ;IAED,IAAI,kBAAkB,gBAErB;IAED,IAAI,gBAAgB,aAEnB;IAED,IAAI,qBAAqB,gBAExB;IAED,IAAI,mBAAmB,aAEtB;IAED,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,WAET;CACD;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAA;IAEZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IAEjB,aAAa,EAAE,OAAO,CAAA;CACtB"}
|
package/dist/WordSequence.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WordSequence.js","sourceRoot":"","sources":["../src/WordSequence.ts"],"names":[],"mappings":"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"}
|
package/src/TextSegmentation.ts
DELETED
|
@@ -1,520 +0,0 @@
|
|
|
1
|
-
import { buildWordOrNumberPattern as buildWordSplitterPattern, phraseSeparatorRegExp, sentenceSeparatorTrailingPunctuationCharacterRegExp, sentenceSeparatorCharacterRegExp, whitespacePatternRegExp, letterPatternGlobalRegExp, startsWithWhitespacePattern, endsWithWhitespacePattern } 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, type WordEntry } from './WordSequence.js'
|
|
7
|
-
|
|
8
|
-
import { buildRegExp } from 'regexp-composer'
|
|
9
|
-
|
|
10
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
11
|
-
// Exported methods
|
|
12
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
13
|
-
export async function segmentText(text: string, options?: SegmentationOptions) {
|
|
14
|
-
const wordSequence = await splitToWords(text, options)
|
|
15
|
-
|
|
16
|
-
return segmentWordSequence(wordSequence)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export async function segmentWordSequence(wordSequence: WordSequence, options?: WordSequenceSegmentationOptions) {
|
|
20
|
-
options = { ...defaultWordSequenceSegmentationOptions, ...options }
|
|
21
|
-
|
|
22
|
-
const segmentWordRanges: Range[] = []
|
|
23
|
-
|
|
24
|
-
{
|
|
25
|
-
let segmentStartWordOffset = 0
|
|
26
|
-
let nonWhitespaceWordSeen = false
|
|
27
|
-
|
|
28
|
-
for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
|
|
29
|
-
const word = wordSequence.getWordAt(wordIndex)
|
|
30
|
-
|
|
31
|
-
if (word.endsWith('\n') && nonWhitespaceWordSeen) {
|
|
32
|
-
const nextWord = wordIndex < wordSequence.length - 1 ? wordSequence.getWordAt(wordIndex + 1) : ''
|
|
33
|
-
|
|
34
|
-
if (nextWord !== '\r' && nextWord !== '\n') {
|
|
35
|
-
segmentWordRanges.push({ start: segmentStartWordOffset, end: wordIndex + 1 })
|
|
36
|
-
segmentStartWordOffset = wordIndex + 1
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (nonWhitespaceWordSeen === false) {
|
|
41
|
-
nonWhitespaceWordSeen = !whitespacePatternRegExp.test(word)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (segmentStartWordOffset < wordSequence.length) {
|
|
46
|
-
segmentWordRanges.push({ start: segmentStartWordOffset, end: wordSequence.length })
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const sentenceWordRanges: Range[] = []
|
|
51
|
-
const segmentSentenceRanges: Range[] = []
|
|
52
|
-
|
|
53
|
-
{
|
|
54
|
-
const minimumSentenceLetterCount = 2
|
|
55
|
-
|
|
56
|
-
for (let segmentIndex = 0; segmentIndex < segmentWordRanges.length; segmentIndex++) {
|
|
57
|
-
const segmentWordRange = segmentWordRanges[segmentIndex]
|
|
58
|
-
|
|
59
|
-
const segmentStartWordIndex = segmentWordRange.start
|
|
60
|
-
const segmentEndWordIndex = segmentWordRange.end
|
|
61
|
-
|
|
62
|
-
segmentSentenceRanges.push({ start: sentenceWordRanges.length, end: sentenceWordRanges.length })
|
|
63
|
-
|
|
64
|
-
let sentenceStartWordOffset = segmentStartWordIndex
|
|
65
|
-
let currentSentenceLetterCount = 0
|
|
66
|
-
|
|
67
|
-
for (let wordIndex = segmentStartWordIndex; wordIndex < segmentEndWordIndex; wordIndex++) {
|
|
68
|
-
const word = wordSequence.getWordAt(wordIndex)
|
|
69
|
-
|
|
70
|
-
if (currentSentenceLetterCount < minimumSentenceLetterCount) {
|
|
71
|
-
const matches = word.matchAll(letterPatternGlobalRegExp)
|
|
72
|
-
|
|
73
|
-
for (const _ of matches) {
|
|
74
|
-
currentSentenceLetterCount += 1
|
|
75
|
-
|
|
76
|
-
if (currentSentenceLetterCount >= minimumSentenceLetterCount) {
|
|
77
|
-
break
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (currentSentenceLetterCount >= minimumSentenceLetterCount && sentenceSeparatorCharacterRegExp.test(word)) {
|
|
83
|
-
let trailingSequenceEndIndex = wordIndex
|
|
84
|
-
let trailingSequenceContainedWhitespace = false
|
|
85
|
-
|
|
86
|
-
while (trailingSequenceEndIndex < segmentEndWordIndex) {
|
|
87
|
-
const trailingWord = wordSequence.getWordAt(trailingSequenceEndIndex)
|
|
88
|
-
|
|
89
|
-
if (sentenceSeparatorTrailingPunctuationCharacterRegExp.test(trailingWord)) {
|
|
90
|
-
if (!trailingSequenceContainedWhitespace && whitespacePatternRegExp.test(trailingWord)) {
|
|
91
|
-
trailingSequenceContainedWhitespace = true
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
trailingSequenceEndIndex++
|
|
95
|
-
} else {
|
|
96
|
-
break
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
sentenceWordRanges.push({
|
|
101
|
-
start: sentenceStartWordOffset,
|
|
102
|
-
end: trailingSequenceEndIndex
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
segmentSentenceRanges[segmentSentenceRanges.length - 1].end += 1
|
|
106
|
-
|
|
107
|
-
sentenceStartWordOffset = trailingSequenceEndIndex
|
|
108
|
-
currentSentenceLetterCount = 0
|
|
109
|
-
|
|
110
|
-
wordIndex = trailingSequenceEndIndex - 1
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (sentenceStartWordOffset < segmentEndWordIndex) {
|
|
115
|
-
sentenceWordRanges.push({ start: sentenceStartWordOffset, end: segmentEndWordIndex })
|
|
116
|
-
segmentSentenceRanges[segmentSentenceRanges.length - 1].end += 1
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const sentences: Sentence[] = []
|
|
122
|
-
|
|
123
|
-
for (const wordRange of sentenceWordRanges) {
|
|
124
|
-
const sentenceWordSequence = wordSequence.slice(wordRange.start, wordRange.end)
|
|
125
|
-
|
|
126
|
-
sentences.push(new Sentence(wordRange, sentenceWordSequence))
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
for (const sentence of sentences) {
|
|
130
|
-
const phraseWordRanges: Range[] = []
|
|
131
|
-
|
|
132
|
-
let sentenceEndWordOffset = sentence.wordRange.end
|
|
133
|
-
let phraseStartWordOffset = sentence.wordRange.start
|
|
134
|
-
|
|
135
|
-
for (let wordIndex = phraseStartWordOffset; wordIndex < sentenceEndWordOffset; wordIndex++) {
|
|
136
|
-
const currentWord = wordSequence.getWordAt(wordIndex)
|
|
137
|
-
|
|
138
|
-
const isCurrentWordPhraseSeparator =
|
|
139
|
-
phraseSeparatorRegExp.test(currentWord) &&
|
|
140
|
-
(!options.requireSpaceAfterColonsOrSemicolons ||
|
|
141
|
-
(currentWord !== ':' && currentWord !== ';') ||
|
|
142
|
-
whitespacePatternRegExp.test(wordSequence.getWordAt(wordIndex + 1)))
|
|
143
|
-
|
|
144
|
-
if (isCurrentWordPhraseSeparator) {
|
|
145
|
-
let whitespaceSeenOnce = false
|
|
146
|
-
|
|
147
|
-
while (wordIndex < sentenceEndWordOffset - 1) {
|
|
148
|
-
const nextWord = wordSequence.getWordAt(wordIndex + 1)
|
|
149
|
-
|
|
150
|
-
if (!sentenceSeparatorTrailingPunctuationCharacterRegExp.test(nextWord)) {
|
|
151
|
-
break
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if (whitespacePatternRegExp.test(nextWord)) {
|
|
155
|
-
whitespaceSeenOnce = true
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (nextWord === '"' && whitespaceSeenOnce) {
|
|
159
|
-
break
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
wordIndex += 1
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
phraseWordRanges.push({
|
|
166
|
-
start: phraseStartWordOffset,
|
|
167
|
-
end: wordIndex + 1
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
phraseStartWordOffset = wordIndex + 1
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (phraseStartWordOffset < sentenceEndWordOffset) {
|
|
175
|
-
phraseWordRanges.push({ start: phraseStartWordOffset, end: sentenceEndWordOffset })
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
for (const wordRange of phraseWordRanges) {
|
|
179
|
-
const phraseWordSequence = wordSequence.slice(wordRange.start, wordRange.end)
|
|
180
|
-
|
|
181
|
-
sentence.phrases.push(new Phrase(wordRange, phraseWordSequence))
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
const result: SegmentationResult = {
|
|
186
|
-
words: wordSequence,
|
|
187
|
-
sentences,
|
|
188
|
-
segmentSentenceRanges,
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
return result
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
const cachedWordSplitterRegExps = new Map<string, RegExp>()
|
|
195
|
-
|
|
196
|
-
export async function splitToWords(text: string, options?: SegmentationOptions) {
|
|
197
|
-
if (!options) {
|
|
198
|
-
options = {}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
options = { ...defaultSegmentationOptions, ...options }
|
|
202
|
-
|
|
203
|
-
if (options.language) {
|
|
204
|
-
options.language = getShortLanguageCode(options.language)
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
const optionsAsJson = JSON.stringify(options)
|
|
208
|
-
|
|
209
|
-
let wordSplitterRegExp = cachedWordSplitterRegExps.get(optionsAsJson)
|
|
210
|
-
|
|
211
|
-
if (!wordSplitterRegExp) {
|
|
212
|
-
wordSplitterRegExp = buildWordSplitterRegExpForOptions(options)
|
|
213
|
-
|
|
214
|
-
cachedWordSplitterRegExps.set(optionsAsJson, wordSplitterRegExp)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
let wordSequence = new WordSequence()
|
|
218
|
-
|
|
219
|
-
function addPunctuationWordsBetween(startOffset: number, endOffset: number) {
|
|
220
|
-
const punctuationWordSubstring = text.substring(startOffset, endOffset)
|
|
221
|
-
|
|
222
|
-
let charOffset = startOffset
|
|
223
|
-
let punctuationWordStartOffset = startOffset
|
|
224
|
-
|
|
225
|
-
function addPunctuationWordIfNeeded() {
|
|
226
|
-
if (charOffset > punctuationWordStartOffset) {
|
|
227
|
-
const wordText = text.substring(punctuationWordStartOffset, charOffset)
|
|
228
|
-
wordSequence.addWord(wordText, punctuationWordStartOffset, true)
|
|
229
|
-
|
|
230
|
-
punctuationWordStartOffset = charOffset
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
for (const char of punctuationWordSubstring) {
|
|
235
|
-
if (char === ' ') {
|
|
236
|
-
charOffset += 1
|
|
237
|
-
|
|
238
|
-
continue
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
addPunctuationWordIfNeeded()
|
|
242
|
-
|
|
243
|
-
charOffset += char.length
|
|
244
|
-
|
|
245
|
-
addPunctuationWordIfNeeded()
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
addPunctuationWordIfNeeded()
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const wordMatches = text.matchAll(wordSplitterRegExp)
|
|
252
|
-
|
|
253
|
-
let lastMatchEndOffset = 0
|
|
254
|
-
|
|
255
|
-
if (wordMatches) {
|
|
256
|
-
for (const match of wordMatches) {
|
|
257
|
-
const offsets = match.indices![0]!
|
|
258
|
-
const matchStartOffset = offsets[0]
|
|
259
|
-
const matchEndOffset = offsets[1]
|
|
260
|
-
|
|
261
|
-
if (matchStartOffset > lastMatchEndOffset) {
|
|
262
|
-
addPunctuationWordsBetween(lastMatchEndOffset, matchStartOffset)
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
const wordText = text.substring(matchStartOffset, matchEndOffset)
|
|
266
|
-
wordSequence.addWord(wordText, matchStartOffset, false)
|
|
267
|
-
|
|
268
|
-
lastMatchEndOffset = matchEndOffset
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
addPunctuationWordsBetween(lastMatchEndOffset, text.length)
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
if (options.enableEastAsianPostprocessing) {
|
|
275
|
-
wordSequence = await postprocessEastAsianWords(text, wordSequence)
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
return wordSequence
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
async function postprocessEastAsianWords(containingText: string, wordSequence: WordSequence) {
|
|
282
|
-
const icuSegmentation = await getIcuSegmentation()
|
|
283
|
-
|
|
284
|
-
if (icuSegmentation === undefined) {
|
|
285
|
-
return wordSequence
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
let icuInitialized = false
|
|
289
|
-
|
|
290
|
-
const newWordSequence = new WordSequence()
|
|
291
|
-
|
|
292
|
-
for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
|
|
293
|
-
const wordEntry = wordSequence.entries[wordIndex]
|
|
294
|
-
const wordStartOffset = wordEntry.startOffset
|
|
295
|
-
|
|
296
|
-
const word = wordSequence.getWordAt(wordIndex)
|
|
297
|
-
|
|
298
|
-
if (eastAsianCharRangesRegExp.test(word)) {
|
|
299
|
-
if (!icuInitialized) {
|
|
300
|
-
await icuSegmentation.initialize()
|
|
301
|
-
|
|
302
|
-
icuInitialized = true
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
const wordBreaks = [...icuSegmentation.createWordBreakIterator(word)]
|
|
306
|
-
|
|
307
|
-
for (let i = 0; i < wordBreaks.length - 1; i++) {
|
|
308
|
-
const subwordStartOffset = wordStartOffset + wordBreaks[i]
|
|
309
|
-
const subwordEndOffset = wordStartOffset + wordBreaks[i + 1]
|
|
310
|
-
|
|
311
|
-
const subwordText = containingText.substring(subwordStartOffset, subwordEndOffset)
|
|
312
|
-
|
|
313
|
-
newWordSequence.addWord(
|
|
314
|
-
subwordText,
|
|
315
|
-
subwordStartOffset,
|
|
316
|
-
false,
|
|
317
|
-
)
|
|
318
|
-
}
|
|
319
|
-
} else {
|
|
320
|
-
const wordText = containingText.substring(wordEntry.startOffset, wordEntry.endOffset)
|
|
321
|
-
|
|
322
|
-
newWordSequence.addWord(wordText, wordEntry.startOffset, wordEntry.isPunctuation)
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
return newWordSequence
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// Add any missing punctuation words to a word sequence
|
|
330
|
-
export function addMissingPunctuationWordsToWordSequence(wordSequence: WordSequence, sourceText: string) {
|
|
331
|
-
const originalWordsReverseMapping = new Map<number, number>()
|
|
332
|
-
|
|
333
|
-
const wordSequenceWithPunctuation = new WordSequence()
|
|
334
|
-
|
|
335
|
-
function addWordEntriesForTextSlice(textSlice: string, initialCharOffset: number) {
|
|
336
|
-
let charOffset = initialCharOffset
|
|
337
|
-
|
|
338
|
-
// Add entry for every codepoint (this will correctly treat characters beyond BMP)
|
|
339
|
-
for (const char of textSlice) {
|
|
340
|
-
const charEndOffset = charOffset + char.length
|
|
341
|
-
|
|
342
|
-
const lastEntry = wordSequenceWithPunctuation.lastEntry
|
|
343
|
-
|
|
344
|
-
if (char === ' ' && lastEntry && lastEntry.isPunctuation && lastEntry.text[0] === ' ') {
|
|
345
|
-
wordSequenceWithPunctuation.lastEntry.text += ' '
|
|
346
|
-
wordSequenceWithPunctuation.lastEntry.endOffset = charEndOffset
|
|
347
|
-
} else {
|
|
348
|
-
const wordText = sourceText.substring(charOffset, charEndOffset)
|
|
349
|
-
|
|
350
|
-
wordSequenceWithPunctuation.addWord(wordText, charOffset, true)
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
charOffset = charEndOffset
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
for (let wordIndex = 0; wordIndex < wordSequence.length; wordIndex++) {
|
|
358
|
-
const wordEntry = wordSequence.getEntryAt(wordIndex)
|
|
359
|
-
const wordStartOffset = wordEntry.startOffset
|
|
360
|
-
|
|
361
|
-
const previousWordEndOffset = wordIndex > 0 ? wordSequence.entries[wordIndex - 1].endOffset : 0
|
|
362
|
-
|
|
363
|
-
// Add entries for any punctuation characters between the current and previous word (or start)
|
|
364
|
-
if (previousWordEndOffset !== wordStartOffset) {
|
|
365
|
-
const textSlice = sourceText.substring(previousWordEndOffset, wordStartOffset)
|
|
366
|
-
|
|
367
|
-
addWordEntriesForTextSlice(textSlice, previousWordEndOffset)
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
wordSequenceWithPunctuation.entries.push(wordEntry)
|
|
371
|
-
originalWordsReverseMapping.set(wordSequenceWithPunctuation.length - 1, wordIndex)
|
|
372
|
-
|
|
373
|
-
// If last word, add entries for any trailing punctuation characters
|
|
374
|
-
if (wordIndex === wordSequence.length - 1) {
|
|
375
|
-
if (sourceText.length !== wordEntry.endOffset) {
|
|
376
|
-
const textSlice = sourceText.substring(wordEntry.endOffset, sourceText.length)
|
|
377
|
-
|
|
378
|
-
addWordEntriesForTextSlice(textSlice, wordEntry.endOffset)
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
return { wordSequenceWithPunctuation, originalWordsReverseMapping }
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
function getPunctuationRanges(wordSequence: WordSequence, text: string) {
|
|
387
|
-
const punctuationRanges: Range[] = []
|
|
388
|
-
const wordEntries = wordSequence.entries
|
|
389
|
-
|
|
390
|
-
if (wordEntries[0].startOffset > 0) {
|
|
391
|
-
punctuationRanges.push({ start: 0, end: wordEntries[0].startOffset })
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
for (let i = 0; i < wordEntries.length; i++) {
|
|
395
|
-
const entry = wordEntries[i]
|
|
396
|
-
|
|
397
|
-
const previousEndOffset = wordEntries[i - 1]?.endOffset ?? 0
|
|
398
|
-
|
|
399
|
-
if (entry.startOffset > previousEndOffset) {
|
|
400
|
-
punctuationRanges.push({ start: previousEndOffset, end: entry.startOffset })
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
if (entry.isPunctuation) {
|
|
404
|
-
punctuationRanges.push({ start: entry.startOffset, end: entry.endOffset })
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
{
|
|
409
|
-
const lastEndOffset = wordEntries[wordEntries.length - 1]?.endOffset
|
|
410
|
-
|
|
411
|
-
if (lastEndOffset && lastEndOffset < text.length) {
|
|
412
|
-
punctuationRanges.push({ start: lastEndOffset, end: text.length })
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
return punctuationRanges
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
420
|
-
// Helper methods
|
|
421
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
422
|
-
function buildWordSplitterRegExpForOptions(options: SegmentationOptions) {
|
|
423
|
-
const cldrSuppressionsForLang = cldrSuppressions[options.language ?? ''] ?? []
|
|
424
|
-
const extendedSuppressionsForLang = additionalSuppressions[options.language ?? ''] ?? []
|
|
425
|
-
const contractionSuppressionsForLang = leadingApostropheContractionSuppressions[options.language ?? ''] ?? []
|
|
426
|
-
const contractionSuppressionsForLangWithSingleQuote = contractionSuppressionsForLang.map(str => str.replaceAll(`'`, `’`))
|
|
427
|
-
const customSuppressions = options.customSuppressions ?? []
|
|
428
|
-
|
|
429
|
-
let suppressions = [
|
|
430
|
-
...customSuppressions,
|
|
431
|
-
...cldrSuppressionsForLang,
|
|
432
|
-
...extendedSuppressionsForLang,
|
|
433
|
-
...contractionSuppressionsForLang,
|
|
434
|
-
...contractionSuppressionsForLangWithSingleQuote,
|
|
435
|
-
...nounSuppressions,
|
|
436
|
-
...tldSuppressions,
|
|
437
|
-
]
|
|
438
|
-
|
|
439
|
-
const wordPattern = buildWordSplitterPattern([
|
|
440
|
-
...suppressions,
|
|
441
|
-
...suppressions.map(word => word.toLocaleLowerCase()),
|
|
442
|
-
...suppressions.map(word => word.toLocaleUpperCase()),
|
|
443
|
-
])
|
|
444
|
-
|
|
445
|
-
const wordSplitterRegExp = buildRegExp(wordPattern, { global: true })
|
|
446
|
-
|
|
447
|
-
return wordSplitterRegExp
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
async function getIcuSegmentation() {
|
|
451
|
-
try {
|
|
452
|
-
const icuSegmentation = await import('@echogarden/icu-segmentation-wasm')
|
|
453
|
-
|
|
454
|
-
return icuSegmentation
|
|
455
|
-
} catch {
|
|
456
|
-
return undefined
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
461
|
-
// Types
|
|
462
|
-
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
463
|
-
export interface SegmentationResult {
|
|
464
|
-
words: WordSequence
|
|
465
|
-
sentences: Sentence[]
|
|
466
|
-
segmentSentenceRanges: Range[]
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
export class TextFragment {
|
|
470
|
-
wordRange: Range
|
|
471
|
-
words: WordSequence
|
|
472
|
-
|
|
473
|
-
constructor(wordRange: Range, words: WordSequence) {
|
|
474
|
-
this.wordRange = wordRange
|
|
475
|
-
this.words = words
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
get text() {
|
|
479
|
-
return this.words.text
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
get charRange(): Range {
|
|
483
|
-
return {
|
|
484
|
-
start: this.words.firstEntry.startOffset,
|
|
485
|
-
end: this.words.lastEntry.endOffset
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
export class Sentence extends TextFragment {
|
|
491
|
-
phrases: Phrase[] = []
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
export class Phrase extends TextFragment {
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
export interface Range {
|
|
498
|
-
start: number
|
|
499
|
-
end: number
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
export interface SegmentationOptions {
|
|
503
|
-
language?: string
|
|
504
|
-
customSuppressions?: string[]
|
|
505
|
-
enableEastAsianPostprocessing?: boolean
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
export const defaultSegmentationOptions: SegmentationOptions = {
|
|
509
|
-
language: '',
|
|
510
|
-
customSuppressions: [],
|
|
511
|
-
enableEastAsianPostprocessing: true,
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
export interface WordSequenceSegmentationOptions {
|
|
515
|
-
requireSpaceAfterColonsOrSemicolons: boolean
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
export const defaultWordSequenceSegmentationOptions: WordSequenceSegmentationOptions = {
|
|
519
|
-
requireSpaceAfterColonsOrSemicolons: true
|
|
520
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|