问题
在Python 3.X环境下使用Hugging Face中Bert模型获取词向量时,发现tokenizer的分词结果出现乱码,如下:
# 这是直接在交互式命令行执行的结果
tokenizer.tokenize("anti - spam suit")
Out[3]: ['anti', '-', 'spa', '##m', 'suit']
转念一想,spam这样一个常见词应该在词表里出现啊,那问题应该出现在编码上,只要将字符串编码统一即可,想起之前看github上使用Bert的DNN项目代码,那个项目里在数据加载之前便进行了这样的操作。
解决办法
使用unicodedata
包的normalize
方法,代码如下
import unicodedata
unicodedata.normalize('NFD', 'anti - spam suit')
Out[6]: 'anti - spam suit'