Может ли CoreNLP определить, относится ли обычное существительное (в отличие от имени существительного или имени) к человеку «из коробки»? Или, если мне нужно обучить модель для этой задачи, как мне это сделать?
Во-первых, я не ищу разрешение по ядру, а скорее строительный блок для него. Корреляция по определению зависит от контекста, тогда как я пытаюсь оценить, является ли слово в отдельности подмножеством «человек» или «человек». Например:
is_human('effort') # False
is_human('dog') # False
is_human('engineer') # True
Моя наивная попытка использовать предварительно обученные векторы слов Генсима и spaCy не сумела поставить «инженер» выше двух других слов.
import gensim.downloader as api
word_vectors = api.load("glove-wiki-gigaword-100")
for word in ('effort', 'dog', 'engineer'):
print(word, word_vectors.similarity(word, 'person'))
# effort 0.42303842
# dog 0.46886832
# engineer 0.32456854
Я нашел следующие списки из CoreNLP многообещающими.
dcoref.demonym // The path for a file that includes a list of demonyms
dcoref.animate // The list of animate/inanimate mentions (Ji and Lin, 2009)
dcoref.inanimate
dcoref.male // The list of male/neutral/female mentions (Bergsma and Lin, 2006)
dcoref.neutral // Neutral means a mention that is usually referred by 'it'
dcoref.female
dcoref.plural // The list of plural/singular mentions (Bergsma and Lin, 2006)
dcoref.singular
Будет ли это работать для моей задачи? И если так, как я могу получить к ним доступ из Оболочки Python ? Спасибо.