Мне нужна помощь из моего дела
У меня есть 2 списка в Python, которые содержат слово и пометку:
[['The', 'DT'], ['Kawasaki', 'NNP'], ['Ki-100', 'NNP'], ['fighter', 'NN']...
и другой список, содержащий слово и тег NER:
[['Kawasaki', 'ORGANIZATION'], ['Imperial', 'ORGANIZATION'], ['Army Air Service', 'ORGANIZATION'], ['Japanese', 'GPE'] ...
Я хочу присоединиться к первому и второму списку, чтобы он выглядел следующим образом:
'Kawasaki NNP ORGANIZATION'
И все слова в первом списке должны иметь такой формат, и если для слова нет тега NER, он должен отображаться так:
'Kawasaki NNP'
и измените его в словарь следующим образом:
{'Kawasaki NNP ORGANIZATION',0}
Но когда я пытаюсь сделать это, есть слово, которое должно иметь NER-Tag, тег не отображается в списке.
Это код для первого списка:
import nltk
from nltk import word_tokenize
def taggering(text):
tagger = []
tag = nltk.pos_tag(nltk.word_tokenize(text))
for w in range(len(tag)):
temp = list(tag[w])
tagger.append(temp)
print(tagger)
return tagger
Это код для первого списка:
def NER_ring(text):
datasets = []
for sent in nltk.sent_tokenize(text):
for chunk in nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sent))):
if hasattr(chunk, 'label'):
temp = [' '.join(c[0] for c in chunk), chunk.label()]
datasets.append(temp)
print(datasets)
return datasets
Это строки, которые я пытаюсь сделать целевым текстом и словарем:
def builder(datasets,tagger):
ls = {}
new_build = []
temp=[]
for i in range(len(tagger)):
words = str( tagger[i][0])
tags = str(tagger[i][1])
listed = [words,tags]
temp.append(listed)
for w in range (len(temp)):
for k in range (len(datasets)):
if(temp[w][0]==datasets[k][0]):
classtype = str(datasets[k][1])
else:
classtype = ""
k++1
word2 = temp[w][0]
tag2 = temp[w][1]
listed = str(word2+" "+tag2+" "+classtype)
ls[listed]=0
new_build.append(ls)
w++1
return new_build
Мне нужен мудрый совет, чтобы закончить этот код, чтобы я мог использовать этот список для расчета ИК. Спасибо.