Transformers.js 文档
utils/data-structures
并获得增强的文档体验
以开始使用
utils/data-structures
自定义数据结构。
这些仅在内部使用,意味着最终用户不应需要访问此处的任何内容。
- utils/data-structures
- 静态
- .PriorityQueue
new PriorityQueue(comparator)
.size
.isEmpty()
⇒boolean
.peek()
⇒any
.push(...values)
⇒number
.extend(values)
⇒number
.pop()
⇒any
.replace(value)
⇒*
._siftUpFrom(node)
- .CharTrie
- .TokenLattice
new TokenLattice(sentence, bosTokenId, eosTokenId)
.insert(pos, length, score, tokenId)
.viterbi()
⇒Array.<TokenLatticeNode>
.piece(node)
⇒string
.tokens()
⇒Array.<string>
.tokenIds()
⇒Array.<number>
- .DictionarySplitter
new DictionarySplitter(dictionary)
.split(text)
⇒Array.<string>
- .PriorityQueue
- 内部
- ~CharTrieNode
new CharTrieNode(isLeaf, children)
.default()
⇒CharTrieNode
- ~TokenLatticeNode
new TokenLatticeNode(tokenId, nodeId, pos, length, score)
.clone()
⇒TokenLatticeNode
- ~CharTrieNode
- 静态
utils/data-structures.PriorityQueue
优先级队列的高效堆实现。它使用基于数组的二叉堆,其中根节点位于索引 0
,节点 i
的子节点分别位于索引 2i + 1
和 2i + 2
。
改编自以下来源
- https://stackoverflow.com/a/42919752/13989043 (original)
- https://github.com/belladoreai/llama-tokenizer-js (minor improvements)
类型:utils/data-structures
的静态类
- .PriorityQueue
new PriorityQueue(comparator)
.size
.isEmpty()
⇒boolean
.peek()
⇒any
.push(...values)
⇒number
.extend(values)
⇒number
.pop()
⇒any
.replace(value)
⇒*
._siftUpFrom(node)
new PriorityQueue(comparator)
创建一个新的 PriorityQueue。
参数 | 类型 | 描述 |
---|---|---|
comparator | 函数 | 用于确定优先级的比较器函数。默认为 MaxHeap。 |
priorityQueue.size
队列的大小
类型:PriorityQueue
的实例属性
priorityQueue.isEmpty() ⇒ <code> boolean </code>
检查队列是否为空。
类型:PriorityQueue
的实例方法
返回:boolean
- 如果队列为空,则为 true
,否则为 false
。
priorityQueue.peek() ⇒ <code> any </code>
返回队列中优先级最高的元素。
类型:PriorityQueue
的实例方法
返回:any
- 队列中优先级最高的元素。
priorityQueue.push(...values) ⇒ <code> number </code>
向队列添加一个或多个元素。
类型:PriorityQueue
的实例方法
返回:number
- 队列的新大小。
参数 | 类型 | 描述 |
---|---|---|
...values | any | 要推入队列的值。 |
priorityQueue.extend(values) ⇒ <code> number </code>
向队列添加多个元素。
类型:PriorityQueue
的实例方法
返回:number
- 队列的新大小。
参数 | 类型 | 描述 |
---|---|---|
values | Array.<any> | 要推入队列的值。 |
priorityQueue.pop() ⇒ <code> any </code>
移除并返回队列中优先级最高的元素。
类型:PriorityQueue
的实例方法
返回:any
- 队列中优先级最高的元素。
priorityQueue.replace(value) ⇒ <code> * </code>
使用新值替换队列中优先级最高的元素。
类型:PriorityQueue
的实例方法
返回:*
- 被替换的值。
参数 | 类型 | 描述 |
---|---|---|
value | * | 新值。 |
priorityQueue._siftUpFrom(node)
从给定节点向上筛选的辅助函数。
类型:PriorityQueue
的实例方法
参数 | 类型 | 描述 |
---|---|---|
node | number | 开始向上筛选的节点的索引。 |
utils/data-structures.CharTrie
一种用于高效存储和搜索字符串的 Trie 结构。
类型:utils/data-structures
的静态类
charTrie.extend(texts)
向 trie 添加一个或多个 texts
。
类型:CharTrie
的实例方法
参数 | 类型 | 描述 |
---|---|---|
texts | Array.<string> | 要添加到 trie 的字符串。 |
charTrie.push(text)
向 trie 添加文本。
类型:CharTrie
的实例方法
参数 | 类型 | 描述 |
---|---|---|
text | string | 要添加到 trie 的字符串。 |
charTrie.commonPrefixSearch(text)
在 trie 中搜索所有以 text
为公共前缀的字符串。
类型:CharTrie
的实例方法
参数 | 类型 | 描述 |
---|---|---|
text | string | 要搜索的公共前缀。 |
utils/data-structures.TokenLattice
一种用于分词的格状数据结构。
类型:utils/data-structures
的静态类
- .TokenLattice
new TokenLattice(sentence, bosTokenId, eosTokenId)
.insert(pos, length, score, tokenId)
.viterbi()
⇒Array.<TokenLatticeNode>
.piece(node)
⇒string
.tokens()
⇒Array.<string>
.tokenIds()
⇒Array.<number>
new TokenLattice(sentence, bosTokenId, eosTokenId)
创建一个新的 TokenLattice 实例。
参数 | 类型 | 描述 |
---|---|---|
sentence | string | 要分词的输入句子。 |
bosTokenId | number | 序列开始 (beginning-of-sequence) 标记 ID。 |
eosTokenId | number | 序列结束 (end-of-sequence) 标记 ID。 |
tokenLattice.insert(pos, length, score, tokenId)
将新的标记节点插入到标记格 (token lattice) 中。
类型:TokenLattice
的实例方法
参数 | 类型 | 描述 |
---|---|---|
pos | number | 标记的起始位置。 |
length | number | 标记的长度。 |
score | number | 标记的分数。 |
tokenId | number | 标记的标记 ID。 |
tokenLattice.viterbi() ⇒ <code> Array. < TokenLatticeNode > </code>
实现 Viterbi 算法以计算最可能的标记序列。
类型:TokenLattice
的实例方法
返回:Array.<TokenLatticeNode>
- 最可能的标记序列。
tokenLattice.piece(node) ⇒ <code> string </code>
类型:TokenLattice
的实例方法
返回:string
- 标记节点对应的文本片段。
参数 | 类型 |
---|---|
node | TokenLatticeNode |
tokenLattice.tokens() ⇒ <code> Array. < string > </code>
类型:TokenLattice
的实例方法
返回:Array.<string>
- 最可能的标记序列。
tokenLattice.tokenIds() ⇒ <code> Array. < number > </code>
类型:TokenLattice
的实例方法
返回:Array.<number>
- 最可能的标记 ID 序列。
utils/data-structures.DictionarySplitter
一种数据结构,它使用 trie 树(字典树)根据字典将字符串拆分为 tokens(标记)。它还可以使用正则表达式在拆分前预处理输入文本。
注意:为了确保正确处理多字节字符,我们以字节级别而不是字符级别进行操作。
类型:utils/data-structures
的静态类
- .DictionarySplitter
new DictionarySplitter(dictionary)
.split(text)
⇒Array.<string>
new DictionarySplitter(dictionary)
参数 | 类型 | 描述 |
---|---|---|
字典 | Array.<string> | 用于拆分的单词字典。 |
dictionarySplitter.split(text) ⇒ <code> Array. < string > </code>
根据字典将输入文本拆分为 tokens(标记)。
类型: DictionarySplitter
的实例方法
返回: Array.<string>
- tokens(标记)数组。
参数 | 类型 | 描述 |
---|---|---|
text | string | 要拆分的输入文本。 |
utils/data-structures~CharTrieNode
表示字符 trie 树(字典树)中的一个节点。
类型: utils/data-structures
的内部类
- ~CharTrieNode
new CharTrieNode(isLeaf, children)
.default()
⇒CharTrieNode
new CharTrieNode(isLeaf, children)
创建一个新的 CharTrieNode。
参数 | 类型 | 描述 |
---|---|---|
isLeaf | 布尔值 | 节点是否为叶节点。 |
children | Map.<string, CharTrieNode> | 包含节点子节点的映射,其中键是字符,值是 |
CharTrieNode.default() ⇒ <code> CharTrieNode </code>
返回一个新的 CharTrieNode
实例,并带有默认值。
类型: CharTrieNode
的静态方法
返回: CharTrieNode
- 一个新的 CharTrieNode
实例,其中 isLeaf
设置为 false
,children
映射为空。
utils/data-structures~TokenLatticeNode
类型: utils/data-structures
的内部类
- ~TokenLatticeNode
new TokenLatticeNode(tokenId, nodeId, pos, length, score)
.clone()
⇒TokenLatticeNode
new TokenLatticeNode(tokenId, nodeId, pos, length, score)
表示给定句子 token lattice(词格)中的一个节点。
参数 | 类型 | 描述 |
---|---|---|
tokenId | number | 与此节点关联的 token(标记)的 ID。 |
nodeId | number | 此节点的 ID。 |
pos | number | token(标记)在句子中的起始位置。 |
length | number | 标记的长度。 |
score | number | 与 token(标记)关联的分数。 |
tokenLatticeNode.clone() ⇒ <code> TokenLatticeNode </code>
返回此节点的克隆。
类型: TokenLatticeNode
的实例方法
返回: TokenLatticeNode
- 此节点的克隆。
< > 在 GitHub 上更新