0

flairを使用して NER タスクに取り組んでいます。文を処理した後、 flair が空のスペースを導入する場合があることに気付きました。

例: 入力文はの代わりにHerman Melvilles email is mobydick123@gmail.com ;-)出力として与えられます。[PERSON_NAME] email is mobydick123 @ gmail.com ;-)[PERSON_NAME] email is mobydick123@gmail.com ;-)

どうすれば修正できますか?

from flair.data import Sentence
from flair.models import SequenceTagger
import re
tagger = SequenceTagger.load("flair/ner-english-ontonotes-large")

line = 'Herman Melvilles email is mobydick123@gmail.com ;-)'

sentence = Sentence(line)
tagger.predict(sentence)
ii = 0
sentence1 = sentence
if len(sentence.get_spans('ner')) > 0:
    for entry in sentence.get_spans('ner'):
        if 'PERSON' in str(entry):
            person = re.findall('"([^"]*)"', str(entry))
            sentence1 = str(sentence1).replace(str(person[0]), "[PERSON_NAME]")
     
            # Return the output sequence 
            try:
                sentence1 = re.findall('"([^"]*)"', sentence1)[0]
            except: 
                sentence1 = line
        else:
            sentence1 = line

print(sentence1)
4

0 に答える 0