【问题标题】:BPE multiple ways to encode a wordBPE 多种方式对单词进行编码
【发布时间】: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


【解决方案1】:

在 BPE 的解析步骤中,合并顺序很重要。例如,如果合并顺序是

(p, e), (pe, n), (pen, _), (a, p), (ap, p), (app, l), (appl, e), (apple, _), (pen, apple_)

Applepen PenapplePen 应该被分割成:[a, p, p, l, e, pe, pen, a, p, p, l, e, pen],给定k = 2。我们只使用@987654324 @ 用于解析。由于合并顺序是固定的,因此对于任何 k 的测试数据,结果应该是固定的。您只需在解析步骤中使用前 k 个合并。

详情请参考my answer问题:Explain bpe (Byte Pair Encoding) with examples?

【讨论】:

    猜你喜欢
    • 2018-11-08
    • 2015-10-18
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多