【问题标题】:How to iterate through the synset list generated from wordnet using python 3.4.2如何使用 python 3.4.2 遍历从 wordnet 生成的同义词集列表
【发布时间】:2015-05-12 05:17:49
【问题描述】:

我正在使用 wordnet 来查找特定单词的同义词,如下所示

synonyms = wn.synsets('good','a')

其中 wn 是 wordnet。这将返回一个同义词列表,如

Synset('good.a.01')    
Synset('full.s.06')    
Synset('good.a.03')    
Synset('estimable.s.02')    
Synset('beneficial.s.01')

等等……

如何遍历每个synset,得到每个synset的名字和pos标签?

【问题讨论】:

    标签: python-3.x nlp wordnet sentiment-analysis


    【解决方案1】:

    您可以像这样获取每个同义词集的名称和 pos 标签:

    from nltk.corpus import wordnet as wn
    
    synonyms = wn.synsets('good','a')
    
    for synset in synonyms:
        print(synset.name())
        print(synset.pos())
    

    名称是词、词、义的组合,如'full.s.06'。如果你只想要这个词,你可以在点 '.' 上拆分。并取第一个元素:

    print(synset.name().split('.')[0]
    

    【讨论】:

    • 我已经尝试过这个选项并且它有效!有没有直接的方法来获取这个词?
    • 我不这么认为。请参阅文档:nltk.org/api/…
    • 顺便说一句,如果这对您有帮助,请单击复选标记接受答案。这样,其他人就会知道这个答案是正确的(stackoverflow.com/help/someone-answers)。
    【解决方案2】:

    我在我的代码中使用这个:

    from nltk.corpus import wordnet
    
    word = input()
    
    for syn in wordnet.synsets(word):
        for l in syn.lemmas():
            print(syn.pos()) 
            print(l.name())
    

    syn.pos() 也可以在内循环之外调用,因为每个引理都包含具有相同 pos 的单词。

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      相关资源
      最近更新 更多