>> You're not going to want to miss this episode of The AI Show,
where we do Text Analytics for Health.
I teared up a little,
because I did research in this area many moons
ago and it is so much better now,
hopefully you'll tune and we'll see you then.
[MUSIC]
>> Hello and welcome to this episode of The AI Show.
We're going to learn a little bit about Text Analytics,
but for a specific use case for health,
I've got Ashly Yeo, Senior Program Manager
in the Cognitive Services team,
he does Text Analytics.
Why don't you tell us what you do,
and what you work on my friend?
>> Hi Seth, happy to be here and to share with
you and your audience about Text Analytics,
specifically for the healthcare domain.
We released and announced back in July.
Text Analytics will help as a preview
offering for customers in the healthcare space.
I know about for obvious reasons because of the pandemic.
But we put out this product early in January this year,
and we make the announcement July because of the demand for it.
Text Analytics for Health, it's an approach that utilizes NLP,
Natural Language Processing techniques to process
documents in the healthcare space such as doctors notes,
discharge summaries, research articles,
those documents in the unstructured form.
I will explain a little bit in a demo,
but the different features,
that is Text Analytics for Health API provide.
>> This is really cool, but for those that maybe
don't know about Text Analytics in general,
can you give us like maybe a minute blurb on
what Text Analytics is and then let's dive
into how we've repurposed
Text Analytics to do some stuff for health as you describe.
Let's start with Text Analytics.
>> Sure, Text Analytics provides four functions, if you will.
Of them, natural language processing techniques
to extract information from unstructured text.
Information such as sentiment analysis,
being able to define or detect
the sentiment in each of those unstructured text,
especially from social media.
If textual information.
Also, we also recently released something called opinion mining.
They can tag the sentiment to
each of the aspects within that text.
Text Analytics also provide
language detection for obvious reasons.
We also do a key phrase extraction
within a blurb in news articles.
Also research papers providing
a pulling out the key phrases in those contexts.
Lastly, the fourth feature is named entity recognition,
which is really key in this healthcare feature,
name entity recognition identifies
an entity and assign them to a category,
for instance, is a person name,
whether it's an organization, what is the date?
Also, things like e-mail addresses.
>> This is causal. How did you-all repurpose
this stuff for health?
Let's talk about Text Analytics specifically for health.
>> Sure. It's actually not repurpose, actually, it's
an extension of what we check
Text Analytics we've been offered it to our customers.
We partner with our team in Microsoft research Health NExT.
We started from scratch.
We actually took a corporate of a set of documents from
the healthcare space and asked
the subject matter experts, like physicians, nurses,
researchers to annotate those documents
to pull things like entities,
relationships, they are relevant
and critical to the healthcare space.
We started from scratch, built that, and
then using the latest research for
an NLP from Microsoft Research and built the models for that.
>> That's really cool. I love how you say it's
an extension because you can still use
Text Analytics for the other things you mentioned but now
we're extending it to do specific stuff.
Why don't we talk a little about the features,
maybe some other use cases and when people can take a look at it?
>> Sure. Why don't I just go straight to the demo.
What you see here is a web interface,
a visualization tool that is
provided in the container that we've
recently released for public preview.
This visualization tool will allow us to identify
the features that are built into Text Analytics for Health.
Alongside this feature, this is by the way,
is included in a demo, this demo app.
It's included in the container, I beg your pardon.
I will select an example
text here as it just take talking about
a patient history and what you see
here is just the output from the API.
We send this text into the API,
it returns it as a JSON for those ones
that we'll design as and it pulls out four things;
is able to identify entities
related to eight different categories.
For instance, like [inaudible] .
We have a body structures,
symptoms, and medication as well.
They all follow the eight categories.
Each category has their own entity type.
You see those being highlighted in JSON.
But for visualization and simplicity,
ease of use which we provide this UI visualization tool.
Of ostracize entity recognition.
We also extract things that we also link
the entity to what we call concepts or
vocabularies that are provided in the healthcare space.
Specifically, I cannot move it down,
moved down it would disappear but you've looked at ICD-10,
which is the International Conference for Diseases,
Classification of Diseases.
Then we have things like snowman.
This is all the systematic nomenclature of medicine.
We also have for medication, RxNorm.
Each of those entities that we detect, I forgot here.
We're also able to link them to
all these different concepts which give
us the flexibility for
the use cases that our customers would be interested in.
If there's a particular concepts
that they use in their business cases,
then they just have to confine
that abbreviation or the syntax and get a code.
Then we also do relation extraction.
For instance, I hear there's a PaaS we
identified as a PaaS and that will give you,
if you go into the coding system,
you give a definition for it.
But we also see that we have a measurement value for it.
I would extract that and we build a relationship that
says this is the value of the examination.
We also look at things are negated so there's
no weight loss even though the API will extract that as a symptom.
We notice that in the text says no weight loss, we negate that,
that is very critical for making diagnosis.
We're looking at unstructured text.
Those are the four things that we do in
the single API call to this endpoint.
Entity recognition.
We do linking of the entity to known concepts of vocabularies.
We also do our relationship extraction
between those entities and attributes.
Lastly, we do negation of those entities.
>> This is so cool for me.
I don't know if you know this.
My first year of grad school,
I took an NLP class and our job was to go through
e-mails of disease outbreaks and literally classified.
I'm looking at here, like tearing up a little bit because
the way we used to do it was not this way.
This is pretty amazing.
A couple of questions about this.
You mentioned that this is an API call.
Do you have to use this interface?
>> No. This is a visualization tool, like I said.
We originally announced this
as a container that you can make an API call.
You can download the container and deploy to any of
your environments where there is
an Azure or where is local to your corporate environment.
We realized that there was some challenges with some customers.
In a few weeks in fact,
in about 10 days,
we'll be announcing the release of a hosted API and I
will switch now to a Postman to show you how the APIs can form.
>> Let's do it.
>> Here is a Postman setup,
and I'm making a call.
Again, this is in logo to my environment.
Notice that the container is not HTTPS,
but we can make this call to the similar text.
In the body of your request,
you can put up to, I believe,
it can contain up to a thousand documents.
But again, even with more documents,
you stuff into the request body is
going to take a while to process.
But I'll take the same request body here to demonstrate the call,
and I'll set it to my container
which is in the office somewhere, and it's going to take a while.
This is a synchronous call.
Once you made a request, you're going to wait for it to
finish in order for you to get the result.
What we'll be releasing in 10 days is an asynchronous API,
and that will allow you to send the request and forget it,
and then come back and query the results of the request.
This right now, what you're seeing in Postman
is a request to the container which is synchronous.
Again, you see that you return all this output related
for each entity that's detected on the text NAD, this symptom.
It shows you the different concepts that are linked to it.
Then it also has a Boolean for negation.
It's negated; if it's not, it's false.
This is the output from the container.
What I'm going to show you is the output,
what we're going to be doing or be releasing on the 19.
It is an endpoint, it's hosted.
Ignore this string here because this
is from the development environment.
We're in the process of deploying to
production right now, it takes a few days.
I'm going to send this request of
the same text to this hosted API.
Obviously, you got to remember,
you got to provision textile the resource,
so you can get the key in
order for you to authenticate to make the call.
Again, I need to make a point of this;
this public preview is still gated.
It means you got to apply for access,
because we're trying to understand why our customers use cases.
So when you apply for access,
we can evaluate the use cases that you can use for and what we
do to improve the service that you are interested in.
Going back to this asynchronous API,
this is the same request body that we sent to.
We're going to make the call, you
can see that you will come back pretty quickly.
Right now, it's back,
but what you don't see is that in the headers,
it will be a job ID.
That job ID basically is what you need to make a get-call.
What we did to submit this job is oppose,
so we do this the get-call.
Just programmatically pull out the job id,
insert it at the end of the original API URL,
and make the same get-call, sorry, not posts.
Then you will see in the output,
it's going to take a while to format it. There you go.
You see that it will show you the date that was created,
and when the day the job was completed,
more importantly you see a status; they succeeded.
Allows you to be asynchronous when making the call of the request,
and not have to worry about it,
especially if you have a lot of documents and you don't
want to be sitting there waiting for the synchronous response.
You can just forget about it in query and look for the status.
The status goes from started.
A thing I believe is processing.
Sometimes, if it fails, it will fail,
because you might exceed the number of characters per document.
You can go up to a thousand.
We are looking at optimizing that for our hosted endpoint.
Then you come back and say succeeded.
Once you succeeded, you will have the output
that's shown here in the same output that we saw in the container.
>> This is all very, very cool.
Question, I know with health-related stuff,
there is this question of privacy.
Can you talk about the way that
this service protects customer's privacy?
>> First off, the request will host the API,
so the whole container is within your own environment.
You have control over how you're going to protect your data.
For the hosted API, we have a data processor so
we don't persist any of your information you sent to us.
Because it's under Azure,
you have all the benefits of
Azure infrastructure with security, privacy compliance.
We are in HIPAA compliance,
especially when we're talking about health care.
The information is sent to us,
we would not persist them.
What our telemetry we collect is just the number of documents,
how many characters are in those documents.
We don't persist any of the content that had been sent to us.
Even to the point where
we can't help troubleshoot, passes an amount.
What you've seen the output here for this job,
it will days the expiration date.
We do keep the result,
because we don't expect you to immediately you'll be done,
and you'll be pulling the results back.
We will give you some time,
but part of our policies to persist is for 48 hours;
and after that, it will be deleted.
You can send a job to us, even keep checking.
If you don't check within 48 hours,
the output will be completely deleted,
so that we will be in compliance with our policies for privacy.
>> This again is amazing, Ashly.
Where can people go to find out more?
>> Yes. You can also find out more in
the Microsoft documentation site,
and look for Cognitive Services,
Text Analytics, and you'll
find a section under Text Analytics for Health.
Again, this is a public preview and it's gated right now.
But there is a link in there to go to apply for access.
If not, I can
give the information to Seth and you will share it in the notes.
>> That's right, we'll put it below.
But Ashly, thank you so much for
spending some time with us and thank you so
much for watching and learning all about
Text Analytics specifically for Health.
Thank you so much for watching, and hopefully,
we'll see you next time. Take care.
[MUSIC]