# string.wordsSegmenter 库模块帮助文档

<details>  <summary>索引与语言</summary>  <p>

- `string.wordsSegmenter(language)` 与 `string.wordsSegmenter.create(language)` 等价；默认 `zh-CN`。
- 所有分词结果都是普通 aardio 数组 / 表，文本为 UTF-8；不依赖 mmseg 或第三方词典。
- `text` 保留 Windows 返回值，可能经过归一化而不与原文子串完全相同；位置和长度始终描述原文。
- `startPosition`、`length` 和 `getTokenAt` 的 `startIndex` 均使用 **从 0 开始的 UTF-16 代码单元**，不是 UTF-8 字节或 Unicode 码点；非 BMP 字符占 2 个单位。
- `getTokenAt` 返回包含给定位置的词，或该位置之后的第一个词；不存在则返回 `null`，错误则返回 `null,err`。
- `resolvedLanguage` 是实际匹配的分词规则语言；`und` 表示语言中立规则，不表示自动语言检测。
- Windows 的语言规则及版本可能影响断词结果；此库不提供词性、自定义词典或停用词过滤。
- 重建 DLL 使用 `.res/build.aardio` 和 `.res/WordsSegmenter.cs`，仅重建时需要 Windows SDK。

</p></details>

[使用指南与示例](https://www.aardio.com/zh-cn/docs/library/string/wordsSegmenter/)

## string 成员列表 <a id="string" href="#string">&#x23;</a>

### string.wordsSegmenter() <a id="string.wordsSegmenter" href="#string.wordsSegmenter">&#x23;</a>
[返回对象:wordsSegmenterObject](#wordsSegmenterObject)

### string.wordsSegmenter(language="zh-CN") <a id="string.wordsSegmenter" href="#string.wordsSegmenter">&#x23;</a>
创建分词器；失败返回 null,err。  
参数为 BCP-47 语言标记；省略或 null 使用 zh-CN。  
例如 zh-Hans-CN、en-US、ja-JP、und。  
合法但无专用规则的语言可能回退到 und。

## string.wordsSegmenter 成员列表 <a id="string.wordsSegmenter" href="#string.wordsSegmenter">&#x23;</a>

基于 Windows.Data.Text.WordsSegmenter 的本地分词库。  
支持 Windows 10/11，运行不需要 Windows SDK。  
分词结果全部为纯 aardio 数组与表。  

string.wordBreaker 支持 WinXP/Win7 ，接口兼容 string.wordsSegmenter 。

### string.wordsSegmenter.create() <a id="string.wordsSegmenter.create" href="#string.wordsSegmenter.create">&#x23;</a>
[返回对象:wordsSegmenterObject](#wordsSegmenterObject)

### string.wordsSegmenter.create(language="zh-CN") <a id="string.wordsSegmenter.create" href="#string.wordsSegmenter.create">&#x23;</a>
与调用 string.wordsSegmenter(language) 等价。  
成功返回分词器，失败返回 null,err。

## wordsSegmenterAlternateFormObject 成员列表 <a id="wordsSegmenterAlternateFormObject" href="#wordsSegmenterAlternateFormObject">&#x23;</a>

### wordsSegmenterAlternateFormObject.alternateText <a id="wordsSegmenterAlternateFormObject.alternateText" href="#wordsSegmenterAlternateFormObject.alternateText">&#x23;</a>
Windows 返回的替代 / 归一化文本。

### wordsSegmenterAlternateFormObject.length <a id="wordsSegmenterAlternateFormObject.length" href="#wordsSegmenterAlternateFormObject.length">&#x23;</a>
替代形式所对应原文的 UTF-16 单位长度。

### wordsSegmenterAlternateFormObject.normalizationFormat <a id="wordsSegmenterAlternateFormObject.normalizationFormat" href="#wordsSegmenterAlternateFormObject.normalizationFormat">&#x23;</a>
字符串：NotNormalized、Number、Currency、Date 或 Time。

### wordsSegmenterAlternateFormObject.startPosition <a id="wordsSegmenterAlternateFormObject.startPosition" href="#wordsSegmenterAlternateFormObject.startPosition">&#x23;</a>
对完整输入文本的 0 起始 UTF-16 单位位置。

## wordsSegmenterObject 成员列表 <a id="wordsSegmenterObject" href="#wordsSegmenterObject">&#x23;</a>

### wordsSegmenterObject.getTokenAt() <a id="wordsSegmenterObject.getTokenAt" href="#wordsSegmenterObject.getTokenAt">&#x23;</a>
[返回对象:wordsSegmenterTokenObject](#wordsSegmenterTokenObject)

### wordsSegmenterObject.getTokenAt(text,startIndex) <a id="wordsSegmenterObject.getTokenAt" href="#wordsSegmenterObject.getTokenAt">&#x23;</a>
查找包含 startIndex 的词，或该位置之后的第一个词。  
索引为从 0 开始的 UTF-16 单位，必须小于文本的 UTF-16 长度。  
成功返回词表，无匹配返回 null，错误返回 null,err。

### wordsSegmenterObject.getTokens(text) <a id="wordsSegmenterObject.getTokens" href="#wordsSegmenterObject.getTokens">&#x23;</a>
返回纯数组，每个元素是包含 text、startPosition、length、alternateForms 的纯表。  
位置从 0 开始，位置与长度按 UTF-16 单位计数。  
text 为字符串；null 视为空文本，空文本返回 []；失败返回 null,err。

### wordsSegmenterObject.getWords(text) <a id="wordsSegmenterObject.getWords" href="#wordsSegmenterObject.getWords">&#x23;</a>
返回 UTF-8 词文本的纯数组；失败返回 null,err。  
text 为字符串；null 视为空文本，空文本返回 []。  
不会主动去重、转小写、去停用词或更改 Windows 断词规则。

### wordsSegmenterObject.language <a id="wordsSegmenterObject.language" href="#wordsSegmenterObject.language">&#x23;</a>
只读属性；创建时请求的语言标记。  
改变语言请创建另一个分词器。

### wordsSegmenterObject.llmTokens <a id="wordsSegmenterObject.llmTokens" href="#wordsSegmenterObject.llmTokens">&#x23;</a>
估算文本用于调用 AI 大模型的 token 数。

### wordsSegmenterObject.llmTokens(text) <a id="wordsSegmenterObject.llmTokens" href="#wordsSegmenterObject.llmTokens">&#x23;</a>
估算参数 text 指定文本用于 AI 大模型所消耗的 token 数。  
返回值可调用 math.format.size(tokens," tokens") 函数格式化为类似“21K tokens”的文本。  
此函数适合估算主流大模型的分词计数（结果仅供参考），OpenAI GPT4o/GPT5 系列模型请改用 string.gpt.tokens 函数估算。

### wordsSegmenterObject.resolvedLanguage <a id="wordsSegmenterObject.resolvedLanguage" href="#wordsSegmenterObject.resolvedLanguage">&#x23;</a>
只读属性；实际使用的分词规则语言。  
und 表示语言中立规则，并非自动检测语言。

## wordsSegmenterTokenObject 成员列表 <a id="wordsSegmenterTokenObject" href="#wordsSegmenterTokenObject">&#x23;</a>

### wordsSegmenterTokenObject.alternateForms <a id="wordsSegmenterTokenObject.alternateForms" href="#wordsSegmenterTokenObject.alternateForms">&#x23;</a>
替代形式的纯数组，无替代形式时为 []。  
各项包含 alternateText、startPosition、length、normalizationFormat。  
替代形式可能覆盖比原词更多或更少的原文。

### wordsSegmenterTokenObject.length <a id="wordsSegmenterTokenObject.length" href="#wordsSegmenterTokenObject.length">&#x23;</a>
UTF-16 单位长度，不是 UTF-8 字节数。

### wordsSegmenterTokenObject.startPosition <a id="wordsSegmenterTokenObject.startPosition" href="#wordsSegmenterTokenObject.startPosition">&#x23;</a>
在完整输入文本中的 0 起始 UTF-16 单位位置。  
非 BMP 字符占 2 个 UTF-16 单位。

### wordsSegmenterTokenObject.text <a id="wordsSegmenterTokenObject.text" href="#wordsSegmenterTokenObject.text">&#x23;</a>
Windows 返回的词文本，UTF-8 字符串。  
某些语言规则会归一化文本；位置与长度仍指向原文，不一定可用 text 的长度替代 length。
