バートコーディングトレーニングNERエンティティオフセット問題

ここに踏まれた穴を記録する

トレーニングサンプルでは、​​英語や数字の大きな文字列が前にあり、その後にエンティティが続くケースはほとんどないため、トレーニングは非常に安定しています。
ただし、予測中にこの状況が発生したため、エンティティが識別されましたが、エンティティの予測結果の添え字が間違っていました(添え字が進んだときに表示されます)

この問題の理由は、テキストをbertに渡してテキストの特性を取得するときに、文字列のテキストを渡すか、トークンが自分で完了した後にリストを渡すことができるためです。

渡されるものが文字列の場合、デフォルトシステムのトークンは英語の数を処理するための単一単語トークンではなく、縮小と一般化のメカニズムが採用されています。したがって、単語が削減され、エンティティタグが進められます。

NERタスクの場合は、データを自分でトークン化してから、より適切にトレーニングします。

興味のある学生はソースコードを見ることができます:
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)

おすすめ

転載: blog.csdn.net/cyinfi/article/details/90349894