Извлекать понятия отношений из предложений - PullRequest
0 голосов
/ 03 марта 2019

Существует ли текущая модель или как я могу обучить модель, которая принимает предложение, включающее два предмета, например:

[Мейоз] - это тип [деления клетки] ...

и решает, является ли один дочерним или родительским понятием другого?В этом случае деление клеток является родителем мейоза.

1 Ответ

0 голосов
/ 03 марта 2019

Определены ли уже предметы, т. Е. Знаете ли вы заранее для каждого предложения, какие слова или последовательности слов представляют предметы?Если вы делаете, я думаю, что вы ищете, это извлечение отношений.

Неуправляемый подход

Простой неконтролируемый подход заключается в поиске шаблонов с использованием тегов части речи, например:

Сначала вы токенизируете и получаете PoS-теги для каждого предложения:

sentence = "Meiosis is a type of cell division."
tokens = nltk.word_tokenize("Meiosis is a type of cell division.")
tokens
['Meiosis', 'is', 'a', 'type', 'of', 'cell', 'division', '.']

token_pos = nltk.pos_tag(tokens)
token_pos
[('Meiosis', 'NN'), ('is', 'VBZ'), ('a', 'DT'), ('type', 'NN'), ('of', 'IN'),
 ('cell', 'NN'), ('division', 'NN'), ('.', '.')]

Затем вы создаете синтаксический анализатор для анализа определенного шаблона на основе PoS-тегов, который является шаблоном, который опосредует отношения между двумя субъектами./ entity / nouns:

verb = "<VB|VBD|VBG|VBN|VBP|VBZ>*<RB|RBR|RBS>*"
word = "<NN|NNS|NNP|NNPS|JJ|JJR|JJS|RB|WP>"
preposition = "<IN>"
rel_pattern = "({}|{}{}|{}{}*{})+ ".format(verb, verb, preposition, verb, word, preposition)
grammar_long = '''REL_PHRASE: {%s}''' % rel_pattern
reverb_pattern = nltk.RegexpParser(grammar_long)

ПРИМЕЧАНИЕ. Этот шаблон основан на этой статье: http://www.aclweb.org/anthology/D11-1142

Затем можно применить синтаксический анализатор ко всем токенам / PoS-тегам, кроме тех, чтокоторые являются частью субъектов / сущностей:

reverb_pattern.parse(token_pos[1:5])
Tree('S', [Tree('REL_PHRASE', [('is', 'VBZ')]), ('a', 'DT'), ('type', 'NN'), ('of', 'IN')])

Если синтаксический анализатор выдает REL_PHRASE, то между этими двумя субъектами существует связь.Затем вам нужно проанализировать все эти шаблоны и решить, какие из них представляют собой parent-of отношения.Одним из способов достижения этого является их кластеризация, например.

Контролируемый подход

Если ваши предложения уже помечены субъектами / сущностями ис типом отношений, т. е. контролируемым сценарием, чем вы можете построить модель, в которой объектами могут быть слова между двумя субъектами / объектами и тип отношений, помеченный меткой.

sent: "[Meiosis] is a type of [cell division.]"
label: parent of

Вы можете построитьвекторное представление is a type of и обучить классификатор для предсказания метки parent of.Для этого вам понадобится много примеров, это также зависит от того, сколько у вас различных классов / меток.

...