Я пытаюсь найти различные способы написания «событий в [городе]», которые семантически похожи. Я пытаюсь сделать это, найдя слова, которые семантически похожи на «события», поэтому я могу их заменить.nltk семантическое замещение слова
Чтобы найти эти слова, я использую nSLT wordnet corpus, но получаю некоторые довольно странные результаты. Например, используя гипонимы «event.n.01», я получаю «Чудеса в Оттаве».
Со-гипонимы и гипернимы кажутся такими же плохими или худшими. Интересно, понимает ли кто-нибудь структуру лучше и может предложить потенциальное решение?
Вот некоторые примеры кода:
!/usr/bin/python3
import nltk
lemma = 'event.n.01'
synset = nltk.corpus.wordnet.synset(lemma)
print("%s: %s" % (synset.name(), synset.definition()))
print("\nFinding hyponyms...")
print([s.split('.')[0] for w in synset.hyponyms() for s in w.lemma_names()])
print("\nFinding hypernym paths...")
print([s.split('.')[0] for hyprs in synset.hypernym_paths() for hypr in hyprs for s in hypr.lemma_names()])
print("\nFinding co-hyponyms...")
for hypers in synset.hypernym_paths():
for hyper in hypers:
print(hyper.name())
for hypos in hyper.hyponyms():
print("\t%s" % (', '.join(hypos.lemma_names())))
print(synset.similar())
Это напомнило, что это была хорошая идея, чтобы попробовать и комбинировать различные методы. Я нашел список триграмм поискового запроса, искал «события» и нашел наиболее распространенную структуру тегов POS (возможно, это грамматическая структура?). Затем я просто искал те теги POS (например, '[n] [in] [n]'), затем попробовал сортировать их, взвешивая их частоту и сходство с «событиями». Это был хороший ход, но word2vec было намного меньше экспериментов. – Alter
@Alter Просто из любопытства, какого рода предложение вы получили с word2vec для «событий в [городе]»? – zvone
word2vec использовался только для слова 'events'. Он работал очень хорошо, не придавая ему больше контекста. Он имел такие результаты, как «гоночный, спортивный, концертный» – Alter