Wordnet:获取单词的派生相关形式

问题描述 投票:1回答:1

我正在从事一个IR项目,除了词干(返回不真实的单词)和词根化(可能根本不会更改单词)之外,我还需要其他选择。

因此,我寻找了一种获取单词形式的方法。

此python脚本使用NLTK和Wordnet为我提供了单词的衍生形式(例如“检索”)。

from nltk.corpus import wordnet as wn    

str = "retrieving"

synsets = wn.synsets(str)

s = set()
result = ""
for synset in synsets:
    related = None
    lemmas = synset.lemmas()
    for lemma in lemmas:
        forms = lemma.derivationally_related_forms()
        for form in forms:
            name = form.name()
            s.add(name)    

print(list(s))

输出为:

['recollection', 'recovery', 'regaining', 'think', 'retrieval', 'remembering', 'recall', 'recollective', 'thought', 'remembrance', 'recoverer', 'retriever']

但是我真正想要的只是:'retrieval''retriever',而不是'think''recovery' ...等

并且结果也缺少其他形式,例如:'retrieve'

我知道问题是“同义词集”包含与输入单词不同的单词,所以我得到了不相关的派生形式

有没有办法得到我期望的结果?

[我正在从事一个IR项目,除了词干(返回不真实的单词)和词根化(可能根本不会改变单词)之外,我还需要一种替代方法,所以我在寻找一种获取...形式的方法...] >

python nltk wordnet
1个回答
0
投票

您可以执行当前操作,然后在获得的单词列表上运行词干分析器,仅保留词干与所需单词相同的词干。

另一种不使用Wordnet的方法是获得一个包含所有派生形式的大型词典,然后对其进行模糊搜索。我刚刚发现了这个问题:https://github.com/dwyl/english-words/(链接回此问题How to get english language word database?

© www.soinside.com 2019 - 2024. All rights reserved.