pycorrector
pycorrector copied to clipboard
使用自己的数据集在macbert上训练报错
您好,我自己的数据集是中英文混合的,在macbert这个模型上训练的时候,加入错误的是英文字母的话,就会报 Expected input batch_size (104) to match target batch_size (108) 这个错误,好像英文字母出错的话就会改变batch的长度,导致batch前后不匹配,请问您遇到过这种情况吗?
英文字母出错的时候,应该是导致 tokenizer 在分词的时候出现问题:
例如 detection
被错写成 det*ction
后,
分词结果可能从 ["detect", "##ion"]
变成了 ["det", "*", "##ct", "##ion"]
,或是英文单词间的空格会在分词中被过滤掉,其结果是造成了错误句和正确句在分词后词数不相同的问题。
目前的 MacBERT 只能够支持对齐语料,也就是输入和输出需要在词的数量上保证长度一致。所以可能需要在数据处理的时候想想办法了。
例如,刚才提到的属于非词错误 (non-word errors, 即 某个 word "不是一个英文词语") ,可以在检出后使用其他非词错误的解决方案进行处理,目前有很多较为成熟的方式可以处理英文中的非词错误,例如词表检出+编辑距离+LM。
MacBERT 可以在那之后,用于处理剩余的真词错误 (real-word errors,例如 snack 误写成 snake 的问题)。
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.(由于长期不活动,机器人自动关闭此问题,如果需要欢迎提问)
英文字母出错的时候,应该是导致 tokenizer 在分词的时候出现问题: 例如
detection
被错写成det*ction
后, 分词结果可能从["detect", "##ion"]
变成了["det", "*", "##ct", "##ion"]
,或是英文单词间的空格会在分词中被过滤掉,其结果是造成了错误句和正确句在分词后词数不相同的问题。目前的 MacBERT 只能够支持对齐语料,也就是输入和输出需要在词的数量上保证长度一致。所以可能需要在数据处理的时候想想办法了。 例如,刚才提到的属于非词错误 (non-word errors, 即 某个 word "不是一个英文词语") ,可以在检出后使用其他非词错误的解决方案进行处理,目前有很多较为成熟的方式可以处理英文中的非词错误,例如词表检出+编辑距离+LM。 MacBERT 可以在那之后,用于处理剩余的真词错误 (real-word errors,例如 snack 误写成 snake 的问题)。
我遇到相同的报错,但是我把英文数字都去掉了 还是报这个错,是什么原因造成的呢
可以把生成后的 input_ids 打印出来看一下,借助 tokenizer 看看送入模型的 labels 和 inputs 实际是什么。
找到了,因为空格没了,谢谢