【发布时间】:2020-09-01 09:55:34
【问题描述】:
我想用预训练的俄罗斯 bert 解决压力预测任务。
输入数据如下所示:
граммов сверху|000100000001000
零表示没有压力。一个代表重音位置字符。
我想将它映射为单词 -> 元音数字索引
所以它会像 граммов -> 1 сверху -> 1
所以,对于每个token,它应该是一个带有softmax的线性层。
我理解这部分,但是我很难处理文本预处理,因为文本标记器可以将一个单词拆分为子词标记。
Tokenizator 接受输入字符串并返回这样的标记
bert_tokenizer.encode('граммов сверху')
->
[101, 44505, 26656, 102]
那么,如何获取输入字符和单词之间的位置映射呢?
所需的输出应该类似于 [[0, 7], [8, 14]]
我尝试阅读文档 https://huggingface.co/transformers/main_classes/tokenizer.html
并找到了 convert_ids_to_tokens 函数 它像
encoded = bert_tokenizer.encode('граммов сверху')
bert_tokenizer.convert_ids_to_tokens(encoded)
->
['[CLS]', 'граммов', 'сверху', '[SEP]']
但我不确定如何使用原始字符串和重音索引来计算令牌的重音位置数。
【问题讨论】:
标签: python nlp pytorch huggingface-transformers