【问题标题】:How to understand byte pair encoding?如何理解字节对编码?
【发布时间】:2020-06-24 20:15:35
【问题描述】:

我阅读了很多关于 BPE 的教程,但我仍然对它的工作原理感到困惑。

例如。 在网上的教程中,他们说:

算法

准备足够大的训练数据(即语料库)

定义所需的子词词汇量

将单词拆分为字符序列并在末尾添加后缀“”

词频。所以这个阶段的基本单位是性格。例如,“low”的频率是5,那么我们将其改写为“l o w”:5 根据高频出现生成一个新的子词。 重复第 4 步,直到达到第 2 步中定义的子词词汇量或下一个最高频率对为 1。

以“low: 5”、“lower: 2”、“newest: 6”和“widest: 3”为例,频率最高的子词对是e和s。这是因为我们从最新获得 6 个计数,从最宽获得 3 个计数。然后形成新的子词(es),它将成为下一次迭代的候选词。

在第二次迭代中,下一个高频子词对是 es(由上一次迭代生成)和 t。这是因为我们得到 6count 从最新到最宽的 3 个。

我不明白为什么low是5,lower是2:

这是否意味着 l , o, w , lo, ow + = 6 然后下等于 2 但为什么不是 e, r, er 给出三个?

【问题讨论】:

  • 你看过this的文章吗?它通过示例给出了非常容易理解的算法,并且与原始论文中描述的相同。

标签: python scikit-learn nlp vectorization


【解决方案1】:

您询问的数字是语料库中单词的频率。 “low”一词在语料库中出现了 5 次,“lower”一词出现了 2 次(他们只是假设这个例子)。

在第一次迭代中,我们看到字符对“es”是最常见的,因为它在“newest”的 6 次出现中出现了 6 次,在 3 次出现中出现了 3 次单词“widest”。

在第二次迭代中,我们将“es”作为词汇表中的一个单位,就像我们使用单个字符一样。然后我们看到“est”是最常见的字符组合(“newest”和“widest”)。

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 2023-03-27
    • 2010-12-05
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2018-11-08
    • 2014-02-03
    相关资源
    最近更新 更多