热门
最新
红包
立Flag
投票
同城
我的
发布
杭州市余杭区
CSDN App 扫码分享
评论
点赞
打赏
- 复制链接
- 举报
下一条:
大模型基础入门:分词(tokenize)语言模型是对文本进行推理。由于文本是字符串,但对模型来说,输入只能是数字,所以就需要将文本转成用数字来表达。最直接的想法,就是类似查字典,构造一个字典,包含文本中所有出现的词汇,比如中文,可以每个字作为词典的一个元素,构成一个列表;一个句子就可以转换成由每个词的编号(词在词典中的序号)组成的数字表达。tokenize就是分词,一般分成3种粒度:•word(词) 词是最简单的方式,例如英文可以按单词切分。缺点就是词汇表要包含所有词,词汇表比较大;还有比如“have”,"had"其实是有关系的,直接分词没有体现二者的关系;且容易产生oov问题(Out-Of-Vocabulary,出现没有见过的词)•char(字符) 用基础字符表示,比如英文用26个字母表示。比如 "China"拆分为"C","h","i","n","a",这样降低了内存和复杂度,但增加了任务的复杂度,一个字母没有任何语义意义,单纯使用字符可能导致模型性能的下降。•subword(子词) 结合上述2个的优缺点,遵循“尽量不分解常用词,将不常用词分解为常用的子词”的原则。例如"unbelievable"在英文中是un+形容词的组合,表否定的意思,可以分解成un”+"believable"。通过这种形式,词汇量大小不会特别大,也能学到词的关系,同时还能缓解oov问题。subword分词主要有BPE,WorkdPiece,Unigram等方法。现在已经有很多预训练好的词汇表,如果需要扩充新的语言,比如中文,可以先收集好语料库(训练文本),然后用SentencePiece训练自己的分词模型。具体可以看【GitHub - taishan1994/sentencepiece_chinese_bpe: 使用sentencepiece中BPE训练中文词表,并在transformers中进行使用】https://github.com/taishan1994/sentencepiece_chinese_bpe