Я работаю над IR-проектом, мне нужна альтернатива как основа (которая возвращает нереальные слова), так и лемматизация (которая может вообще не изменить слово)
Поэтому я искал способ получить формы слова.
Этот python скрипт дает мне производные_связанные_формы слова (например, "извлечение"), используя NLTK и Wor dnet:
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'
... et c
, и результат также отсутствуют другие формы, такие как: 'retrieve'
Я знаю, что проблема заключается в том, что в "наборы" входят слова, отличные от моего входного слова, поэтому я получаю несвязанные производные формы
Есть ли способ получить ожидаемый результат?