с NLTK, как я могу создать другую форму слова, когда задано определенное слово?

Например, предположим, что дано слово «счастливый», я хочу сгенерировать другие формы счастья, такие как счастье, счастье... и т. д.

Я прочитал несколько других предыдущих вопросов о ссылках на Stackoverflow и NLTK. Тем не менее, есть только теги POS, трансформация, как и определение грамматической формы определенных слов в предложениях, а не создание списка разных слов. Есть те, кто сталкивался с подобными проблемами? Спасибо.


person Tommy Kim    schedule 17.07.2017    source источник
comment
Это обратное тому, что делает стемпинг. В вашем случае вы можете применить определение корней к большому корпусу, отслеживая, какие слова имеют одну и ту же форму — например, используя стеммер Ланкастера, счастье, счастье и счастье сопоставляются с счастьем. Затем используйте эти кластеры для задачи генерации.   -  person lenz    schedule 18.07.2017


Ответы (1)


Этот тип информации включен в класс Lemma реализации WordNet NLTK. В частности, он находится в Lemma.derivationally_related_forms().

Вот пример скрипта для поиска всех возможных производных форм слова «счастливый»:

from nltk.corpus import wordnet as wn

forms = set() #We'll store the derivational forms in a set to eliminate duplicates
for happy_lemma in wn.lemmas("happy"): #for each "happy" lemma in WordNet
    forms.add(happy_lemma.name()) #add the lemma itself
    for related_lemma in happy_lemma.derivationally_related_forms(): #for each related lemma
        forms.add(related_lemma.name()) #add the related lemma

К сожалению, информация в WordNet не полная. Приведенный выше сценарий находит «счастливый» и «счастье», но не может найти «счастливый», несмотря на наличие нескольких лемм «счастливый».

person acattle    schedule 18.07.2017