文摘:一体化医学语言系统(UMLS)是生物医学领域里面最大的词表,可以用在诸如年决策支持系统、病历管理、信息检索和数据挖掘之中。如何利用UMLS成为目前的重要话题。本文介绍了MetaMap程序是如何把生物医学的文本与UMLS中的超级词表(MetaThesaurus)相匹配,换言之,就是在生物医学文本中发现超级词表中的概念的方法。

MetaMap使用知识密集型的方法:包括了符号、自然语言处理和计算语言学等技术。除了应用于信息检索和数据挖掘,MetaMap是美国国立医学图书馆(NLM)的初步标引系统(indexing initiative system)的基础之一,这个标引系统应用于图书馆半自动和全自动的生物医学文献标引。

概述

目前,把自然语言的文本与生物医学知识库(包括MeSH词表和UMLS)进行匹配的技术得到了长足的发展,例如MicroMeSH,CHARTLINE CLARIT等等。

MetaMap的算法

MetaMap是一个把生物医学文本与UMLS超级词表中的概念匹配起来的程序,该程序可以设置很多参数,这些参数用于控制MetaMap的输出以及内部运行(如单词变形的程度、是否忽略超级词表中含有常见词的字串,是否考虑字母的顺序等等)。

1.切分

任一文本都被切分成简单的名词短语,这样就限定了下一步处理的范围,匹配的工作也更加易于管理。使用“专家”系统中的最小承诺切分器对文本进行浅显句法分析[这一句翻译专业术语不够专业,请专家指正],对于在“专家”词典中没有唯一标签的单词,该切分器使用Xerox句子成分标签器标出句子结构(如名词、动词)。例如,对于“ocular complication of myasthenia gravis” (重症肌无力的眼部并发症),切分器发现两个名词短语:“ocular complication”和“of myasthenia gravis”经过简单的句法分析,将“ocular complication”分为“[mod(ocular),head(complication)],指明了complication是短语的中心部分(head),对于标为介词、连词、限定词的单词,以后的处理将忽略之。

2.产生变形体

对于每一个短语,利用“专家”词典以及同义词补充数据库中的知识,产生这些短语的变形体。所谓变形体包括这个短语本身(称之为发源词)以及首字母缩写词、缩写词、同义词和词源变异词,这些词的组合,最后是词形和拼写变形体。其基本过程如下图所示(不包括词形变异计算和拼写变异计算,为了提高效率,这些计算最后进行)。对于ocular这个发源词的变形体产生如下图:

Ocular{[adj],0=””}

Eye{[noun],2=”s”}

Eyes{[noun],3=”si”}

Optic{[adj],4=”ss”}

Ophthalmic{[adj],4=”ss”}

Ophthalmia{[noun],7=”ssd”}

Oculus{[noun],3=”4”}

Oculi{[noun],4=”di”}

这些变形体按照其生成的过程按照树状结构排列,每一变形体后面跟着该变形体的词性,然后是对其与发源词的距离以及过程评分。例如,第一行ocular(形容词)的距离评分为“0”,过程为空(””)。因为它本身就是发源词。同理,名词“ophthalmia”与发源词的距离为“7”,其过程为“ssd”,即它是发源词ocular的同义词“eye”[过程标记为s]的同义词ophthalmic[过程标记为s]的词源变形[过程标记为d]。

3.检索候选词

经过检索超级词表,检索到包含有至少一个变形体的候选字串集合,可以通过参数来控制此检索过程,如stop_large_n参数可以排除对超级词表中出现2000次以上的单字母变形体和出现1000次以上的双字母变形体。另外,如果可能的话,还可以通过使用特殊的小型索引来提高候选词检索的效率。

4.候选词的评价

对每一个超级词表候选词的评价首先是计算出与输入的短语词相匹配的候选词,然后用4种指标的加权平均组成的语言学评价函数计算输入短语与候选词之间的匹配程度,这4种指标是:中心度(centrality),即包含中心词;变形情况(variation):距离倒数的平均值;覆盖面(coverage)和内敛度(cohesiveness)。后两个指标用于测量候选词与文本的匹配程度和有多少个片段。最后按照匹配程度排列这些候选词。

上面的例子中,短语ocular complication的9个候选词如下图所示。如果候选词不是表达该概念的优选词,用括号把优选词显示出来。需要注意的是,所有用户文本中complication相对应的候选词的评分都要比ocular的高,这是因为complication是短语的中心词。

5.建立匹配

把含有短语中相连的各个部分的候选词组合起来,就完成了完整的匹配。完整匹配的强度计算与候选匹配的计算一样。评分最高的完整匹配代表了MetaMap对原始短语的最优的表达。也就是说,对于“ocular complication”短语,其最高评分的完整匹配是“ocular”与“complication”或者“ocular”与“complication specific to antepartum or postpartum”组合。对于“complication”匹配过程说明了MetaMap的最大问题,即含义模糊的问题。两个概念都含有complication字串,MetaMap无法区分之。这个问题在下面一部分可以得到部分的解决。

数据维护

每一次UMLS改版,MetaMap都要更新其数据库文件,包括预先计算变形词表、语义类型和MeSH树状结构号的信息,以及按照超级词表中含有的单词的字串索引。需要力量最多的就是创建单词索引文件。采用4种方式过滤超级词表中的文件(主要是MRCON)。

(1)手工过滤

超级词表中的少量字串会引起问题,需要在进行其它过滤前将其手工过滤掉。如数字、单个字母、特殊的例子如“periods for menstruation”(月经期间)[?]和含义模糊。幸运的是超级词表的设计者制定了“可禁止的同义词”的理念,即不能完整表达自己本身的字串或者缩写或者非正式的字串。超级词表中大多数可以导致出现问题的含义模糊都被标上可禁止字串。上面例子中提到的与“complication”匹配的“complication specific to antepartum or postpartum”就是因为没有被标上“可禁止”的例子。以后版本中会解决这个问题。

(2)词汇过滤

词汇过滤是最温和的过滤。就是去掉实际上与表示某一概念的字串相同的字串,造成实际上相同的字串的情况包括:

²  不必要的附加说明。

²  超级词表多义词指示符

²  NEC/NOS变异

²  字法通用:如对有逗号的字串进行重排,除非字串好像是用连词或介词的存在而决定的。

²  大小写变异。

²  连字符变异。

²  拥有[?]

词汇过滤就是根据上述标准对某一概念的所有字符串进行规范化,对每一组字串去掉其它的,仅保留一个字串。

(3)类型过滤

除了滤除可禁止同义词,还可以根据术语语义类型(term type, TTY)排除一些术语。一般排除的类型包括缩写、过时的或某一种内部结构(如在LOINC中的实验检测描述,LOINC是超级词表组成成分之一)。

(4)句法过滤

最后一种过滤是指一种对超级词表字串本身的切分程序。由于一般的MetaMap处理包括了对文本中发现的简单名词短语的匹配,超级词表字串如果过于复杂不见得达到较好的匹配。这样要把含有一个以上的简单短语的字串也去掉。由于合成短语(含有正常格式的介词短语)很容易处理,所以这样的合成短语不被去除。

由于MetaMap既可用于高密度的语义处理,也可用于浏览,为此建立了三种不同过滤程度的数据模式:

²  严格模式:所有上述的三种过滤都用上。这种选择最适合准确度要求高的语义处理。严格模式包括英语超级词表(共1,339,479字串)中的706,593(53%)的字串。

²  中度模式:包括了手工、词汇和类型过滤,但是没有句法过滤。这种方式适合将输入文本作为一个整体来看待而不是分为简单的短语。中度模式包括了982,447个字串(73%)。

²  宽松模式:只有手工和词汇过滤,采用这种模式可以获得全部的超级词表的字串,适用于浏览。宽松模式包括了1,146,962(86%)的超级词表字串。

超级词表的可用资源:略。

应用:略。

MetaMap程序是如何把生物医学文本有效地匹配到一体化医学语言系统的超级词表的相关推荐

  1. MetaMap程序是如何把生物医学文本有效地匹配到一体化医学语言系统的超级词表的(转)

    MetaMap程序是如何把生物医学文本有效地匹配到一体化医学语言系统的超级词表的 已有 4079 次阅读 2008-10-12 08:35|个人分类:生物医学文本挖掘|关键词:文本挖掘:自然语言处理: ...

  2. 编写一程序,有2个文本框,在第一个文本框中输入一个整数,当焦点从第一个文本框离开时,第二个文本框将显示这个数的绝对值(使用FocusListener)。

    编写一程序,有2个文本框,在第一个文本框中输入一个整数,当焦点从第一个文本框离开时,第二个文本框将显示这个数的绝对值(使用FocusListener). import javax.swing.*; i ...

  3. php小程序的wxparse.js是什么,微信小程序如何解析HTML富文本(使用wxParse解析富文本的demo)...

    1.把wxParse文件全部放入项目. 2.在wxml中import wxParse.wxml,并把template插入到到对应的位置上 {{title}} {{date}} {{time}} 3.在 ...

  4. 许嵩音乐智能问答系统微信小程序之获取数据及文本分类

    许嵩音乐智能问答系统微信小程序之获取数据及文本分类 项目简介. 音乐播放器搭建. 获取数据及文本分类. 智能客服聊天界面. 连接前端微信小程序输入和后端python,并返回值 连接知识图谱 数据获取 ...

  5. 文献阅读:深度学习模型利用生物医学文本上下文关系进行命名实体识别

    文献阅读:利用深度学习模型在生物医学文本的上下文关系中进行命名实体识别 题目 1 背景 2 材料和方法 2.1 GRAM-CNN方法 2.1.1 嵌入方法 2.1.2 GRAM-CNN 2.1.3 C ...

  6. 文献阅读:神经网络提取生物医学文本中的关系

    文献阅读:神经网络提取生物医学文本中的关系 题目 1 背景 2 相关工作 3 方法 3.1 生物医学关系提取 3.2 Dependency graphs and SDPs 3.3 句子嵌入表示 3.4 ...

  7. java毕业设计——基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码)——医学图像处理系统

    基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+图像处理技术的医学图像处理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  8. 不是程序员学python有什么用-程序员的基本功:为什么非要用Python,其他语言不好吗?...

    原标题:程序员的基本功:为什么非要用Python,其他语言不好吗? Python能够这么火其中一个重要的原因是数据分析带起来的.Python的优点有很多,同样一个功能,其他语言需要写100行,而Pyt ...

  9. 程序员想要设计一门新的编程语言,学习什么语言好,用C/C++合适吗?

    是的,最好使用C++.这里说的设计创造一门语言,我猜是想创建一门解释性语言,下面我来列举四种常见的解释性语言,看看它们是怎么被实现的. Python.当下最流行的语言,Python的底层主要是由C.C ...

最新文章

  1. JAVA中jsp怎么接收参数_如何使用JSP从URL获取参数
  2. 《幸福资本论》读书笔记
  3. Java线程池理解及用法
  4. linux VPS上装FTP
  5. C 语言实例 - 输出九九乘法口诀表
  6. pytorch torch.unsqueeze
  7. 腾讯还在提高围棋AI绝艺的棋力,柯洁说已经超过当年AlphaGo
  8. asp.net出现【视图状态消息身份验证错误】
  9. xcopy使用与案例使用
  10. oracle sql 拆分字符串,oracle 拆分字符串
  11. 英语学习之‘加减乘除’
  12. Win10 将 Bookmarks 的书签恢复到 Chrome
  13. 提升嵌入式开发效率小技巧——开发环境配置
  14. MySQL字段名诸如key的报错问题
  15. 洛谷-3387 【模板】缩点
  16. stm32f405rgt6与as5048a的SPI通信问题
  17. 【求助】ssh.service loaded(inactive) 问题
  18. 如何快速在两台电脑之间传输大文件?
  19. oracle clob 查询换行,oracle中Clob字段中的回车换行在jsp中展示的问题
  20. [Maven实战](9)传递性依赖

热门文章

  1. 故障处理 软件 需求_PS精简软件神器,既方便又好用,满足日常的图像处理需求...
  2. 什么蓝牙耳机佩戴舒适性好一点?佩戴舒适的入耳式蓝牙耳机推荐
  3. 微信公众号h5实现高德/百度/腾讯地图导航
  4. 网页在小米电视无法展示完整|小米电视网页分辨率怎么调,网页数据才能全屏展示
  5. 关于增强网站说服力的要素及理解力
  6. 抖音配音都有哪些软件好用?好的配音可以快速热门涨粉丨国仁网络资讯
  7. 业余软件开发_我需要在业余时间编码才能成为一名优秀的开发人员
  8. 2019年CS224N课程笔记-Lecture 19:Safety, Bias, and Fairness
  9. 如本科技荣获“十大工业技术创新奖”和“十大快速成长企业奖”
  10. java判断一个数是否是回文数_java编写判断是否是回文数