【问题标题】:How to find a synonyms in a list of strings using NLTK synsets?如何使用 NLTK 同义词在字符串列表中查找同义词?
【发布时间】:2017-12-15 13:19:24
【问题描述】:

我有一个字符串列表:

words1 =  ['feds', 'move', 'to', 'require', 'cartocar', 'safety', 'communication']

我想使用 NLTK wordnet synsets 为每个单词找到一个 synsets。首先,我在列表中使用一个字符串。 这是我的代码:

from nltk.corpus import wordnet as wn

word = ['feds']

data1 = ' '.join(word)

def getSynonyms(data1):
    synonymList1 = []
    wordnetSynset1 = wn.synsets(data1)

    for synset1 in wordnetSynset1:
        for synWords1 in synset1.lemma_names():
            synonymList1.append(synWords1)
    print synonymList1

print "list of synonyms : ", getSynonyms(data1)

它有效。结果如下:

list of synonyms :  [u'Federal', u'Fed', u'federal_official', u'Federal_Reserve_System', u'Federal_Reserve', u'Fed', u'FRS']

但是当我使用字符串列表“words1”时,它不起作用并且输出不是这样的>> []。

有人可以帮忙吗?谢谢

【问题讨论】:

  • @alvas 哇,太好了,但我必须使用 nltk 包来处理这个同义词
  • 使用 NLTK Wordnet 接口获取同义词集引理名称,使用 ADM 算法计算字符串匹配。顺便说一句,还有许多其他字符串匹配算法。 ADM 只是其中之一。
  • @alvas 很抱歉,请问您可以举个例子吗?

标签: string list nltk wordnet synonym


【解决方案1】:

你需要单独传递单词,而不是在加入它们之后。

from nltk.corpus import wordnet as wn


def getSynonyms(word1):
        synonymList1 = []
        for data1 in word1:
              wordnetSynset1 = wn.synsets(data1)
              tempList1=[]
              for synset1 in wordnetSynset1:
                 for synWords1 in synset1.lemma_names():
                     tempList1.append(synWords1)
              synonymList1.append(tempList1)
        return synonymList1


word1 =  ['feds', 'move', 'to', 'require', 'cartocar', 'safety', 'communication']
print getSynonyms(word1)

【讨论】:

  • 哇,非常感谢您,先生。我认为 synset 无法读取列表,因为我学到了很多输入总是字符串的示例,所以我将其更改为字符串
猜你喜欢
  • 2023-03-11
  • 2020-03-30
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 2018-12-31
相关资源
最近更新 更多