ujiuji1259 / disease_normalizer

Disease normalizer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

日本語病名正規化

日本語の病名を標準病名マスターの標準病名に紐づけるライブラリです。
万病辞書に名寄せすることで紐付けします。
略語辞書による略語の展開にも対応しています。

インストール

pip install git+https://github.com/ujiuji1259/disease_normalizer.git

手法

  • Exact Match
    万病辞書との完全一致で標準病名に紐付けます。
  • Fuzzy Match
    simstringによる曖昧一致を行います。文字単位の2-gramによるコサイン類似度により類似度を計算します。
  • DNorm
    古典的な病名正規化手法であるDNormを用いて病名を名寄せします。Tf-idfベースのランキング学習手法です。

使用例

from japanese_disease_normalizer.normalizer import Normalizer

normalizer = Normalizer("abbr", "fuzzy")

input_disease = "AML"
normalized_term = normalizer.normalize(input_disease)

Spacy extension

spacyのパイプラインに加えることで,固有表現(ここでは病名)に正規化結果のDictEntryを付与することができます.
日本語モデル(spacy.lang.ja.Japanese)を元にした病名認識パイプラインを公開していますので,そちらもご利用ください.

使用例

import spacy
from japanese_disease_normalizer.spacy_extension import ManbyoNormalizer

nlp = spacy.load("/path/to/model_for_disease_recognition")
nlp.add_pipe("manbyo_normalizer")

text = "急性骨髄性白血病により緊急入院"
doc = nlp(text)
for ent in doc.ents:
  print(ent._.norm)

結果

DictEntry(name="急性骨髄性白血病", icd="C920", norm="急性骨髄性白血病", level="S")

略語展開例

>>> normalizer.normalize("高K血症")
DictEntry(name='高カリウム血症', icd='E875', norm='高カリウム血症', level='S')
>>> normalizer.normalize("AML")
DictEntry(name='急性骨髄性白血病特', icd='C920', norm='急性骨髄性白血病', level='C')

About

Disease normalizer


Languages

Language:Python 100.0%