aardio 文档

string.wordBreaker

统一的 Windows 分词入口:Windows 10 及以后直接使用 string.wordsSegmenter;旧系统使用注册的 COM IWordBreaker。无需自行编译 C++。

快速使用

import string.wordBreaker;

// 与 string.wordsSegmenter 一样:先指定语言,后处理文本。
var breaker,err = string.wordBreaker("zh-CN"); // 可省略语言或传 null
if(!breaker){ print(err); return; }

var words,err = breaker.getWords("我爱北京天安门。hello world!");
if(words === null){ print(err); return; }
print(string.join(words," / "));

本机输出:我 / 爱 / 北京 / 天安门 / hello / world。

string.wordBreaker.create(language) 与 string.wordBreaker(language) 等价。指定其他语言:

var english,err = string.wordBreaker("en-US");
if(english) print(english.getWords("hello world!"));

var japanese,err = string.wordBreaker("ja-JP");
if(japanese) print(japanese.getWords("日本語の文章を分割します。"));

分词器还提供 getTokens(text)、getTokenAt(text,startIndex)、language 和 resolvedLanguage。getTokenAt 的索引、词的位置和长度使用从 0 开始的 UTF-16 单位;旧系统不提供替代词形,alternateForms 总是 []。

兼容旧调用

原来的具名方法仍可用:

var words,err = string.wordBreaker.breakText("我爱北京天安门。", "zh-CN");

直接调用 string.wordBreaker(...) 的含义已改变:现在参数是语言,返回分词器对象,不再把文本作为参数并直接返回词数组。旧代码请改为 string.wordBreaker().getWords(text),或者使用上述 breakText(text,language)。

系统差异

旧版 COM 实现参考 XLWordBreaker.cpp 的 TEXT_SOURCE、IWordSink 和结束回调。

Markdown 格式