nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.Data.NLP / AddedVocabulary

AddedVocabulary

Full name Microsoft.VisualBasic.Data.NLP.ChineseTokenizer.HuggingFace.AddedVocabulary Assembly Microsoft.VisualBasic.Data.NLP Members 6

追加词表:在归一化与预分词之前优先命中的 token 集合。

00 Remarks

added_tokens 中的词(例如 <|begin▁of▁sentence|> 这类特殊 标记)必须作为一个整体被识别出来,既不能被归一化器改写,也不能被预分词器拆散。 因此这里在流水线的最前端先对输入串做一次整串扫描,命中的片段直接产出其对应的 编号,剩余的片段才会继续走后续的常规流程。

这份模型的追加词多达十余万条,逐词调用 IndexOf 轮询显然不可接受, 所以此处构建了一棵字典树(Trie)用于最左最长匹配,整体扫描复杂度为 O(n × maxTokenLength),且与追加词的数量无关。

01 Syntax

Microsoft.VisualBasic.Data.NLP.ChineseTokenizer.HuggingFace.AddedVocabulary

02 Methods

NameOverloadsSummary
TokenToId 1 查询追加词对应的编号。
IdToToken 1 查询编号对应的追加词。
IsSpecial 1 判断某个编号是否属于特殊 token。
ExtractSpecial 1 把输入文本切分为"追加词分片"与"普通文本分片"交替出现的序列。
IsWordBoundary 1 判断命中片段的左右两侧是否均为非单词字符。

03 Properties

NameOverloadsSummary
Count 1 追加词的数量。

04 Members

method TokenToId #
TokenToId(String)

查询追加词对应的编号。

method IdToToken #
IdToToken(Int32)

查询编号对应的追加词。

method IsSpecial #
IsSpecial(Int32)

判断某个编号是否属于特殊 token。

method ExtractSpecial #
ExtractSpecial(String)

把输入文本切分为"追加词分片"与"普通文本分片"交替出现的序列。

Remarks

采用最左最长匹配:在每一个起始位置上沿字典树尽可能地向前推进,取所能匹配到 的最长追加词。single_word 要求命中片段的左右两侧均不是单词字符, lstrip / rstrip 则会额外吞掉命中片段两侧的空白字符。

method IsWordBoundary #
IsWordBoundary(String, Int32, Int32)

判断命中片段的左右两侧是否均为非单词字符。

property Count #
Count

追加词的数量。