【问题标题】:Using WordNet to find out whether two words are synonyms of each other使用 WordNet 找出两个词是否是彼此的同义词
【发布时间】:2020-12-06 12:17:36
【问题描述】:

我遇到了循环问题。如果该意义的任何引理与 word2 匹配,我需要它只打印一次“同义词”,否则“不是同义词”,但只打印一次。

from nltk.corpus import wordnet as wn

word1 = 'motorcar'
word2 = 'automobile'

for syn in wn.synsets(word1):
    for lemma in syn.lemma_names():
        if lemma == word2 and lemma != word1:
            print('Synonyms')
        elif all(syn.lemma_names()) != word2:
            print('not synonyms')

【问题讨论】:

  • 嗨!我不确定您需要什么...您是否已经尝试将breakreturn 放在print('Synonyms') 之后?
  • 另外,你能发布你的代码输出吗?对我来说(使用“流行”数据集)它输出not synonyms not synonyms Synonyms not synonyms not synonyms

标签: python loops wordnet synset


【解决方案1】:

通常的模式是在循环外初始化一个变量,然后在循环结束时报告结果。像这样的:

from nltk.corpus import wordnet as wn

word1 = 'motorcar'
word2 = 'automobile'

for syn in wn.synsets(word1):
    is_synonym = False
    for lemma in syn.lemma_names():
        if lemma == word2 and lemma != word1:
            is_synonym = True
    print('Synonyms' if is_synonym else 'not synonyms')

【讨论】:

    【解决方案2】:

    结果相同,但将所有引理列表合并到一个名为“names”的列表中,而不是使用枢轴布尔值:

    from nltk.corpus import wordnet as wn
    
    word1 = 'motorcar'
    word2 = 'automobile'
    
    names = []
    for syn in wn.synsets(word1):
        for lemma in syn.lemma_names():
            names.append(lemma)
    
    print('Synonyms' if word2 in names else 'not synonyms')
    

    【讨论】:

      【解决方案3】:

      我是 Python 包 WordHoard 的作者。该包可用于查找单词之间的语义关系,包括单词的反义词、同义词、上位词、下位词和同音词。

      from wordhoard import Synonyms
      
      word1 = 'motorcar'
      word2 = 'automobile'
      
      synonym_list = Synonyms(word1).find_synonyms()
      find_word = [word for word in synonym_list if word == word2]
      
      if find_word is not None:
          print(f'{word2} is a synonym of {word1}')
          # print output
          automobile is a synonym of motorcar.
      else:
          print(f'{word2} is not a synonym of {word1}')
      

      我发现 wordnet 非常有限。例如,这些是 wordnetmotorcar 的同义词:

      ['auto', 'automobile', 'car', 'machine']
      

      WordHoard 旨在查询其他来源。例如,下面的查询返回单词 motorcar 的 152 个同义词。

      from wordhoard import Synonyms
      
      synonym_list = Synonyms('motorcar').find_synonyms()
      print(len(synonym_list))
      152
      

      如果您决定使用 WordHoard,请告诉我它如何适用于您的用例。

      【讨论】:

        猜你喜欢
        • 2011-05-13
        • 2023-03-11
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多