ICU 分块库(网络大会端口)
根据 ICU 国际组件 Unicode) C++ 库,并移植到WebAssembly.
- 字符分割 查找石墨集群之间的边界,可能比单一的Unicode编码点长,同时考虑到各种语言属性
- 单词分割 找到词之间的界限,基于规则. 它还支持更具有挑战性的语言,如汉语,日语,泰语和高棉语,它们需要专门的词汇来决定边界
- 分界线检测 找到可添加换行符的潜在位置, 用于文字包装
- 句子分割 根据规则和语言特定词汇查找句子边界
- 支持所有最近的 JavaScript 运行时间( Node.js 和浏览器)
安装
npm install @echogarden/icu-segmentation-wasm
说明:由于被捆绑入WebAssembly二进制的ICU数据的大小,包大小大约为32 MB (13.5 MB gzipped).
使用量
拆分操作
返回代表部件的字符串数组.
import * as ICUSegmantation from '@echogarden/icu-segmentation-wasm'
await ICUSegmantation.initialize()
const str = 'Hello World! How are you doing today?'
console.log(ICUSegmantation.splitToCharacters(str))
// Outputs: [
// 'H','e','l','l','o',' ','W','o','r','l','d','!',' ','H','o','w',' ','a','r','e',' ',
// 'y','o', 'u',' ','d','o','i','n','g',' ','t','o','d','a','y','?'
// ]
console.log(ICUSegmantation.splitToWords(str))
// Outputs: [
// 'Hello', ' ', 'World', '!', ' ', 'How', ' ', 'are', ' ',
// 'you', ' ', 'doing', ' ', 'today', '?'
// ]
console.log(ICUSegmantation.splitToSentences(str, 'en'))
// Outputs: [
// 'Hello World! ',
// 'How are you doing today?'
// ]
调度业务
提供边界索引序列的浏览器.
他们返回一个 JavaScript 指示器 可以被一个 for..of 循环 :
createCharacterBreakIterator(text, lanaguge?)
createWordBreakIterator(text, lanaguge?)
createLineBreakIterator(text, lanaguge?)
createSentenceBreakIterator(text, lanaguge?)
传讯器的用法实例:
const text = 'Привет, мир! Как у тебя дела сегодня?'
for (const boundaryIndex of createSentenceBreakIterator(text, 'ru')) {
console.log(boundaryIndex)
}
// Outputs:
// 0
// 13
// 37
构建网络大会模块
见 本指南,它经过了ICU如何构建的过程,并与本套件中使用的WebAssembly包装相链接.
许可证
麻省理工学院