tokenize embeding word2wec...词表,词嵌入,分词...都是干什么的

在NLP任务中,输入的大多是一个句子,多个句子组成一个batch。模型本身不能直接处理文本,所以需要先把文本转化成数字。流程大多数是:
分词->构建词表->词嵌入

  • 分词
    分词是将一个句子拆分成一个个单词/短语,这些单词/短语称为token,分词被叫做tokenize。
    tokenize的粒度有word/char/subword三个层级。
    一个token并不一定是一个单词,也可能是一个后缀、前缀、字符等。比如对于句子'I love nature language processing',分词后是'I', 'love', 'nature', 'language', 'processing',也有的会把'processing'分成'process', 'ing'
    最常用的三种tokenize算法:BPE(Byte-Pair Encoding),WordPiece和SentencePiece
    这里详解

  • 构建词表
    词表的作用是,把一个token映射为一个整数,也就是记录token和数字的对应关系,比如'I'对应105。该整数随意,无关紧要,不同的token别重复了就行。

  • 词嵌入
    把一个整数转换成一个n维向量,输入模型的就是这个向量,方法有word2vec,glove等。现在多用的是torch.nn.Embedding。

词表和词嵌入权重,一定要在训练完毕后保存下来,推理必须使用和训练相同的词表、词嵌入。

posted @ 2022-07-29 18:09  王冰冰  阅读(372)  评论(0编辑  收藏  举报