一种基于神经网络的临床医学信息提取方法与流程

文档序号:14736577发布日期:2018-06-19 20:37阅读:662来源:国知局

本发明涉及生物医学文本自然语言处理领域,具体涉及一种基于神经网络的临床医学信息提取方法。



背景技术:

在大数据与“智慧医疗”的时代背景下,医学领域的文本挖掘与信息抽取技术已成为研究者们近年来聚焦的“重中之重”。抽取医学文本中医学实体信息,如时间、事件是医学大数据处理的重要任务之一。但是,用自然语言表述的非结构化医学文本数据有数据量庞大、结构复杂、产生速度快等特征,相关研究人员要从大量文本中快速而准确地获取有价值的知识和信息是非常困难的。所以如何既高效又智能地从海量医疗数据中提取有实用价值以及研究意义的医学知识信息并且进行结构化的表示,更深入的掌握那些未知的、威胁人类健康的疾病信息已刻不容缓。

现有的信息提取方法主要分为规则提取法和机器学习的方法。但由于自然语言的复杂性,构建的规则很难将所有的实体类型进行覆盖;若采用基于有监督的机器学习算法,则由于医学文本的特殊性和复杂性,不同的病症所包含的实体信息重叠度很低,实体种类也很多元化,因而针对不同的病症,都需要预先对一部分文本进行人工标记用作训练文本,且人为构建的特征很难将所有实体种类的特征覆盖。当新领域出现问题时,只能通过重新标记、训练数据来完成学习建模。然而,对医疗数据进行标注需要耗费高等专业人员的大量时间,成本异常高昂。



技术实现要素:

本发明的目的在于克服上述现有技术中存在的问题,提供一种基于神经网络的临床医学信息提取方法。

为了达到上述目的,本发明采用如下技术方案:

步骤1:首先对训练文本和测试文本进行分词处理,将分词后得到的训练文本用BIO标签进行标记。

步骤2:针对24个英文字母与其他常见字符构建其对应的初始字符向量表,并以PubMed数据库中的生物医学文章为语料库构建初始词向量。基于步骤1分词后的文本,通过查表获得每个单词对应的初始词向量以及每个字符对应的初始字符向量。

步骤3:构建基于步骤2生成的字符向量与词向量联合输入的神经网络医学实体提取模型。模型分为编码器,解码器与分类器三大部分,分别使用CNN网络与Bi-LSTM网络对字符向量与词向量的输入进行编码,使用Bi-LSTM网络解码,使用softmax分类器完成分类。

步骤4:使用BIO标记后的训练数据训练上述模型,通过对比训练数据中的实际的BIO标签与本模型分类得到后的BIO标签的差异,调整模型参数以优化分类性能。

步骤5:使用测试数据对步骤4训练好的模型进行测试,最终通过softmax分类器得到的BIO标签序列提取出医学实体。

所述步骤2,包括以下步骤:

步骤2.1:利用随机数对现存的所有英文字符初始化其对应的字符向量,具体做法是针对初始化向量的每一维,都从的范围内随机生成一个数字进行赋值,其中dim是字符向量的维度,将所有的初始字符向量集合在一起生成一个初始字符向量表,dim的大小在30至50之间;

步骤2.2:对于训练文本和测试文本中的所有字符,通过查找步骤2.1生成的初始字符向量表获得其对应的初始字符向量。

步骤2.3:利用斯坦福公开的GLoVe词向量模型方法,选取PubMed数据库中的生物医学文章为语料库产生初始词向量表。

步骤2.4:对于训练文本和测试文本中的所有单词,通过查找步骤2.3生成的初始词向量表获得其对应的初始词向量。

所述步骤3,包括以下步骤:

步骤3.1:利用步骤2.2生成的初始字符向量,将组成每个单词的字符其对应的初始字符向量拼接起来生成初始字符矩阵送入卷积神经网络(以每个单词为单位)进行编码。对于每一个输入至卷积神经网络的初始字符矩阵,首先经过一个卷积层,利用卷积核将组成每个单词相邻字符的初始字符向量进行卷积。然后将卷积层输出的矩阵输入至一个最大池化层,针对于卷积层输出矩阵的每个行向量,利用最大池化层选取数值最大的那一维代表整个行向量包含的信息,则经过最大池化层后,输出一个与初始字符向量维数相同的向量。

步骤3.2:利用步骤2.3生成的初始词向量,将每个句子中所有单词对应的初始词向量拼接起来送入至一个Bi-LSTM中进行编码。其中双向LSTM中包含有两个LSTM层,一个是前向LSTM,一个是后向LSTM。则针对于一个句子中的第t个单词,利用前向LSTM获得包含第一个单词至第t个单词上下文信息的对应向量hft,利用后向LSTM获得包含第t个单词到最后一个单词上下文信息的对应向量hbt,将向量拼接起来,作为第t个单词的词向量ht=(hft,hbt)。

步骤3.3:设CNN层输出的每个单词i对应的字符向量为{c1,c2,…,cdim},Bi-LSTMencoding层输出每个单词i对应的词向量为{wh1,wh2,…,whn},则对其进行归一化,即设cmax为字符向量数值最大的那一维,设whmax为单词向量数值最大的那一维,则最终的字符向量为{c1/cmax,c2/cmax,…,cdim/cmax},最终词向量为{wh1/whmax,wh2/whmax,…,whn/whmax}。将以上两个向量进行拼接得到每个单词对应的最终向量mi={c1/cmax,c2/cmax,…,cdim/cmax,wh1/whmax,wh2/whmax,…,whn/whmax}。将每个句子中所有单词对应的最终向量级联起来形成最终向量矩阵,然后以句子为单位输入至Bi-LSTM网络进行解码。

步骤3.4:将Bi-LSTM解码后的输出向量通过最终的softmax层,得到对每个单词最终的BIO标记结果。

与现有技术相比,本发明具有以下有益的技术效果:

本发明基于神经网络的方法,实现从医疗非结构化文本数据中提取与临床医学信息相关的实体信息,如时间、事件表达式。通常医学文本中具有许多专业性词汇、生僻词汇以及用数字和字符组成的时间表达式等,利用人为设计的词法句法特征很难将其准确提取。但是利用卷积神经网络得到的字符向量可以包含单词的形态学信息,因此可以很好的解决这个问题。同时本文使用的双向LSTM能很好地捕获上下文信息。此外,使用神经网络的方法避免了机器学习中人为设计特征这一过程,能很好的解决领域适应的问题。本发明的方法在不同的数据领域上都取得了较好的结果,能高效准确智能地从海量医疗数据中提取有实用价值以及研究意义的信息。

附图说明

图1是本发明的临床医学信息提取方法的方法流程图;

具体实施方式

下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

实施例采用的训练数据和测试数据均为Semval-2017公开的THYME语料库。

实施例1:主要用来提取临床医学文本中的时间序列信息。训练数据和测试数据均选自THYME语料库中的肠癌文本数据。

步骤1:首先对训练文本和测试文本进行分词处理,将分词后得到的训练文本用BIO标签进行标记。其中B代表此单词是一个信息序列的开头,I代表此单词是组成一个信息序列的中间单词,O代表此单词不属于任何信息序列。

步骤2:针对24个英文字母与其他常见字符构建其对应的初始字符向量表,并以PubMed数据库中的生物医学文章为语料库构建初始词向量。基于步骤1分词后的文本,通过查表获得每个单词对应的初始词向量以及每个字符对应的初始字符向量。

其详细步骤如下:

步骤2.1:利用随机数对现存的所有英文字符初始化其对应的字符向量,具体做法是针对初始化向量的每一维,都从的范围内随机生成一个数字进行赋值,其中dim是字符向量的维度,将所有的初始字符向量集合在一起生成一个初始字符向量表,在此设dim的大小为30。设x为初始字符向量表的第i个字符,则x对应的初始字符向量为{cpi1,cpi2,…,cpidim}。

步骤2.2:对于训练文本和测试文本中的所有字符,通过查找步骤2.1生成的初始字符向量表获得其对应的初始字符向量。

步骤2.3:利用斯坦福公开的GLoVe词向量模型方法,选取PubMed数据库中的生物医学文章为语料库产生初始词向量表,每个单词对应的向量维数为300维。

步骤2.4:对于训练文本和测试文本中的所有单词,通过查找步骤2.3生成的初始词向量表获得其对应的初始词向量。

步骤3:构建基于步骤2生成的字符向量与词向量联合输入的神经网络医学实体提取模型。模型分为编码器,解码器与分类器三大部分,分别使用CNN网络与Bi-LSTM网络对字符向量与词向量的输入进行编码,使用Bi-LSTM网络解码,使用softmax分类器完成分类。

其详细步骤如下:

步骤3.1:利用步骤2.2生成的初始字符向量,将组成每个单词的字符其对应的初始字符向量拼接起来生成初始字符矩阵送入卷积神经网络(以每个单词为单位)进行编码。对于每一个输入至卷积神经网络的初始字符矩阵,首先经过一个卷积层,利用卷积核将组成每个单词相邻字符的初始字符向量进行卷积。然后将卷积层输出的矩阵输入至一个最大池化层,针对于卷积层输出矩阵的每个行向量,利用最大池化层选取数值最大的那一维代表整个行向量包含的信息,则经过最大池化层后,输出一个与初始字符向量维数相同的向量。则对于每个单词i,其对应的字符向量为ci={c1,c2,…,cdim}。通过此步骤,可提取每个单词形态学上的特征。对于利用字符与数字组成的例如“2013-12-29”等难以提取其词义和句法特征的时间表达式,通过此步骤可以很好的捕捉其字符组成形式。

步骤3.2:利用步骤2.3生成的初始词向量,将每个句子中所有单词对应的初始词向量拼接起来送入至一个Bi-LSTM中进行编码。其中双向LSTM中包含有两个LSTM层,一个是前向LSTM,一个是后向LSTM。则针对于一个句子中的第t个单词,利用前向LSTM获得包含第一个单词至第t个单词上下文信息的对应向量hft,即第t个单词对应的前向LSTM的隐层输出。利用后向LSTM获得包含第t个单词到最后一个单词上下文信息的对应向量hbt,即第t个单词对应的后向LSTM的隐层输出。将两个向量拼接起来,作为第t个单词的词向量ht=(hft,hbt)。利用此步骤可以获得一个单词上下文的句法词义特征,则对于形如“a few days”等由多个单词组成的词组形式的时间表达式,可以很好的进行提取。

步骤3.3:设CNN层输出的每个单词i对应的字符向量为ci={c1,c2,…,cdim},Bi-LSTM encoding层输出每个单词i对应的词向量为hi={wh1,wh2,…,whn},则对其进行归一化,即设cmax为字符向量数值最大的那一维,设whmax为单词向量数值最大的那一维,则最终的字符向量为{c1/cmax,c2/cmax,…,cdim/cmax},最终词向量为{wh1/whmax,wh2/whmax,…,whn/whmax}。将以上两个向量进行拼接得到每个单词对应的最终向量mi={c1/cmax,c2/cmax,…,cdim/cmax,wh1/whmax,wh2/whmax,…,whn/whmax}。将每个句子中所有单词对应的最终向量级联起来形成最终向量矩阵,然后以句子为单位输入至Bi-LSTM网络进行解码。

步骤3.4:设Bi-LSTM解码后的每个单词i对应的输出向量为yi={f1,f2,…,ft},将yi通过最终的softmax层,得到一个三维向量{x1,x2,x3},分别代表将此单词分类为B、I、0的概率。则数值最大的那一维所对应的标签即为次单词的最终分类标签。经过此步骤便得到对每个单词最终的BIO标记结果。

步骤4:使用BIO标记后的训练数据训练上述模型,利用通过对比训练数据中的实际的BIO标签与本模型分类得到后的BIO标签的差异,调整模型参数以优化分类性能。实验采用的损失函数为对数似然损失函数

步骤5:使用测试数据对步骤4训练好的模型进行测试,最终通过softmax分类器得到的BIO标签序列提取出医学实体。

实施例2:主要用来提取临床医学文本中的事件信息,例如craniotomy,bleed,cancer,为了展现本发明具有领域适应的能力,训练文本选自THYME语料库中肠癌文本数据,测试文本选自THYME数据库中脑癌文本数据。训练文本是关于肠癌的,测试文本是关于脑癌的,所以就需要解决领域适应的问题。例如Chemotherapy(化疗)无论是在源领域还目标领域都是一个事件,而craniotomy(开颅术)只在目标领域是一个事件。

步骤1:首先对训练文本和测试文本利用斯坦福德自然语言处理工具进行分词处理,将分词后得到的训练文本用BIO标签进行标记。其中B代表此单词是一个事件序列的开头,I代表此单词是组成一个事件序列的中间单词,O代表此单词不属于任何信息序列。

步骤2:针对24个英文字母与其他常见字符构建其对应的初始字符向量表,并以PubMed数据库中的生物医学文章为语料库构建初始词向量。基于步骤1分词后的文本,通过查表获得每个单词对应的初始词向量以及每个字符对应的初始字符向量。

其详细步骤如下:

步骤2.1:利用随机数对现存的所有英文字符初始化其对应的字符向量,具体做法是针对初始化向量的每一维,都从的范围内随机生成一个数字进行赋值,其中dim是字符向量的维度,将所有的初始字符向量集合在一起生成一个初始字符向量表,在此设dim的大小为30。设x为初始字符向量表的第i个字符,则x对应的初始字符向量为{cpi1,cpi2,…,cpidim}。

步骤2.2:对于训练文本和测试文本中的所有字符,通过查找步骤2.1生成的初始字符向量表获得其对应的初始字符向量。

步骤2.3:利用斯坦福公开的GLoVe词向量模型方法,选取PubMed数据库中的生物医学文章为语料库产生初始词向量表,每个单词对应的向量维数为300维。

步骤2.4:对于训练文本和测试文本中的所有单词,通过查找步骤2.3生成的初始词向量表获得其对应的初始词向量。

步骤3:构建基于步骤2生成的字符向量与词向量联合输入的神经网络医学实体提取模型。模型分为编码器,解码器与分类器三大部分,分别使用CNN网络与Bi-LSTM网络对字符向量与词向量的输入进行编码,使用Bi-LSTM网络解码,使用softmax分类器完成分类。

其详细步骤如下:

步骤3.1:利用步骤2.2生成的初始字符向量,将组成每个单词的字符其对应的初始字符向量拼接起来生成初始字符矩阵送入卷积神经网络(以每个单词为单位)进行编码。对于每一个输入至卷积神经网络的初始字符矩阵,首先经过一个卷积层,利用3*3的卷积核将组成每个单词相邻字符的初始字符向量进行卷积。然后将卷积层输出的矩阵输入至一个最大池化层,针对于卷积层输出矩阵的每个行向量,利用最大池化层选取数值最大的那一维代表整个行向量包含的信息,则经过最大池化层后,输出一个与初始字符向量维数相同的向量。则对于每个单词i,其对应的字符向量为ci={c1,c2,…,cdim}。通过此步骤,可提取每个单词形态学上的特征。由于医学文本中往往会有很多生僻的专业词汇,但是他们具有一定的构词规则,例如以ant-,anti-为前缀的词具有对抗、取消、抑制的意思,antacid(制酸剂),antibiotic(抗菌素),antieoagulant(抗凝的)等,通过此步骤可以更全面的提取有用的信息。

步骤3.2:利用步骤2.3生成的初始词向量,将每个句子中所有单词对应的初始词向量拼接起来送入至一个Bi-LSTM中进行编码。其中双向LSTM中包含有两个LSTM层,一个是前向LSTM,一个是后向LSTM。则针对于一个句子中的第t个单词,利用前向LSTM获得包含第一个单词至第t个单词上下文信息的对应向量hft,即第t个单词对应的前向LSTM的隐层输出。利用后向LSTM获得包含第t个单词到最后一个单词上下文信息的对应向量hbt,即第t个单词对应的后向LSTM的隐层输出。将两个向量拼接起来,作为第t个单词的词向量ht=(hft,hbt),利用此步骤可以获得一个单词上下文的句法词义特征。

步骤3.3:设CNN层输出的每个单词i对应的字符向量为ci={c1,c2,…,cdim},Bi-LSTM encoding层输出每个单词i对应的词向量为hi={wh1,wh2,…,whn},则对其进行归一化,即设cmax为字符向量数值最大的那一维,设whmax为单词向量数值最大的那一维,则最终的字符向量为{c1/cmax,c2/cmax,…,cdim/cmax},最终词向量为{wh1/whmax,wh2/whmax,…,whn/whmax}。将以上两个向量进行拼接得到每个单词对应的最终向量mi={c1/cmax,c2/cmnax,…,cdim/cmax,wh1/whmax,wh2/whmax,…,whn/whmax}。将每个句子中所有单词对应的最终向量级联起来形成最终向量矩阵,然后以句子为单位输入至Bi-LSTM网络进行解码。通过利用CNN和Bi-LSTM自动选择特征,避免了人为设计特征这一过程,能很好的解决领域适应的问题。

步骤3.4:设Bi-LSTM解码后的每个单词i对应的输出向量为yi={f1,f2,…,ft},将yi通过最终的softmax层,得到一个三维向量{x1,x2,x3},分别代表将此单词分类为B、I、0的概率。则数值最大的那一维所对应的标签即为次单词的最终分类标签。经过此步骤便得到对每个单词最终的BIO标记结果。

步骤4:使用BIO标记后的训练数据训练上述模型,利用通过对比训练数据中的实际的BIO标签与本模型分类得到后的BIO标签的差异,调整模型参数以优化分类性能。实验采用的损失函数为对数似然损失函数

步骤5:使用测试数据对步骤4训练好的模型进行测试,最终通过softmax分类器得到的BIO标签序列提取出医学实体。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1