lonePatient / BERT-NER-Pytorch

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

英文分词 #91

Open jenfung opened 1 year ago

jenfung commented 1 year ago

你好,请问英文分词中,一个word会被分成多个tokens,这种情况怎么处理呢?

lonePatient commented 1 year ago

使用huggfaceing中的tokenizer的offset_mapping关系进行word和suword的对应关系。后期我更新下

1390806607 commented 1 year ago

你好 请问这个有更新吗? 关于一个word会被分成多个toekns的情况

Mxk-1 commented 1 month ago

这个问题也困扰我很久,导致最后的label_ids==max_length断言失败 目前我是这样解决的 ` # 对输入文本进行标记化并扩展标签 tokens = [] label_ids = [] for word, label in zip(example.text_a.split(), example.labels): word_tokens = tokenizer.tokenize(word) tokens.extend(word_tokens)

对第一个子词使用原始标签,后续子词使用 "I-" 标签

        label_ids.extend(
            [label_map[label]]
            + [label_map[label.replace("B-", "I-")]] * (len(word_tokens) - 1)
        )`
Mxk-1 commented 1 month ago

        tokens = []
        label_ids = []
        for word, label in zip(example.text_a.split(), example.labels):
            word_tokens = tokenizer.tokenize(word)
            tokens.extend(word_tokens)
            # 对第一个子词使用原始标签,后续子词使用 "I-" 标签
            label_ids.extend(
                [label_map[label]]
                + [label_map[label.replace("B-", "I-")]] * (len(word_tokens) - 1)
            )```
Mxk-1 commented 1 month ago

在代码ner_seq.py的100行左右新增可以正常运行