Skip to content
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

使用英文数据集(Conll2003)时,tokenizer的问题 #12

Open
Daniel19960601 opened this issue Feb 25, 2021 · 6 comments
Open

使用英文数据集(Conll2003)时,tokenizer的问题 #12

Daniel19960601 opened this issue Feb 25, 2021 · 6 comments

Comments

@Daniel19960601
Copy link

您好,感谢对我再“出现wordPiece应该怎么办?”这一问题下的提问了。
是我描述不到位,我遇到的问题是:
数据集使用的Conll2003,Bert模型使用的是bert-base-cased。运行时出现如下错误:

File "D:\python-workspace\BERT-BiLSTM-CRF-NER-pytorch-master\utils.py", line 162, in convert_examples_to_features
assert len(ori_tokens) == len(ntokens), f"{len(ori_tokens)}, {len(ntokens)}, {ori_tokens}, {ntokens}"
AssertionError: 3, 8, ['[CLS]', '-DOCSTART-', '[SEP]'], ['[CLS]', '-', 'do', '##cs', '##tar', '##t', '-', '[SEP]']

可见,是tokenizer将单词切分了,导致assert len(ori_tokens) == len(ntokens)不能通过,请问如何解决?感谢您。

@hertz-pj
Copy link
Owner

hertz-pj commented Mar 4, 2021

后面有空补充一下这块的处理吧,之前没有考虑到英文数据集wordpiece的问题。

@Daniel19960601
Copy link
Author

后面有空补充一下这块的处理吧,之前没有考虑到英文数据集wordpiece的问题。

您好,能否提供一下英文数据集wordpiece处理的思路,想自己试一试,感谢!

@zingxy
Copy link

zingxy commented Oct 1, 2021

@Daniel19960601 把这行去掉, 然后对齐标签就行

@brennenhuang
Copy link

針對這個問題可以參考這一篇
https://github.com/wzhouad/NLL-IE 裡面的prepro.py
具體來說會先把-DOCSTART-過濾掉,這代表一句話的開頭,然後每個docs第一句使用truecase轉成正確英文大小寫
每一句都會使用Wordpiece進行切割,注意一個詞如果切割後變成三個subword,只有第一個會對應到label,後面的label都會對應到-1(不進行回饋)

@reBiocoder
Copy link

@brennenhuang -1感觉不行啊,eval反推标签的时候,-1没有key。

@brennenhuang
Copy link

@reBiocoder
舉例來說要eval時
I live in Taipei
經過tokenizer
I live in Tai ##pei
轉換ID
20 30 10 21 23
預測
None None None PLACE X
也就是##pei的預測值不理會,進行輸出

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants