在文本标记化函数或模型中添加特殊标记

问题描述 投票:0回答:1

我正在尝试使用 Tensorflow Javascript 制作聊天机器人模型,我想对文本进行标记化,以便我可以分离 contextpast messages 和当前 prompt 以输出 reply。所以我在想,为了让模型正常工作,它必须知道我将输入的每个数据之间的差异。

但问题是我无法找到使用 tfjs 向我的文本添加特殊标记的方法(这在 python 中使用 beet tokenizer 是可能的)。所以我真的很感谢你在这个问题上的帮助。期待你们的回复😊

我检查了 Universal Sentence Encoder,它在标记文本方面非常有效,但我仍在努力添加特殊标记。

javascript tensorflow chatbot tokenize encoder
1个回答
0
投票

虽然 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 分词器那样处理子词分词。

© www.soinside.com 2019 - 2024. All rights reserved.