BPE 分词解密 - 实现方法与示例讲解

在 NLP 里面,一个核心的问题是,如何对文本进行分词?从分类的角度上面来说,可以分为:

  • Char level
  • Word level
  • Subword level

先看 Char level 分词,顾名思义,就是把文本拆分成一个个字符单独表示,比如 highest -> h, i, g, h, e, s, t,一个显然的好处是,Vocab 不会太大,Vocab 的大小为字符集的大小,也不会遇到 Out-of-vocabulary(OOV) 的问题,但是字符本身并没有传达太多的语义,而且分词之后会有太多的 token光是一个 highest 就可以得到 7 个 token,难以想象很长的文本分出来会有多少个😨

TF-IDF 模型

在之前的 文章 中谈到了词袋模型,也讲到了它的许多不足,在今天的这篇文章中,我们要尝试解决词袋模型的缺点之一:每个词的重要性是一样的

Quesstion

那么,核心问题就是————如何定义「单词的重要性」这个概念?

词袋模型

在 NLP 中,我们需要将文档(document)表示为向量,这是因为机器学习只能够处理数字。也就是说,我们要找到下面这么一个神奇的函数:

$$ f(\text{document}) = vector $$

今天要讨论的是词袋模型(bag-of-word, BoW),词袋模型可以让我们把输入的文档转变成一个向量表示

如何记忆红黑树的操作

如果你点进了这一篇文章,相信你也跟我一样:红黑树学一次忘一次,又要做树的旋转,又要给节点重新上色,导致每次都是学完了就忘记。我也曾经仔细阅读过 CLRS 写的《算法导论》,但是上面的分类讨论只是让我更加头疼

当然,记住一项东西的最佳方式永远都是理解它,而最近看到斯坦福的 CS166 高级数据结构课程的课件的时候,我似乎理解了红黑树————红黑树和 2-3-4 树是等同(isometry)的数据结构,他们只是用了不同的方式表示 2-3-4 树1,这意味着我们可以通过 2-3-4 树上的节点变化,进而推导出红黑树上的形状和颜色的变化,而 2-3-4 树的节点变化,是简单很多的