簡體   English   中英

從句子中提取關系概念

[英]Extract relationship concepts from sentences

是否有當前模型或我如何訓練一個模型,該模型涉及兩個主題,如:

[減數分裂]是一種[細胞分裂] ......

並決定一個是另一個的孩子或父母概念? 在這種情況下,細胞分裂是減數分裂的父母。

是否已經確定了主題,即,您是否事先知道每個句子的單詞或單詞序列代表主語? 如果你這樣做,我認為你正在尋找的是關系提取。

無監督的方法

一種簡單的無監督方法是使用詞性標簽查找模式,例如:

首先,您為每個句子標記並獲取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標記解析一個特定的模式,這是一種調解兩個主題/實體/名詞之間關系的模式:

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 你需要很多例子,它還取決於你有多少不同的類/標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM