我试图找到不同的方式来编写语义上类似的“城市中的事件”。我试图通过查找与“事件”在语义上相似的词来做到这一点,所以我可以将它们替换。nltk语义词替换
要找到这些词我正在使用nltk的wordnet语料库,但我得到了一些非常奇怪的结果。例如,使用'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())
此提醒的是,这是一个好主意,尝试,并结合不同的方法。我找到了一个搜索查询语句列表,搜索'events'并找到最常见的POS标签结构(也许这是语法结构?)。然后,我搜索了那些POS标签(例如'[n] [in] [n]'),然后尝试通过加权它们的频率和路径相似性来对它们进行排序。这是一个很好的去,但word2vec是少了很多实验。 – Alter
@Alter出于好奇,你用word2vec获得了“城市中的事件”是什么样的提示? – zvone
word2vec仅用于单词'events'。它工作得很好,但没有给它上下文。它有像赛车,运动,音乐会这样的结果 – Alter