-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
出现wordPiece应该怎么办? #9
Comments
理论上按照我的预处理方法处理出的数据应该不会有wordPiece出现,实在什么情况出现的该问题呢。 |
您好,我在用英文数据集跑的时候会出现这样的问题,请问该如何解决?谢谢你。 |
在train的时候不去管他,在test的时候,如果有wordPiece出现,只保留第一个词。这样保证词的数量不变 |
if mode == "test" and len(token) > 1: |
您好,感谢回复。
可见,是tokenizer将单词切分了,导致assert len(ori_tokens) == len(ntokens)不能通过,请问如何解决?感谢您。 |
不好意思,之前没看到。 |
只保留第一个分词不会影响模型的预测结果吗? |
可以尝试一下这样的做法。个人认为影响不是太大 |
好,我尝试一下,感谢您的回复。 |
只考虑第一个好像需要 |
我刚好也碰到这个问题,做英文ner,用wordpiece方法分词,就以[['[CLS]', '-', 'do', '##cs', '##tar', '##t', '-', '[SEP]']为例,我喂给bert的数据集features里tag_id是就只给第一个子词'do'原来’-docstart-‘的标签,其他的词用比如-100代替?那crf层的数据输入中mask也许要屏蔽掉除第一个字词的其他词嘛,输出结果又会是什么样的呢。 |
我翻了下pytorch-crf源码 它的input_mask中所有的padding只在右边,所以就会是错误的 |
之前确实没有考虑word piece的问题。这里我建议可能如果是word piece后的结果,也按照第一个开头的token标B,其他标注为I来进行标注,貌似比用-100合理一些,可以做实验验证一下。 |
这样导致原本的word和token之间对应不上。
The text was updated successfully, but these errors were encountered: