получить словесное существительное от существительного - PullRequest
2 голосов
/ 01 ноября 2019

глагольное существительное - это существительное, образованное или иным образом соответствующее глаголу.

Я ищу написать алгоритм, который, когда ему дается существительное, возвращает соответствующий глагол (если входное существительное является глагольным существительным).
Моя первоначальная мысль заключалась в том, чтобы применить родословный к существительному, а затем найтисписок глаголов для глагола с таким же основанием.
Перед этим я создал небольшой набор тестовых данных.
Это показывает, что иногда этот подход не работает:
Например:
'объяснение »и« объяснение »не имеют одинаковых основ.
« решать »и« решение »не имеют одинаковых основ.

from nltk.stem.snowball import SnowballStemmer
stemmer = SnowballStemmer('english')

l=[('to increase', 'increase'),
('to inhibit', 'inhibition'),
('to activate', 'activation'),
  ('to explain', 'explanation'),
  ('to correlate', 'correlation'),
  ('to decide', 'decision'),
   ('to insert', 'insertion')
  ]

for p in l:
    print(stemmer.stem(p[0]), ' <-> ', stemmer.stem(p[1]))

#to increas  <->  increas
#to inhibit  <->  inhibit
#to activ  <->  activ
#to explain  <->  explan
#to correl  <->  correl
#to decid  <->  decis
#to insert  <->  insert

Кто-нибудь знает метод, который будет работатьв случаях производных существительных, которые не имеют того же самого основа?

1 Ответ

1 голос
/ 06 ноября 2019

Не существует решения, которое работает во всех случаях, поскольку вы не можете определить все случаи. В английском языке любое существительное может быть "глаголом", что приводит к некоему бесконечному множеству. Что вы можете сделать - это лемматизировать ваши токены, а затем использовать функцию nltk lemma.derivationally_related_forms (), чтобы получить все существительные, которые происходят от глагола. Поиск в соответствующей структуре данных даст вам правильные результаты. Чтобы уменьшить количество глаголов, которые вы должны искать для каждого существительного, вы можете использовать что-то вроде наибольшего общего префикса, например.

посмотрите на это:

https://www.howtobuildsoftware.com/index.php/how-do/4EO/python-nlp-wordnet-get-noun-from-verb-wordnet

...