https://github.com/google-research/bert
https://github.com/CyberZHG/keras-bert
在 BERT 中,每个单词的嵌入向量由三部分组成:
Token 嵌入向量:该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。
Segment 嵌入向量:该向量用于表示每个单词所属的句子。对于一个包含两个句子的序列,使用0表示第一个句子,使用1表示第二个句子。对于一个只包含一个句子的序列,将所有的句子标记都设置为0。
Position 嵌入向量:该向量用于表示每个单词在序列中的位置。对于一个长度为L的序列,每个单词都会被分配一个表示其位置的向量,该向量的维度为d,其中d是嵌入向量的维度。
这三个向量会被按照一定的方式进行组合,得到一个最终的嵌入向量,用于表示当前单词在上下文中的语义信息。这个嵌入向量会作为输入序列的一部分,输入到模型中进行训练或推理。
return [“”.join(x) for x in output]
return [“”.join(x) for x in output]是一个列表推导式,用于将output列表中的子列表转换为字符串列表。
具体来说,output列表中的每个子列表表示一个单词,其中包含了该单词中的所有字符。例如,对于输入文本Hello, world!,_run_split_on_punc()函数会将其分割成一个包含5个子列表的列表[[‘H’, ‘e’, ‘l’, ‘l’, ‘o’], [‘,’], [’ ‘], [‘w’, ‘o’, ‘r’, ‘l’, ‘d’], [’!']],其中每个子列表表示一个单词。
列表推导式[“”.join(x) for x in output]的作用是将每个子列表中的字符拼接成一个字符串,并将这些字符串组合成一个新的字符串列表。具体来说,“”.join(x)将一个子列表中的所有字符拼接成一个字符串,而[“”.join(x) for x in output]则将output列表中的每个子列表都转换为一个字符串,并将这些字符串组合成一个新的列表。
例如,对于输入文本Hello, world!,_run_split_on_punc()函数会将其分割成一个包含5个子列表的列表[[‘H’, ‘e’, ‘l’, ‘l’, ‘o’], [‘,’], [’ ‘], [‘w’, ‘o’, ‘r’, ‘l’, ‘d’], [’!']],而列表推导式[“”.join(x) for x in output]则会将这些子列表转换为一个新的字符串列表[‘Hello’, ‘,’, ’ ', ‘world’, ‘!’],其中每个字符串表示一个单词。
打印格式问题,才会有空格。。
![在这里插入图片描述](https://img-blog.csdnimg.cn/56628d678330476fab698daf7d8c5703.png