Ich habe eine Liste von Tupeln:Merge die ersten Elemente in einer Liste ein Tupel, wenn die zweiten Elemente identisch sind?
[('Donald', 'PERSON'), ('Trump', 'PERSON'), ('enters', 'O'), ('the', 'O'), ('White', 'LOCATION'), ('House', 'LOCATION')]
und der Ausgang I will:
[('Donald Trump'), ('enters the'), ('White House')]
Der Code unten bringt mich zu dem gewünschten Ergebnis näher, aber ich bin nicht wirklich vertraut mit der Groupby-Funktion noch nicht.
mergedTags = []
from itertools import groupby
for tag, chunk in groupby(tagList, lambda x: x[1]):
if tag != "O":
tagMerged = " ".join(w for w, t in chunk)
mergedTags.extend([tagMerged])
else:
#tagMerged = " ".join(t for t, w in chunk)
for word, chunk in groupby(tagList, lambda x: x[0]):
mergedTags.extend([word])
print(mergedTags)
Warum haben Sie eine Bedingung basierend auf ' 'O''? –
Der Stanford Entity Recognizer markiert Elemente, die nicht als 'O' erkannt werden. – Yanic