Healthcare Natural Language API は、Cloud Healthcare API の一部であり、自然言語モデルを使用して医療テキストから医療情報を抽出できます。
このコンセプト ガイドでは、Healthcare Natural Language API の基本的な使用方法について説明します。次の内容を含みます。
- Healthcare Natural Language API に対して作成できるリクエストの種類
- Healthcare Natural Language API に対するリクエストを作成する方法
- Healthcare Natural Language API からのレスポンスを処理する方法
概要
Healthcare Natural Language API は、医療テキストから医療情報を抽出します。この医療情報には次のものが含まれます。
- 医薬品、医療処置、症状などの医療コンセプト
- 時間的関係、サブジェクト、確実性評価などの機能
- 副作用や投薬量などのリレーション
Healthcare Natural Language API か AutoML Entity Extraction for Healthcare かを選択
Healthcare Natural Language API には、医療テキストから医療のコンセプトや関連を抽出する、事前トレーニング済みの自然言語モデルが用意されています。Healthcare Natural Language API は、事前定義された一連の 医療ナレッジ カテゴリにテキストをマッピングします。
AutoML Entity Extraction for Healthcare を使用すると、独自のアノテーション付き医療テキストと独自のカテゴリを使用してトレーニングされたカスタム エンティティ抽出モデルを作成できます。詳しくは、AutoML Entity Extraction for Healthcare ドキュメントをご覧ください。
利用できるロケーション
Healthcare Natural Language API は次のロケーションで利用できます。
場所の名称 | ロケーションの説明 |
---|---|
us-central1 |
アイオワ、米国 |
europe-west4 |
オランダ |
Healthcare Natural Language API の機能
Healthcare Natural Language API では、医療テキストで医療のコンセプトや関係を検査します。analyzeEntities
メソッドを使用してエンティティ分析を行います。
エンティティ分析リクエスト フィールド
Healthcare Natural Language API は REST API であり、JSON のリクエストとレスポンスで構成されます。次のサンプルは、curl
を使用したシンプルな Healthcare Natural Language API リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'nlpService': 'projects/PROJECT_ID/locations/LOCATION/services/nlp', 'documentContent': 'Insulin regimen human 5 units IV administered.' }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/services/nlp:analyzeEntities"
このサンプル リクエストは、次のフィールドを示しています。
nlpService
には NLP サービスのリソース名が含まれます。documentContent
には、医療テキストからなるリクエストのデータが含まれています。医療テキストの最大サイズは 10,000 Unicode 文字です。
エンティティ分析のレスポンス フィールド
エンティティ分析は、検出された医療ナレッジへの言及、医療コンセプト、医療ナレッジへの言及間のリレーションを返します。
次のレスポンスは、エンティティ分析リクエスト フィールドのサンプル リクエストへのレスポンスを示しています。
{
"entityMentions": [
{
"mentionId": "1",
"type": "MEDICINE",
"text": {
"content": "Insulin regimen human"
},
"linkedEntities": [
{
"entityId": "UMLS/3537244"
},
{
"entityId": "UMLS/3714501"
},
{
"entityId": "UMLS/21641"
},
{
"entityId": "UMLS/795635"
},
{
"entityId": "UMLS/1533581"
},
{
"entityId": "UMLS/4721402"
}
],
"temporalAssessment": {
"value": "CURRENT",
"confidence": 0.87631082534790039
},
"certaintyAssessment": {
"value": "LIKELY",
"confidence": 0.9999774694442749
},
"subject": {
"value": "PATIENT",
"confidence": 0.99999970197677612
},
"confidence": 0.41636556386947632
},
{
"mentionId": "2",
"type": "MED_DOSE",
"text": {
"content": "5 units",
"beginOffset": 22
},
"confidence": 0.56910794973373413
},
{
"mentionId": "3",
"type": "MED_ROUTE",
"text": {
"content": "IV",
"beginOffset": 30
},
"linkedEntities": [
{
"entityId": "UMLS/348016"
}
],
"confidence": 0.9180646538734436
}
],
"entities": [
{
"entityId": "UMLS/1533581",
"preferredTerm": "Therapeutic Insulin",
"vocabularyCodes": [
"MTH/NOCODE",
"NCI/C581"
]
},
{
"entityId": "UMLS/21641",
"preferredTerm": "Insulin",
"vocabularyCodes": [
"FMA/83365",
"LNC/LA15805-7",
"LNC/LP14676-8",
"LNC/LP16325-0",
"LNC/LP32542-0",
"LNC/LP70329-5",
"LNC/MTHU002108",
"LNC/MTHU019392",
"MSH/D007328",
"MTH/NOCODE"
]
},
{
"entityId": "UMLS/348016",
"preferredTerm": "Intravenous",
"vocabularyCodes": [
"LNC/LA9437-0",
"LNC/LP32453-0",
"MTH/NOCODE",
"NCI/C13346"
]
},
{
"entityId": "UMLS/3537244",
"preferredTerm": "Insulins",
"vocabularyCodes": [
"MSH/D061385",
"MTH/NOCODE"
]
},
{
"entityId": "UMLS/3714501",
"preferredTerm": "Insulin Drug Class",
"vocabularyCodes": [
"MTH/NOCODE",
"VANDF/4021631"
]
},
{
"entityId": "UMLS/4721402",
"preferredTerm": "INS protein, human",
"vocabularyCodes": [
"MTH/NOCODE",
"NCI/C2271"
]
},
{
"entityId": "UMLS/795635",
"preferredTerm": "insulin, regular, human",
"vocabularyCodes": [
"LNC/LP17001-6",
"MSH/D061386",
"MTH/NOCODE",
"NCI/C29125",
"RXNORM/253182",
"VANDF/4017559",
"VANDF/4017569",
"VANDF/4019786"
]
}
],
"relationships": [
{
"subjectId": "1",
"objectId": "2",
"confidence": 0.53775161504745483
},
{
"subjectId": "1",
"objectId": "3",
"confidence": 0.95007365942001343
}
]
}
このサンプルは、次のレスポンス フィールドを示しています。
entityMentions
は、ソースの医療テキストでの医療ナレッジ エンティティの存在です。エンティティへの言及にはそれぞれ次のフィールドがあります。mentionId
は、レスポンスに記述されるエンティティへの言及の一意の識別子です。type
は、エンティティへの言及の医療ナレッジ カテゴリです。text
は、エンティティへの言及を含む医療テキストの抜粋であるtextContent
と、ソース医療テキストでのエンティティへの言及があった場所であるoffset
から構成されます。temporalAssessment
は、リンクされたエンティティがCURRENT
、PERSONAL_HISTORY
、FAMILY_HISTORY
、FUTURISTIC
、ALLERGY
のいずれかのエンティティの言及に関係する方法を指定します。certaintyAssessment
は、POSITIVE
、POSSIBLE_POSITIVE
、UNCERTAIN
、POSSIBLE_NEGATIVE
、NEGATIVE
、CONDITIONAL
のいずれかの医療コンセプトの否定または認定です。subject
は、医療コンセプトがPATIENT
、FAMILY_MEMBER
、OTHER
のいずれかに関係するサブジェクトを指定します。linkedEntities
では、このエンティティの言及に関係する可能性のある医療コンセプトを一覧表示します。リンクされたエンティティでは、entities
のエンティティに医療コンセプトをリンクするentityId
を指定します。
entities
では、リンクされたエンティティ フィールドの医療コンセプトを記述します。各エンティティは、次のフィールドを使用して記述されます。entityId
は、linkedEntities
の一意の識別子です。preferredTerm
は、医療コンセプトの優先用語です。vocabularyCodes
は、サポートされている医療語彙での医療コンセプトの表現です。
relationships
は、エンティティへの言及間の有向関係を定義します。この例では、関係のタイトルは「Insulin regimen human」で、関係のオブジェクトは「5 units」です。confidence
は、関係におけるモデルの信頼度を 0〜1 の数値で示します。
サポートされている医療用語
Healthcare Natural Language API では、次の医療用語がサポートされます。
- Foundational Model of Anatomy
- Gene Ontology
- HUGO Gene Nomenclature Committee
- Human Phenotype Ontology
- ICD-9-CM
- MeSH
- Metathesaurus Names
- NCBI Taxonomy
- NCI Thesaurus
- National Drug File
- Online Mendelian Inheritance in Man
- RxNorm
- LOINC
- ICD-10 Procedure Coding System
サポートされている医療ナレッジ カテゴリ
Healthcare Natural Language API では、次の医療ナレッジ カテゴリがサポートされます。
医療ナレッジ カテゴリ | 説明 |
---|---|
PROBLEM |
所見や病気などの症状 |
SEVERITY |
症状の重症度 |
PROCEDURE |
診断または治療処置 |
PROC_METHOD |
医療処置を行う方法 |
PROCEDURE_RESULT |
医療処置の結果 |
MEDICINE |
病気の治療や予防のための薬物やその他の製剤 |
MED_DOSE |
投薬量 |
MED_DURATION |
投薬期間 |
MED_FORM |
特定の医薬品の物質的特性 |
MED_FREQUENCY |
医薬品の摂取頻度 |
MED_ROUTE |
医薬品を投与する身体の位置 |
MED_STATUS |
投薬中の医薬品の場合、ステータスは「継続」、「開始」、「再開」、「停止」、「切り替え」、「増量」、「減量」などの修飾語とすることができます。 |
MED_STRENGTH |
1 回分の投薬量に含まれる有効成分の量 |
MED_TOTALDOSE |
一度に投与する医薬品の量 |
MED_UNIT |
医薬品の有効成分の測定単位 |
ANATOMICAL_STRUCTURE |
人体の複雑な部位 |
LABORATORY_DATA |
身体サンプルをテストした結果 |
LAB_RESULT |
検査データの定性的説明(増加、減少、正、負など) |
LAB_VALUE |
検査データのインスタンスの値 |
LAB_UNIT |
検査値の測定単位 |
BODY_MEASUREMENT |
人間の体の標準的な測定値(バイタルサインなど) |
BM_RESULT |
身体測定の結果 |
BM_VALUE |
身体測定の値 |
BM_UNIT |
身体測定の単位 |
MEDICAL_DEVICE |
物理または仮想の計器 |
SUBSTANCE_ABUSE |
向精神薬の乱用 |
BODY_FUNCTION |
人の身体の機能 |
BF_RESULT |
身体機能の結果 |
サポートされている機能的特徴のカテゴリ
Healthcare Natural Language API は、コンテキストからのエンティティへの言及の機能(属性)を推測できます。たとえば、「Kusuma の母親は糖尿病である」というステートメントには、「糖尿病」の条件に subject
FAMILY_MEMBER
の機能があります。
時間的関係
temporalAssessment
フィールドで返される時間的関係によって、このエンティティへの言及がサブジェクトと時間的にどのように関係しているのかが説明されます。
Healthcare Natural Language API は、次の時間的関係をサポートしています。
CURRENT
CLINICAL_HISTORY
FAMILY_HISTORY
UPCOMING
ALLERGY
件名
subject
フィールドに返されるサブジェクトは、エンティティへの言及が関係している個人について記述します。
Healthcare Natural Language API は、次のサブジェクトをサポートしています。
PATIENT
FAMILY_MEMBER
OTHER
確実性評価
certaintyAssessment
フィールドに返される確実定評価は、元のメモの記載者の信頼度を記述します。たとえば、元のメモに「患者はのどの痛みの症状がある」と記されている場合、確実性評価では、患者にのどの痛みの症状があった可能性についての元のメモの記載者の信頼度を示す LIKELY
値が返されます。元のメモに「患者にはのどの痛みの症状はない」と記されている場合、確実性評価では、患者にのどの痛みの症状があった可能性についての元のメモの記載者の信頼度を示す NOT_LIKELY
値が返されます。
確実性評価は、次のいずれかの値です。
LIKELY
SOMEWHAT_LIKELY
UNCERTAIN
SOMEWHAT_UNLIKELY
UNLIKELY
CONDITIONAL
エンティティへの言及でサポートされている関係
Healthcare Natural Language API は、周辺の医療テキストに基づいて、エンティティへの言及の間の関係を推定できます。レスポンスでは、関係のサブジェクトが subjectId
で識別され、関係のオブジェクトが objectId
で識別されます。
Healthcare Natural Language API は、エンティティへの言及の間の次の関係をサポートしています。
件名 | Object から継承されたメソッド |
---|---|
ANATOMICAL_STRUCTURE |
MEDICAL_DEVICE |
BODY_FUNCTION |
BF_RESULT |
BODY_MEASUREMENT |
BM_RESULT |
BODY_MEASUREMENT |
BM_UNIT |
BODY_MEASUREMENT |
BM_VALUE |
LABORATORY_DATA |
LAB_RESULT |
LABORATORY_DATA |
LAB_UNIT |
LABORATORY_DATA |
LAB_VALUE |
MEDICINE |
MED_DOSE |
MEDICINE |
MED_DURATION |
MEDICINE |
MED_FORM |
MEDICINE |
MED_FREQUENCY |
MEDICINE |
MED_ROUTE |
MEDICINE |
MED_STATUS |
MEDICINE |
MED_STRENGTH |
MEDICINE |
MED_TOTALDOSE |
MEDICINE |
MED_UNIT |
PROBLEM |
ANATOMICAL_STRUCTURE |
PROBLEM |
MEDICINE |
PROBLEM |
PROCEDURE |
PROBLEM |
SEVERITY |
PROCEDURE |
ANATOMICAL_STRUCTURE |
PROCEDURE |
PROC_METHOD |
PROCEDURE |
PROCEDURE_RESULT |
SUBSTANCE_ABUSE |
SEVERITY |