第 1 章 引言
1.1 研究背景
1.1.1 互联网时代的健康服务
医疗健康产业发展带来了大量的数据。
1.1.2 数据处理技术的发展
数据库技术、数据挖掘技术、自然语言处理技术的发展。
1.1.3 人口老龄化和慢性病现状
即有在线健康服务的需求。
1.1.4 在线健康问答服务
1.1.4.1 在线健康问答服务的类型
- 搜索引擎
- 基于社区的问答服务
- 基于专家的问答服务
1.2 健康问答系统
1.2.1 概念
一种是基于准确的知识图谱来回答特定类型的问题,准确度高,诊断的结果一定程度可以作为专业诊断结果,但回答问题范围有限。
本文的系统基于检索和摘要的方法,归纳相似历史问题的答案,为用户提供辅助的健康建议而不是准确的诊断结果,内容更加丰富。
1.2.2 挑战
- 中文健康本体资源的匮乏
- 数据集噪声多
- 问题的查询
- 答案的摘要
1.3 本文贡献
1.3.1 医学词典和医学实体标注集
医学词典构建:疾病和症状、药品、食物、检查、指标、体征、治疗词典共7类。
医学实体标注集:建立了一套医学实体标注的集合,并构建了基于此标注集的面向问答数据的训练集。
1.3.2 基于专家问答数据的中文健康问答系统
贡献有二:
- 系统为普通用户提供慢性病领域的中文问答服务。
- 系统能处理一般的问答数据。
1.3.3 基于实体抽取的检索和摘要算法
- 面向慢性病的问题结构分析和分类算法。对问题进行更加细致的分析和分类以来了解用户的意图。
- 面向慢性病问题的高效文档检索算法。除了基于Lucene的粗检索之外,还要做出基于句子相似度的精确检索,以准确获取真正与用户问题相关的问题,提高摘要来源的精度。
- 面向问答需求的高质量多文档摘要算法。提出了基于实体抽取和文本摘要的算法。
1.4 文章结构
第 2 章 国内外相关研究
2.1 健康问答系统的相关研究
2.1.1 开放域问答系统
- START
- QuALiM
- NSIR
2.1.2 限定域问答系统
- MedQA
- AskHERMES
2.1.3 中文问答系统
2.2 相关算法研究
2.2.1 自然语言处理
2.2.2 索引和检索算法(略)
2.2.3 语句相似度判定算法(略)
2.2.4 摘要算法(略)
2.2.5 实体抽取
2.2.5.1 实体抽取概述
从某段文本中抽取某种类型的实体。实体抽取是一种序列标注问题,本质上还是一种对序列元素的分类问题。
2.2.5.2 实体抽取的方法
- 监督学习:隐马尔可夫模型,决策树,最大熵模型,支持向量机,条件随机场。
- 半监督学习
- 无监督学习:聚类。
最大熵模型
最大熵模型目的是尽量的满足我们所观察到的训练集中存在的特性,尽量满足的过程就是一个条件熵最大化的过程。
隐马尔科夫模型
隐马尔科夫模型是一种生成式模型,它通过马尔科夫链简化了序列的生成过程,但是却带来了极大的求解和计算效率的提升。
条件随机场 - 最大熵模型让我们可以将很多人工的观测经验(语言模板)通过特征函数的方式加入到模型中,但不能考虑标签之间的依赖性。
- 隐马尔科夫模型让我们可以捕捉标签之间的马尔科夫链关系,但只能捕捉到当前标签和当前观测的关系。
条件随机场融合了上述两个模型的优点。他是一个区分式模型,其目标是求解条件概率p(y|x)
第 3 章 基础数据和词典描述
3.1 数据
3.1.1 数据内容和来源
- 39健康网
- 寻医问药网
- 快速问医生
3.2 词典描述
3.2.1 英文环境下的医学词典
处理医疗文本需要理解文本语义;
理解文本语义需要抽取文本医学实体;
抽取文本医学实体需要借助医学词典。
英文中比较著名的是UMLS。可以用于电子病历表,分类器,文本翻译等。
3.2.2 中文环境下医学本体的构建
3.2.2.1 专业医学词典
与医学专业人员合作,通过整理网络上的专业词典和医学权威书籍只是构建了专业医学词典,并存储在数据库的数据表中。
3.2.2.2 辅助医学词典
专业医学词典,专业性和权威性有保证,手工构建,难度大,成本高,不能满足要求。
辅助医学词典只包含词条信息,不包含其他元信息或者关系信息。
主要来自搜狗医学类细胞词库,生物医药大词典,寻医问药症状、疾病、药品查询。
第 4 章 健康问答系统的框架与实现
4.1 总框架
(其实我只需要关注,本地数据库的数据如何利用医学词典进行答案和问题的标注就可以了)
4.2 数据预处理
4.2.1 数据清洗
- 标点清洗
- 段落合并
- 去除广告和通用冗余信息
- 去处重复答案
4.2.2 中文分词
中科院的NLPIR
4.3 问题处理
4.3.1 健康问题的特点和表示
从问题和回答中抽取出年龄、性别、疾病等等信息。分两步,一是实体抽取,二是用结构化的信息重新表示问题。
4.3.2 实体抽取
4.3.2.1 实体分类集
4.3.2.2 实体标签集
标注时有两种可以选择的算法,一种是先分词,分词之后然后对每个词语进行试题标注,另一种是不提前分词,直接对每个字进行实体标注。
由于实体抽取会发现大量的新词,先分词不适用。这里采用逐字标注的方法。逐字标注指的是为每个字打上一个标签。
4.3.2.3 特征生成
- 字符特征
- 词典特征:利用9个辅助医学词典,找出问题中的词语表上对应的类别。
- 词性特征
4.3.2.4 实体抽取的实现
利用CRF++
4.3.3 结构化表示
使用正则表达式来抽取结构化的信息。
4.3.4 意图分析
让计算机分析应该用那一类答案去回答问题,两个步骤,一是找出问题中的疑问句,二是利用疑问句中的关键词分析需要的答案。
4.3.4.1 疑问句抽取
是一个分类问题,可以通过提取特征利用分类器进行分类的方法来做。但是本系统通过疑问词来提取疑问句,简单而有效=-=。
4.3.4.2 问题分类
封闭式问题
指回答是或者否的问题,但基本上可以用一句话可以回答,但可能需要其他语句进行佐证。
开放式问题
为了了解开放式问题框定的答案领域范围,首先定义了答案中的子句类型,然后从疑问句中找到一些典型的词语映射到子句类型中。
4.4 答案处理
4.4.1 答案实体抽取
4.4.1.1 实体标注集
在答案中,我们将注意力集中在核心实体上,这包括疾病症状、药物、食物、检查、治疗方法、器官和指标。相比于问题的实体文累计,我们不在关注个人基本信息和数值信息,也不再关注器官描述信息和指标描述信息,我们的目的就是发现答案中最核心的话题词,以方便后续更加深度的分析工作。(我觉得这个和我们想要的有点类似)
4.4.1.2 实体抽取标注的优化
在进行实体抽取标注时,我们使用了词典信息。在下例中,所有被标注为药物(m)的实体,一部分是因为在词典中出现过,或者试题中的某个字在药物实体中出现过,或者顿号之后很可能会跟随一个实体(这句话不懂)。
但是我们忽略了一个重要的信息,那就是顿号意味着两个实体有极大概率是具有相同的标签的。类似的,还有“和”、“或者”等词汇,我们称之为等价连接词。
扩展:
- 标点符号顿号(、)的标签为dn?,其中?由紧邻的上一个词的标签决定
- 非标点等价连接词的标签为l?,其中?由紧邻的上一个词的标签决定
4.4.2 最小完整语义切分
4.4.2.1 概念
最小完整语义指的是给一个段落重新断句,将段落切分成很多个句子片段。最小完整语义切分的本质是根据一些通用的句式和高频字词用逗号和句号对段落进行标点,从而使得所有的一句好分割的字句长度达到最小,且都具有完整的语义。
4.4.2.2 实现
这是个序列标注问题,同样使用CRF实现。
使用前导词特征和字符特征。
4.4.3 片段分类
我们成最小完整语义切分之后以句号分割的子句为片段。为了能够更好的匹配问题一图,我们需要提前将片段进行分类。
4.4.3.1 分类集定义
4.4.3.2 特征定义
- 实体
- 片段位置
- tf-idf值较高的词语
4.4.3.3 分类方法
使用SVM模型分类,LibSVM工具。
4.5 标注数据存储
4.5.1 存储需求
4.5.1.1 问题
在问题处理后,可以得到实体标注文本,结构化表示文本,疑问句列表,疑问关键字列表,问题类型,要求答案类型等信息。
4.5.1.2 答案
在答案处理后,我们可以得到经过实体标注文本,语义切分片段列表,片段分类等信息。
4.5.1.3 实体
实体共现
在之后的检索和摘要过程中需要用到实体共现的信息,所谓实体共现是指多个实体在一段文本中共同出现。