从经典学习 NLP:小白到大白:1. Word Tokenization

文章目录

      • [1 Word Tokenization](#1 Word Tokenization)
        • [1.1 Top-down/rule-based tokenization](#1.1 Top-down/rule-based tokenization)
        • [1.2 Byte-pair Encoding: A Bottom-up tokenization algorithm](#1.2 Byte-pair Encoding: A Bottom-up tokenization algorithm)

1 Word Tokenization

来源:JM3 Chapter 2.5 p19-23

tokenization 就是 把 running text 分割成为 words;

常有两种方法:

  • top-down/rule-based tokenization
    根据预先定义的标准与规则实现分词;
  • bottom-up tokenization
    使用字母序列的统计量实现分词;
1.1 Top-down/rule-based tokenization

举个例子,

首先要注意 clitic contraction ,也就是附着缩略词的处理,clitic 是:" A clitic is a part of a word that can't stand on its own, and can only occur when it is attached to another word. "

按照 Penn Treebank tokenization 标准:

doesn't 被展开为 does + n't

其中的 n't 就是 clitic contraction 嘛

tokenization 会保持 hyphenated words,即连字符连接的词在一起,并把所有 punctuation,即标点符号进行分割!具体例子可以见:

![[Pasted image 20240229223529.png]]

tokenization 可以展开这种 clitic contraction,也可以看到,tokenization 识别出了 does 这个词,所以 tokenization 也和 NLP 的一个方向:named entity recognition 紧密相关!

由于 tokenization 在 其他的 text precessing 前,所以需要比较迅速,常是基于 regular expression 正则表达式,正则表达式通常都编译入非常高效的 有限状态自动机。

设计优秀的 top-down tokenization 所遵循的 deterministic algorithm 可以处理各种 ambiguity,比如 不同的 撇好apostrophe:

  • genitive marker 属格
    the book's cover
  • quotative 引用
    'The other class', she said
  • clitics 附着词
    they're, doesn't

不同的语言在进行tokenization时可能存有不同困难,english 天然的以 words 分,但 chinese 不使用 space 进行 words 的分割,而是以 character,即汉字,作为分割得到的 token。由于chinese本身的character,也就是汉字,具有丰富的意义,研究表明,chinese NLP 中,以 character 作为 input 会比 words 更好。

但像 japanese,thai 等语言,他的 character 本身作为一个 unit 太小,不足以表达含义,所以也需要 word segmentation 算法。

1.2 Byte-pair Encoding: A Bottom-up tokenization algorithm

tokenization 很重要的一点是要有能力处理 unknown words,我们希望也能够处理 corpus,即语料库,之外的的 unknown words。

首先要引入一个 subwords 子字的概念,这是一种 sets of tokens that include tokens smaller than words. 即一种比 words 更小的 token.

子词并行:在自然语言处理中,一种处理词汇的方法,将词汇分解为更小的单元(子词),以便更好地处理稀有词汇和词汇变化。

subwords 可以是 arbitrary substring,也可以是有一定意义的 morphemes,即语素,比如:-est, -er.

A morpheme is the smallest meaning-bearing unit of a language; for example the word unlikeliest has the morphemes un-, likely, and -est.

现代 tokenization 方法中的 token 常为 words,但也可以为 某些 frequently morpheme 高频语素,或者是一些其他的 字词,比如:-er.

基于 subword,任何 unknow words 都可以由某些 subwords units 序列构成,比如 lower,可以由 low 和 -er 这两个 subwords 组成,或者,如果有必要,可以视为由 -l, -o,-w, -e, -r 等一系列 letter 构成。

tokenization schema 一般分为 token learner 和 token segmenter。前者从 corpus语料中学习,并产生vocabulary,即 set of tokens。后者作用于原始文本,对文本按照 vocabulary 进行分割,实现分词得到一系列 tokens。

常有三种方法:

  • byte-pair encoding, BPE
  • unigram language modeling
  • SentencePiece library 含有上述两种,但常指代后一种

BPE token learner 由所有部分均为 individual character 的 vocabulary 开始,根据 training corpus 中的 words,去寻找具有最高出现频次的 adjacent symbols (symbol可以是多个character构成)。注意,最开始的 vocabulary 就是所有 character 构成的。

将最高频次的 symbols 不断merge,并加入到 vocabulary中,以一种greedy的思想去不断 merge highest frequent adjacent symbols into vocabulary,直到添加完毕 k k k 个 symbols 进入到 vocabulary中。注意,这里的 k k k 是 BPE algorithm 的参数。通过BPE,最终得到的 vocabulary 就是由原来的 individual characters 加上 k k k 个 merged symbols.

过程中,同样频率的 pairs of characters,哪个先 merge 没有特定要求,是 arbitrary 的!

BPE的核心思想:
iteratively merge freaquent pairs of characters.

一些优点:

  • data-informed tokenization
    language independent, can derive the vocabulary for the language with only corpus, this BPE can figure the corpus itself;
  • works for different languages
    no need to design rules for different language
  • deal better with unknown words
    worst case: unknown words 分成 individual characters

最终的 vocabulary 里,大部分都是 full words,少部分是 subwords。

最差情况下,unknown word 也是被分为多个 individual characters。

具体例子参考 jm3,p21. 简单展示:

![[Pasted image 20240301174028.png]]
注意,有一个 end-of-word symbol _;

从过程来看,一般都是从 end-of-word 处开始 merge。

基于最终得到的 vocabulary:

对于 n e w e r ,其会被分为一整个 token:newer

对于 unknown word l o w e r , 会被分为两个 token: low 和 er.

相关推荐
野蛮的大西瓜7 分钟前
开源呼叫中心中,如何将ASR与IVR菜单结合,实现动态的IVR交互
人工智能·机器人·自动化·音视频·信息与通信
CountingStars61932 分钟前
目标检测常用评估指标(metrics)
人工智能·目标检测·目标跟踪
tangjunjun-owen40 分钟前
第四节:GLM-4v-9b模型的tokenizer源码解读
人工智能·glm-4v-9b·多模态大模型教程
冰蓝蓝1 小时前
深度学习中的注意力机制:解锁智能模型的新视角
人工智能·深度学习
兔C1 小时前
微信小程序的轮播图学习报告
学习·微信小程序·小程序
橙子小哥的代码世界1 小时前
【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
人工智能·计算机视觉
海海不掉头发1 小时前
苍穹外卖-day05redis 缓存的学习
学习·缓存
黄公子学安全1 小时前
Java的基础概念(一)
java·开发语言·python
新加坡内哥谈技术1 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
程序员一诺2 小时前
【Python使用】嘿马python高级进阶全体系教程第10篇:静态Web服务器-返回固定页面数据,1. 开发自己的静态Web服务器【附代码文档】
后端·python