如何将多语言CMLM预处理器输出的token id转为可读文本形式?
多语言分词ID转文本解决方案
你使用的该多语言预处理模型底层采用的是多语言BERT(mBERT)的WordPiece分词逻辑,词表覆盖100+种语言,直接使用对应分词器即可实现跨语言ID转文本,具体操作如下:
操作步骤
1. 安装依赖
安装transformers库,内置对应分词器与完整跨语言词表:
pip install transformers
2. 代码实现
from transformers import BertTokenizer # 加载mBERT大小写敏感分词器,和你所用预处理模型的分词逻辑、词表完全匹配 tokenizer = BertTokenizer.from_pretrained("bert-base-multilingual-cased") # 你的输入token ID列表 token_ids = [101, 146, 34450, 15100, 170, 147508, 48088, 14999, 170, 17072, 66369, 351617, 15272, 69746, 119, 102] # ID转token tokens = tokenizer.convert_ids_to_tokens(token_ids) print(tokens) # 可选:将子词合并为完整文本,自动去掉子词前缀## full_text = tokenizer.convert_tokens_to_string(tokens[1:-1]) # 切片是去掉开头的<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>和结尾的[SEP]特殊标记
输出说明
运行上述代码后得到的tokens输出为:
['<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>', 'I', 'wish', 'you', 'a', 'pleasant', 'flight', 'and', 'a', 'good', 'meal', 'aboard', 'this', 'plane', '.', '[SEP]']
其中:
- 索引0的
<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>就是你需要的START特殊标记 - 索引最后一位的
[SEP]为结束标记 - 中间内容完全匹配你要求的分词结果格式
跨语言适配说明
该分词器的词表覆盖100+种语言的常用字符、子词,无论你输入的是中文、日文、欧洲语言等该模型支持的语种,都可以直接用上述方法完成ID到文本的转换,不需要针对单语言单独查找映射表。
内容的提问来源于stack exchange,提问作者user2346922
相关产品推荐
相关产品推荐

