Bert編碼訓練NER實體偏移的問題

在這裏記錄一下踩過的坑

在訓練樣本中幾乎沒有前面一大串英文或者數字,然後後面跟實體的情況,所以訓練起來還挺平穩的。
但是在預測的時候遇到了這種情況,造成實體可以識別出來,但是實體的預測結果下標錯了(表現爲下標提前了)

造成這一問題的原因是在給bert傳文本得到文本特徵的時候,可以穿字符串的文本,也可以自己token完成後傳一個token後的list。

如果傳遞的是字符串,默認系統的token,對於英文數字的處理方式不是單個字token的,採取了一種收縮和泛化的機制。所以詞會變少,然後實體標籤提前了。

如果是NER任務,自己把數據token好,然後訓練更佳。

有興趣的同學可以看一下其源代碼:
def convert_lst_to_features(lst_str, seq_length, tokenizer, is_tokenized=False):
    """Loads a data file into a list of `InputBatch`s."""

    examples = read_tokenized_examples(lst_str) if is_tokenized else read_examples(lst_str)

    _tokenize = lambda x: tokenizer.mark_unk_tokens(x) if is_tokenized else tokenizer.tokenize(x)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章