赞
踩
来源:JM3 Chapter 2.5 p19-23
tokenization 就是 把 running text 分割成为 words;
常有两种方法:
举个例子,
首先要注意 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:
不同的语言在进行tokenization时可能存有不同困难,english 天然的以 words 分,但 chinese 不使用 space 进行 words 的分割,而是以 character,即汉字,作为分割得到的 token。由于chinese本身的character,也就是汉字,具有丰富的意义,研究表明,chinese NLP 中,以 character 作为 input 会比 words 更好。
但像 japanese,thai 等语言,他的 character 本身作为一个 unit 太小,不足以表达含义,所以也需要 word segmentation 算法。
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。
常有三种方法:
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.
一些优点:
最终的 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_.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。