Review:AD本体构建研究

本文章是该论文的简单Review


概念明确

AD:即阿尔茨海默症

什么是本体?

本体是概念化的明确的规范说明。

本体的概念包括四个主要方面:

  • 概念模化
  • 明确化
  • 形式化
  • 共享化

我对本体的理解是:

一系列结构化的数据。这些数据能个从各个方面反映一个概念的基本要素。

本体的构建方法

本体构建的方法众多,本篇论文采用较为成熟的七步法来构建Ad本体。

七步法:1.确定本体的专业领域和范畴;2考察并复用本体;3.列出重要术语;4.定义类(概念)和类的层次;5.定义类的属性;6.定义属性的约束;7.添加实例;

  1. 数据获取 - 已有的结构化数据 - 已经构建好的AD本体库
  • 非结构化数据(本论文使用ROST软件爬取) - 期刊文献
  • QQ群
  • 相关网站
  • 百度知道
  1. 数据处理(结构化) 1. 分词
  2. 统计词频
  3. 主题词筛选
  4. 确定概念(主题词)之间的关系(本论文使用protege软件)
  5. 使用protege导出AD本体数据

本论文的亮点

数据来源比较多

本论文从多个方向收集相关资源,来完成对AD本体构建。
这些数据包括可以直接使用的的结构化数据,也包括从网络上或者论文中获取的非结构化数据。
并且本论文也给出了非结构化数据处理的方法:

即通过分词寻找出现频率较高的词确定为主题词。

使用中文医学主题词表(CMeSH)来对主题词进行处理

CMeSH是中国研究机构编写并出版的医学词表。

可以对主题词进行中英文的对照、查询相关主题树等操作。

数据的量过少

本论文P20,作者只使用了约一个月的聊天记录作为数据源。

本论文P25,作者只使用了4万多字的英文文献来分词获取词频率。

从统计的角度来看,这些数据的数量过少,不能够充分的反映出AD本体的一些特征。

解决方法

本作者使用的数据爬取软件也不能够应对大规模的数据爬取。针对此问题,我的解决方法是:

使用Python的Scrapy框架完成大规模、分布式的数据爬取任务。

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

例如,我之前使用Scrapy爬取学校网站主页的通知信息,仅仅使用2分钟的时间就爬取了近5000个网页,接近26M的文本数据,并存入了mysql数据库中。我的服务器配置并不高,如果使用Scrapy的分布式模块,相应的爬取速率应该会更快。

image

随着数据的增多,可以考虑使用Spark等大数据平台完成对数据的处理。但是,我想,针对某一单一疾病,单主机性能应该够用,不至于动用Spark。

处理的流程不够自动化

本论文在使用protege的过程中,需要人工对每一个提取出的主题词进行划分,确定从属关系。对于构建AD本体库来说,这种方式是可取的,但是在构建大量疾病的本体库时,人工的方式显得并不高效。

解决方法

这个问题涉及到自然语义理解。我对此方面并没有了解,有待进一步的研究。

分词软件过于落后

本论文使用的ROST软件由于分词性能并不好,不能很好的对文本进行划分。例如,在P24,作者提到,分词将老年痴呆症这一个完整的词,分割成为老年/痴呆/症。

解决方法

随着技术的发展,分词技术也有了突破。
使用Python的Jieba分词库,可以看到,老年痴呆症被完整的分割了出来。分词的准确度和速度都有了较大的提升。在我的服务器上,针对一篇50k字的文章,分词也只用了1.23秒。

image