Ich arbeite mit der Python NLTK Wordnet API. Ich versuche das beste Synset zu finden, das eine Gruppe von Wörtern repräsentiert.NLTK Wordnet Synset für Wortgruppe
Wenn ich das beste Synset für etwas wie "Schule & Bürobedarf" finden muss, bin ich mir nicht sicher, wie man das macht. Bisher habe ich versucht, die Synsets für die einzelnen Worte zu finden und dann die Berechnung der besten kleinsten gemeinsamen hypernym wie folgt aus:
def find_best_synset(category_name):
text = word_tokenize(category_name)
tags = pos_tag(text)
node_synsets = []
for word, tag in tags:
pos = get_wordnet_pos(tag)
if not pos:
continue
node_synsets.append(wordnet.synsets(word, pos=pos))
max_score = 0
max_synset = None
max_combination = None
for combination in itertools.product(*node_synsets):
for test in itertools.combinations(combination, 2):
score = wordnet.path_similarity(test[0], test[1])
if score > max_score:
max_score = score
max_combination = test
max_synset = test[0].lowest_common_hypernyms(test[1])
return max_synset
Dies gilt jedoch nicht sehr gut funktionieren und es ist sehr teuer. Gibt es Möglichkeiten, herauszufinden, welches Synset mehrere Wörter am besten repräsentiert?
Danke für Ihre Hilfe!
Wenn alle Ihre Ausdrücke wie dieses Beispiel sind, dann sollten Sie wahrscheinlich nicht nach einem gemeinsamen Hyperonym suchen. "Schulbedarf" ist eine Art von Vorräten, aber sie sind keine Schule. Man könnte vielmehr die Synsets des letzten Wortes betrachten und zwischen denen diskriminieren, die die vorhergehenden Wörter verwenden (ich weiß jedoch nicht, wie ich das machen soll). – lenz
Hmmm, ich sehe deinen Punkt, aber ich denke nicht, dass alle Ausdrücke wie dieses Beispiel sind. Ich weiß, dass "Schule und Büro" die Art von Lieferungen sind, aber sie werden immer noch als Substantive statt als Adjektive anerkannt. –
Nun, es wird Ihre Aufgabe nicht vereinfachen, wenn die Ausdrücke unterschiedliche interne Strukturen haben. Ich schlage vor, dass Sie manuell das korrekte Synset in einer Stichprobe zuweisen (wie 20 zu Beginn) und dann schauen, ob Sie ein Muster sehen können. Oder manuell noch mehr Instanzen und einen Entscheidungsbaum trainieren. – lenz