亚马逊AWS官方博客

Amazon Comprehend Medical —— 针对医疗保健客户的自然语言处理

作为肠胃科医生和皮肤科医生的后代,在我的成长过程中一直充满了各种晦涩难懂的对话,包含无穷无尽的复杂医学术语:人类解剖学、外科手术、药物名称……以及它们的缩略词。充满求知欲的小孩想知道他的父母是否对这些奇怪的话语感到难以理解,这真的是一段有趣的经历。

因此,非常高兴能发布 Amazon Comprehend Medical,这是 Amazon Comprehend 针对医疗保健客户的延伸。

关于 Amazon Comprehend 的简介

Amazon Comprehend 于去年在 AWS re:Invent 启用。简单来说,该自然语言处理服务针对语言检测、个体分类、情感分析和关键词提取提供了简洁实时 的API。此外,它还允许您采用名为“主题建模”的无导师学习技术自动编组文本档案。

使用 FINRA、LexisNexis 或 Isentia、Amazon Comprehend 可以理解一般用途的文本。然而,鉴于临床资料非常特殊的属性,医疗保健客户已经要求我们设立专为其特殊需求而定制的 Amazon Comprehend 版本。

隆重推出 Amazon Comprehend Medical

Amazon Comprehend Medical 设于 Amazon Comprehend 顶部,并增加了以下功能:

  • 支持在大量医疗术语词汇中进行个体提取和个体识别:解剖、病情、手术、药物、缩略词等。
  • 在这些类目和子类中精确查找个体提取 API (detect_entities) 。
  • 受保护健康信息提取 API (detect_phi) 可以查找详细联系信息、医疗记录号等。

提醒:Amazon Comprehend Medical 可能无法准确识别所有情况下的受保护健康信息,无法满足 HIPAA 的受保护健康信息去识别化要求。您有责任审阅 Amazon Comprehend Medical 提供的任何输出信息,以确保其满足您的需求。

现在,让我向您展示如何使用这一新服务。首先,我将使用 AWS 控制台,然后会运行一个简单的 Python 示例。

在 AWS 控制台上使用 Amazon Comprehend Medical

打开 AWS 控制台,所有需要做的是粘贴部分文本并点击“分析”按钮。

正在分析文本立即处理文档。个体被提取出来并突出显示:我们看到个人信息为橙色,药物为红色,解剖学信息为紫色,病情为绿色。

Amazon Comprehend Medical

准确获得个人识别信息。对于在交流或出版前需要对文档隐去姓名资料的研究者而言,这是非常重要的。而且,“皮疹”和“睡眠障碍”被准确检测为由医生诊断出的病情(‘Dx’ 是“诊断”的速记写法)。也会检测到药物。

然而,Amazon Comprehend Medical 不仅限于简单的医疗术语提取。它还可以理解复杂的关系,如药物剂量或详细的诊断信息。这有一个很好的例子。

Amazon Comprehend Medical

如您所见,Amazon Comprehend Medical 可以找出 ‘po‘ 和 ‘qhs‘ 等缩略词:第一个表示药物为口服,第二个则为 ‘quaque hora somni‘(是的,拉丁语)的缩略词,即为睡前。

现在,让我们稍微深入一点,运行一个 Python 示例。

用 AWS SDK 针对 Python 使用 Amazon Comprehend Medical

首先,我们输入 boto3 SDK,创建一个服务客户端。

import boto3
comprehend = boto3.client(service_name='comprehendmedical')

现在,我们在文本样本中调用 detect_entity API,并打印检测到的个体。

text = "Pt is 40yo mother, software engineer HPI : Sleeping trouble on present 
dosage of Clonidine.Severe Rash  on face and leg, slightly itchy  Meds : Vyvanse 
50 mgs po at breakfast daily, Clonidine 0.2 mgs -- 1 and 1 / 2 tabs po qhs HEENT : 
Boggy inferior turbinates, No oropharyngeal lesion Lungs : clear Heart : Regular 
rhythm Skin :  Papular mild erythematous eruption to hairline Follow-up as scheduled"

result = comprehend.detect_entities(Text=text)
entities = result['Entities']
for entity in entities:
    print(entity)

看一下该药物个体:它有三个嵌套属性(剂量、路径和频率),三个属性增加了至关重要的上下文。

{u'Id': 3,
u'Score': 0.9976208806037903,
u'BeginOffset': 145, u'EndOffset': 152,
u'Category': u'MEDICATION',
u'Type': u'BRAND_NAME',
u'Text': u'Vyvanse',
u'Traits': [],
u'Attributes': [
  {u'Id': 4,
     u'Score': 0.9681360125541687,
     u'BeginOffset': 153, u'EndOffset': 159,
     u'Type': u'DOSAGE',
     u'Text': u'50 mgs',
     u'Traits': []
     },
  {u'Id': 5,
     u'Score': 0.99924635887146,
     u'BeginOffset': 160, u'EndOffset': 162,
     u'Type': u'ROUTE_OR_MODE',
     u'Text': u'po',
     u'Traits': []
     },
  {u'Id': 6,
     u'Score': 0.9738683700561523,
     u'BeginOffset': 163, u'EndOffset': 181,
     u'Type': u'FREQUENCY',
     u'Text': u'at breakfast daily',
     u'Traits': []
     }]
}

还有另一个例子。该病情个体由“否定”识别完成,意味着未检测到病情,即为该患者没有任何口咽病变。

{u'Category': u'MEDICAL_CONDITION',
u'Id': 16,
u'Score': 0.9825472235679626,
u'BeginOffset': 266, u'EndOffset': 286,
u'Type': u'DX_NAME',
u'Text': u'oropharyngeal lesion',
u'Traits': [
    {u'Score': 0.9701067209243774, u'Name': u'NEGATION'},
    {u'Score': 0.9053299427032471, u'Name': u'SIGN'}
]}

我向为您展示的最后一个功能是用 detect_phi API 提取个人信息。

result = comprehend.detect_phi(Text=text)
entities = result['Entities']
for entity in entities:
print(entity)

在该文本中出现了几条个人信息,我们精确提取出了这几条个人信息。

{u'Category': u'PERSONAL_IDENTIFIABLE_INFORMATION',
u'BeginOffset': 6, u'EndOffset': 10, u'Text': u'40yo',
u'Traits': [],
u'Score': 0.997914731502533,
u'Type': u'AGE', u'Id': 0}

{u'Category': u'PERSONAL_IDENTIFIABLE_INFORMATION',
u'BeginOffset': 19, u'EndOffset': 36, u'Text': u'software engineer',
u'Traits': [],
u'Score': 0.8865673542022705,
u'Type': u'PROFESSION', u'Id': 1}

如您所见,Amazon Comprehend 可帮助您提取复杂的信息和关系,同时操作起来特别简单。

再次提醒,请记得 Amazon Comprehend Medical 并非专业医疗设备、诊断或治疗的替代品。您肯定要仔细审阅它提供的任何信息,并在作出决定前根据经验进行判断。

现已推出
我希望这篇博文提供了丰富的有用信息。您现在就可以开始用 Amazon Comprehend Medical 在以下地区开发应用程序:美国东部(弗吉尼亚北部)、美国中部(俄亥俄)、美国西部(俄勒冈)和欧洲(爱尔兰)。

此外,该服务属于 AWS 免费套餐范畴:注册后三个月,前 25000 份(或 250 万字)文本免费。

为什么不在最近的处方或医学考试中试一试,并让我们了解您的想法呢?

Julien