lonePatient / BERT-NER-Pytorch

Chinese NER(Named Entity Recognition) using BERT(Softmax, CRF, Span)
MIT License
2.08k stars 427 forks source link

mask in crf #25

Closed DanqingZ closed 4 years ago

DanqingZ commented 4 years ago

您好,

请问用attention_mask做crf的mask的话,一个word假设有多个sub tokens,那这些tokens都就都keep了。在bert for ner里面,是用一个词的第一个token做的classification。

https://github.com/lonePatient/BERT-NER-Pytorch/blob/master/models/bert_for_ner.py#L64 同时在decode的时候

https://github.com/lonePatient/BERT-NER-Pytorch/blob/38326e125696c5a34c54ada676930bee4a2d1693/run_ner_crf.py#L210

此处的mask也是attention mask。那么就会导致从CLS到SEP还有其中的所有token都会被keep,用于做decode。请问此处mask这样设置合理么?还是应该只保留每个word的第一个token呢?谢谢!

lonePatient commented 4 years ago

@DanqingZ 大部分中文NER数据都是char分开了,##token英文数据系多点,可以简单修改下就行了,短时间内可能没空去修改了,正在写论文。后续我对英文数据适配下 。

DanqingZ commented 4 years ago

好的,明白了!那请问CLS和SEP应该keep么,如果是用attention mask这两个也传给CRF了。