我正在尝试使用 Tensorflow Javascript 制作聊天机器人模型,我想对文本进行标记化,以便我可以分离 context、past messages 和当前 prompt 以输出 reply。所以我在想,为了让模型正常工作,它必须知道我将输入的每个数据之间的差异。
但问题是我无法找到使用 tfjs 向我的文本添加特殊标记的方法(这在 python 中使用 beet tokenizer 是可能的)。所以我真的很感谢你在这个问题上的帮助。期待你们的回复😊
我检查了 Universal Sentence Encoder,它在标记文本方面非常有效,但我仍在努力添加特殊标记。
虽然 TensorFlow.js 没有像 Hugging Face 在 Python 中的分词器那样的内置分词器,但您仍然可以使用特殊的分词创建自己的分词器。
这是在 JavaScript 中使用特殊标记创建分词器的简单方法:
1.- 定义您的特殊标记,例如 [CONTEXT]、[PAST]、[PROMPT] 和 [END]。
const SPECIAL_TOKENS = {
context: "[CONTEXT]",
past: "[PAST]",
prompt: "[PROMPT]",
end: "[END]"
};
2.- 创建一个函数来标记给定文本。
function tokenize(text) {
// Split text into words by whitespace
const words = text.trim().split(/\s+/);
// You can customize this function to handle more complex tokenization
return words;
}
3.- 创建一个函数来标记带有特殊标记的文本。
function tokenizeWithSpecialTokens(text, type) {
const specialToken = SPECIAL_TOKENS[type];
const tokens = tokenize(text);
return [specialToken, ...tokens, SPECIAL_TOKENS.end];
}
4.- 现在您可以使用特殊标记标记您的上下文、过去的消息和当前提示,如下所示:
const contextTokens = tokenizeWithSpecialTokens(contextText, "context");
const pastTokens = tokenizeWithSpecialTokens(pastText, "past");
const promptTokens = tokenizeWithSpecialTokens(promptText, "prompt");
5.- 最后,连接标记数组并将它们用作模型的输入。
const inputTokens = [].concat(contextTokens, pastTokens, promptTokens);
使用这种方法,您可以标记文本并包含特殊标记,以帮助您的模型区分上下文、过去的消息和当前提示。请记住,此分词器非常简单,您可能希望对其进行改进以处理更复杂的文本或像 BERT 或 GPT 分词器那样处理子词分词。