У меня есть новостные статьи, я хочу сделать NER, используя дипавлов к этим статьям. Сущность использует схему маркировки BIO. Здесь «B» обозначает начало объекта, «I» обозначает «внутри» и используется для всех слов, составляющих объект, кроме первого, а «O» означает отсутствие объекта. Коды NER выглядят следующим образом:
def listOfTuples(list1, list2):
return list(map(lambda x, y:(x,y), list1, list2))
ner_result = []
for x in split:
for y in split[0]:
news_ner = ner_model([str(y)])
teks = news_ner[0][0]
tag = news_ner[1][0]
ner_result.extend(listOfTuples(teks, tag))
print([i for i in ner_result if i[1] != 'O'])
Что ж, результаты NER выглядят следующим образом.
[('KOMPAScom', 'B-ORG'), ('Kompascom', 'I-ORG'), ('IFCN', 'B-ORG'), ('-', 'I-ORG'), ('International', 'I-ORG'), ('Fact', 'I-ORG'), ('-', 'I-ORG'), ('Checking', 'I-ORG'), ('Network', 'I-ORG'), ('Kompascom', 'B-ORG'), ('49', 'B-CARDINAL'), ('IFCN', 'B-ORG'), ('Kompascom', 'B-ORG'), ('Redaksi', 'B-ORG'), ('Kompascom', 'I-ORG'), ('Wisnu', 'B-PERSON'), ('Nugroho', 'I-PERSON'), ('Jakarta', 'B-GPE'), ('Rabu', 'B-DATE'), ('17', 'I-DATE'), ('/', 'I-DATE'), ('10', 'I-DATE'), ('/', 'I-DATE'), ('2018', 'I-DATE'), ('KOMPAScom', 'B-ORG'), ('Redaksi', 'B-ORG'), ('Kompascom', 'I-ORG'), ('Wisnu', 'B-PERSON'), ('Nugroho', 'I-PERSON'), ('Kompascom', 'B-ORG'), ('Bentara', 'I-ORG'), ('Budaya', 'I-ORG'), ('Jakarta', 'I-ORG'), ('Palmerah', 'I-ORG')]
Я хочу удалить теги B и I, а затем объединить текст в теги B и I, поэтому вывод идет следующим образом.
[('KOMPAScom Kompascom', 'ORG'), ('IFCN - International Fact - Checking Network', 'ORG'), ('Kompascom', 'ORG'), ('49', 'CARDINAL'), ('IFCN', 'ORG'), ('Kompascom', 'ORG'), ('Redaksi Kompascom', 'ORG'), ('Wisnu Nugroho', 'PERSON'), ('Jakarta', 'GPE'), ('Rabu 17/10/2018', 'DATE'), ('KOMPAScom', 'ORG'), ('Redaksi Kompascom', 'ORG'), ('Wisnu Nugroho', 'PERSON'), ('Kompascom Bentara Budaya Jakarta Palmerah', 'ORG')]
У вас есть идеи?