返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、Subword Tokenization 算法

发布于 2023-07-17 23:38:23 字数 2917 浏览 0 评论 0 收藏 0

  1. TokenizerNLP pipeline 的核心组件之一。Tokenizer 的目标是:将文本转换为模型可以处理的数据。模型只能处理数字,因此 Tokenizer 需要将文本输入转换为数字输入。

    通常而言有三种类型的 TokenizerWord-based TokenizerCharacter-based TokenizerSubword Tokenizer

    • Word-based Tokenizer:通常很容易设置和使用,只需几条规则,并且通常会产生不错的结果。

      例如,我们可以通过应用 Pythonsplit()函数,通过空格将文本 tokenize 为单词:

      
      tokenized_text = "I like NLP".split()
      print(tokenized_text)
      # ['I', 'like', 'NLP']
      tokenized_text = "我 喜欢 NLP".split()
      print(tokenized_text)
      # ['我', '喜欢', 'NLP']

      但是,Word-based Tokenizer 最终会得到一些非常大的词表 vocabulary 。如,Transformer-XL 将得到一个大小为 267735 的词表。如此庞大的词表将迫使模型学习一个巨大的 embedding matrix ,这导致了空间复杂度和时间复杂度的增加。一般而言,transformers 模型的词表规模很少超过 50K ,尤其是当它们仅在一种语言上进行训练时。

    • Character-based Tokenizer:将文本拆分为字符,而不是单词。这有两个主要好处:

      • 词表规模要小得多(通常只有几十甚至几百)。
      • unknown token 要少得多(因为任意单词都可以从字符构建)。

      但是,Character-based Tokenizer 有两个不足:

      • 首先, tokenize 之后得到字符表示,其意义不大:每个字符本身并没有多少语义。例如,学习字母 "t" 的有意义的 representation ,要比学习单词 "today"representation 困难得多。因此,Character-based Tokenizer 往往伴随着性能的损失。

        然而这又因语言而异,例如,在中文中每个字符比拉丁语言中的每个字符包含更多的信息。

      • 其次,相比较 word-based tokenizationcharacter-based tokenization 得到更大量的 token ,这增大了模型的负担。例如,使用 word-based tokenizer,一个单词只会是单个token ;但是当使用 character-based tokenizer 时,一个单词很容易变成 10 个或更多的 token

    • Subword-based Tokenizer:它是 word-based tokenizercharacter-based tokenizer 的折衷。

      subword tokenization 算法依赖于这样一个原则:不应将常用词拆分为更小的子词subword ,而应将低频词分解为有意义的子词。这使得我们能够使用较小的词表进行相对较好的覆盖,并且几乎没有 unknown token

      例如:"football" 可能被认定是一个低频词,可以分解为 "foot""ball"。而 "foot""ball" 作为独立的子词可能出现得更高频,同时 "football" 的含义由 "foot""ball" 复合而来。

      subword tokenization 允许模型具有合理的词表规模,同时能够学习有意义的 representation 。此外,subword tokenization 通过将单词分解成已知的子词,使模型能够处理以前从未见过的单词。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文