追加词表:在归一化与预分词之前优先命中的 token 集合。
AddedVocabulary
00 Remarks
added_tokens 中的词(例如 <|begin▁of▁sentence|> 这类特殊 标记)必须作为一个整体被识别出来,既不能被归一化器改写,也不能被预分词器拆散。 因此这里在流水线的最前端先对输入串做一次整串扫描,命中的片段直接产出其对应的 编号,剩余的片段才会继续走后续的常规流程。
这份模型的追加词多达十余万条,逐词调用 IndexOf 轮询显然不可接受, 所以此处构建了一棵字典树(Trie)用于最左最长匹配,整体扫描复杂度为 O(n × maxTokenLength),且与追加词的数量无关。
01 Syntax
Microsoft.VisualBasic.Data.NLP.ChineseTokenizer.HuggingFace.AddedVocabulary
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| TokenToId | 1 | 查询追加词对应的编号。 |
| IdToToken | 1 | 查询编号对应的追加词。 |
| IsSpecial | 1 | 判断某个编号是否属于特殊 token。 |
| ExtractSpecial | 1 | 把输入文本切分为"追加词分片"与"普通文本分片"交替出现的序列。 |
| IsWordBoundary | 1 | 判断命中片段的左右两侧是否均为非单词字符。 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| Count | 1 | 追加词的数量。 |
04 Members
TokenToId(
String)查询追加词对应的编号。
IdToToken(
Int32)查询编号对应的追加词。
IsSpecial(
Int32)判断某个编号是否属于特殊 token。
ExtractSpecial(
String)把输入文本切分为"追加词分片"与"普通文本分片"交替出现的序列。
Remarks
采用最左最长匹配:在每一个起始位置上沿字典树尽可能地向前推进,取所能匹配到 的最长追加词。single_word 要求命中片段的左右两侧均不是单词字符, lstrip / rstrip 则会额外吞掉命中片段两侧的空白字符。
IsWordBoundary(
String, Int32, Int32)判断命中片段的左右两侧是否均为非单词字符。
Count
追加词的数量。