【发布时间】:2020-11-25 13:16:46
【问题描述】:
使用 BPE 或 WordPiece,可能有多种方法可以对单词进行编码。例如,假设(为简单起见)令牌词汇表包含所有字母以及合并的符号(“to”、“ke”、“en”)。那么单词“token”可以编码为(“to”,“ke”,“n”)或(“to”,“k”,“en”)。这种模棱两可的编码在本教程中也有提及https://blog.floydhub.com/tokenization-nlp/
但是,在 hugginface 教程中提到“BPE 和 WordPiece [...] 以特定顺序制定规则,然后您可以在标记新文本时以相同顺序应用”,请参阅 https://huggingface.co/transformers/master/tokenizer_summary.html。
在使用 BPE/WordPiece 时,这些规则究竟是如何存储和应用的,例如,在我上面的示例中,它是如何确定要使用哪个标记化的?
【问题讨论】:
-
这只是意味着您可以使用BPE或WordPiece(或SentencePiece)模型对一些文本进行编码,然后解码以获得原始文本。如果您是从头开始训练,请选择任何一种,当您进行增量训练时,您将需要应用相同的标记化方案。
-
好的,谢谢,但假设我使用 BPE/WordPiece 进行预处理,然后训练了像 GPT 或 BERT 这样的语言模型。现在我将经过训练的模型应用于一个新文本,其中包含一个模棱两可的词(在我的示例中为“token”)。就模型所做的预测而言,现在如何处理这个词会有所不同。那么单词的编码是如何确定的呢?
-
我的猜测是 BPE/WordPiece 总是尽可能使用最大的单位。但是,有时所有可能的子词标记化可能具有相同的长度(例如,在我的示例中)
-
我不认为你可以用不同的方式对同一个词进行标记。即使是这样,也应该不是问题。
标签: merge nlp tokenize bert-language-model huggingface-tokenizers