前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AWS医疗NLP

AWS医疗NLP

作者头像
磐创AI
发布2021-09-03 16:34:01
1.4K0
发布2021-09-03 16:34:01
举报

磐创AI分享

作者 | Ram Vegiraju

编译 | VK 来源 | Towards Data Science

命名实体识别(Named Entity Recognition,NER)是目前最流行和最有需求的自然语言处理任务之一。随着NER的扩展,它也变得更加特定于领域。

为特定领域(如医疗保健/医疗)构建定制的NER模型可能很困难,并且需要大量的数据和计算能力。AWS是一个高级服务,AWS提供了许多不同的NLP任务的自动化,例如情感分析、主题建模和NER。

在本文中,我们将介绍如何使用Streamlit构建一个web应用程序,该应用程序可以调用impless Medical并返回检测到的医疗实体。本文假设具备AWS的基础知识、在AWS控制台中导航的能力以及Python基础知识。

我将提供一个我们将要使用的服务的列表,以及下面的更深入的定义,但是如果已经熟悉这些服务,请随意跳到情感分析和实体提取的代码演示。

目录

  1. AWS服务概述
  2. 体系
  3. 使用Streamlit创建前端
  4. 创建Lambda函数和rest api
  5. Lambda函数与AWS函数的集成
  6. 连接前端和后端
  7. 代码和结论

1.AWS服务

AWS Understand Medical:符合HIPAA的NLP服务,为用户从文本中提取健康数据提供高级API。

AWS lambda:一种无服务器计算服务,允许开发人员在不管理或配置服务器的情况下运行代码。我们将使用此服务访问AWS for NER,并与restapi通信以将结果输出到前端。

Boto3:AWS软件开发工具包(SDK)针对Python开发人员,我们在Lambda函数中使用它来访问其他AWS服务,如consulate。

身份访问和管理(IAM):允许你通过权限和角色管理AWS服务的访问。我们将为Lambda函数创建一个角色,以便能够访问AWS和API GW。

awsapi网关(apigw):允许开发人员创建、发布和监视安全RESTful和socketapi的服务。

2.架构

架构相对简单。我们将构建一个streamlitweb应用程序,它访问我们将使用的amazon api网关创建的rest api。这个rest api将作为后端Lambda函数的接口,该函数使用boto3 sdk访问understand Medical for Medical。

3.使用Streamlit创建前端

对于我们的应用程序,我们将使用一个名为Streamlit的Python库创建一个简单的前端,该库允许Python开发人员和数据科学家快速启动和运行web应用程序/仪表板。我们的应用程序只需要一些标题和一个文本框,用于输入文本,我们将对其进行分析,以检测任何潜在的医疗实体。

代码语言:javascript
复制
import requests
import json
import streamlit as st

# 标题
st.title("Medical NER with AWS Comprehend Medical Example")
st.subheader("Enter the text you would like to analyze below")
inputText = st.text_input('Enter text') #text is stored in this variable

请求库稍后将用于访问我们创建的API,但是现在应该创建一个基本的前端模板。

4.创建Lambda函数和restapi

注意:这一步有点困难,为了简单起见,我跳过了许多关于API创建的小细节。

现在,当你直接登录到IAM服务后,就可以转到AWS控制台了。在使用Lambda之前,我们需要为Lambda函数创建一个角色,该角色允许Lambda函数使用comprehensive Medical和API Gateway。

进入IAM服务后,单击页面左侧的角色,然后单击创建角色。现在你选择角色的服务,在本例中是Lambda。单击下一步:权限,现在我们可以在搜索选项卡中查找要附加到角色的策略。确保选中AmazonComprehendFullAccess、AmazonApigatewayFullAccess和AmazonAPIGatewayAdministrator。

继续并单击createrole,我们可以转到Lambda服务。单击create function,命名Lambda函数,选择python3.8作为运行时,然后单击change fault execution role。现在选择Use an existing role并选择你为Lambda服务创建的角色。

继续并单击create function,我们已经准备好了Lambda函数。我们的下一步是使用apigw创建restapi,并将其与Lambda函数集成。转到控制台上的API网关服务,然后单击创建API。选择build rest api,命名API,然后单击create。

创建rest api之后,请确保创建POST方法,以便我们可以将数据从前端发送到后端Lambda函数。在创建适当的资源和方法之后,确保部署API并启用CORS。我们现在有了一个restapi,可以用来集成前端和后端。

5.Lambda函数与AWS函数的集成

现在,架构的一般流程已经建立,我们可以集中精力在后端工作上,以便为NER集成应用程序。

使用boto3库,我们使用API调用。医疗检测实体有五个不同的类别,可分为:解剖、医疗状况、药物、受保护的健康信息和测试治疗程序。有关boto3为你提供的API调用的进一步文档,请访问以下链接:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/comprehendmedical.html。

代码语言:javascript
复制
import json
import boto3

# 客户访问Comprehend Medical
medComprehendClient = boto3.client(service_name='comprehendmedical', region_name='us-east-1')

def lambda_handler(event, context):
    print(event['Input'])
    inputText = event['Input']
    print(inputText)

    # API调用医疗实体检测/NER
    entitiesDetected = medComprehendClient.detect_entities(Text = inputText)
    print(entitiesDetected)


    return {
        'statusCode': 200,
        'headers': {
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
        },
        'body': entitiesDetected
    }

请注意,你必须在我们返回的JSON中包含一个headers部分,以避免任何CORS错误。

6.连接前端和后端

既然我们已经部署了API,我们需要在前端访问restapi,这样我们就可以将输入文本输入Lambda函数。我们使用Python请求库来访问我们创建的restapi。

代码语言:javascript
复制
# 使用API GW和Lambda函数进行实体检测
def detectEntities(inputText):
    # 输入文本被发送到Lambda函数
    inputObj = {"Input": inputText}
    # 部署API
    url = "https://80g6psdc39.execute-api.us-east-1.amazonaws.com/prod/medner"
    x = requests.post(url, data = json.dumps(inputObj))
    # 解析实体检测
    resDict = x.text
    res = json.loads(resDict)
    resEntities = res["body"]["Entities"]
    resText = [i['Text'] for i in resEntities]
    resCategories = [i['Category'] for i in resEntities]
    entDict = dict(zip(resText, resCategories))
    return entDict

函数的第一部分接受用户输入并将其传递给rest api。在impledge Medical返回它检测到的实体之后,我们将数据解析成一种可呈现的格式,我们可以将其写回前端。

7.代码和结论

https://github.com/RamVegiraju/MedNERComprehend

要访问演示的所有代码,请转到上面的链接。AWS拥有一套不断扩展的高级人工智能服务,可以为时间不长或没有构建定制ML模型经验的人提供真正的自动化和强大的应用程序。

谢谢你的阅读!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 磐创AI分享
  • 目录
  • 1.AWS服务
  • 2.架构
  • 3.使用Streamlit创建前端
  • 4.创建Lambda函数和restapi
  • 5.Lambda函数与AWS函数的集成
  • 6.连接前端和后端
  • 7.代码和结论
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档