wordnetから同義語を取得するコードを作成しました。各単語の同義語の完全なリストを提供しています。 したがって、私のコードは、文に基づいて同義語リストから適切な同義語を選択します。wordnetを使用している文章内の単語に最も近い同義語を取得
例: 文章は次のとおりです。「私は彼の兄です」と、この文に基づいて各単語の最良の同義語を見つけなければなりません。
「古い」を選択します。 Wordnetは、 "古い"の同義語のリストを与えるでしょう:
['elder'、 ' 「高齢者」、「高齢者」、「高齢者」、「高齢者」、「老人」、「いつか」、「正直から良」、「クンダダム」、「高齢者」、 ]
リストから、この文に基づく最も良い類義語は 'elder'なので、それを選択する必要があります。
どうすればいいですか?同義語を得るために
コード:のsynsetで
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
from nltk.corpus import wordnet as wn
def tag(sentence):
words = word_tokenize(sentence)
words = pos_tag(words)
return words
def paraphraseable(tag):
return tag.startswith('NN') or tag == 'VB' or tag.startswith('JJ')
def pos(tag):
if tag.startswith('NN'):
return wn.NOUN
elif tag.startswith('V'):
return wn.VERB
def synonyms(word, tag):
lemma_lists = [ss.lemmas() for ss in wn.synsets(word, pos(tag))]
lemmas = [lemma.name() for lemma in sum(lemma_lists, [])]
return set(lemmas)
def synonymIfExists(sentence):
for (word, t) in tag(sentence):
if paraphraseable(t):
syns = synonyms(word, t)
if syns:
if len(syns) > 1:
yield [word, list(syns)]
continue
yield [word, []]
def paraphrase(sentence):
return [x for x in synonymIfExists(sentence)]
get=[]
get=paraphrase("I am his older brother")
print("paraphrase",get)
なぜ「年長者」が最高ですか? (つまり、最高の判断基準は何ですか?これを決めるためにどのようなアルゴリズムを使用していますか?)(ちなみに、「兄」は「兄」の類義語ではありませんでした。それはあなたのリストにあります!) –