НЛТК слова лемматизирующие
Я пытаюсь сделать лемматизацию слов NLTK
,
Что я могу найти сейчас, так это то, что я могу использовать stem
пакет, чтобы получить некоторые результаты, такие как преобразование "автомобили" в "машину" и "женщины" в "женщину", однако я не могу провести лемматизацию некоторых слов с аффиксами, такими как "подтверждение".
Когда используешь WordNetLemmatizer()
на "подтверждение", он возвращает "подтверждение" и используя .PorterStemmer()
, он возвращает "подтверждение", а не "подтверждение".
Может кто-нибудь сказать мне, как устранить аффиксы слов?
Скажем, когда вход "подтверждение", выход "подтверждение"
1 ответ
Лемматизация не возвращает (и не должна) возвращать "подтверждение" для "подтверждение". Первый - глагол, а второй - существительное. С другой стороны, алгоритм портирования Портера просто использует фиксированный набор правил. Таким образом, ваш единственный способ изменить правила в источнике. (НЕ правильный способ решить вашу проблему).
То, что вы ищете, это родственная форма "подтверждения", и для этого вашим лучшим источником является WordNet. Вы можете проверить это онлайн на WordNet.
Существует довольно много библиотек на основе WordNet, которые вы можете использовать для этого (например, в JWNL в Java). В Python NLTK должен иметь возможность получить связанную с деривацией форму, которую вы видели онлайн:
from nltk.corpus import wordnet as wn
acknowledgment_synset = wn.synset('acknowledgement.n.01')
acknowledgment_lemma = acknowledgment_synset.lemmas[1]
print(acknowledgment_lemma.derivationally_related_forms())
# [Lemma('admit.v.01.acknowledge'), Lemma('acknowledge.v.06.acknowledge')]