つい言い間違えてしまうような薬剤名を(半)自動で探しだす
2020-12-14

drug-name_header

この記事はUbie Advent Calendar 2020の15日目の記事です。

昨日の記事はshigedoさんのこれからのDXを社会実装するスタートアップに必要な「パブリック・アフェアーズ」とは|yukishigedo|noteでした。


言い間違えを探す

みなさんはこのツイートを見たことがありますか?

患者さんがお薬の名前を言い間違えてしまうという薬剤師あるあるな話ですが、間違え方が独特で面白いですね。特に薬剤名は普段馴染みがなく横文字で覚えづらいので、記憶の中にある近い名称に引っ張られてしまうのかもしれません。このツイートのリプライ欄でも他の人が別の事例を紹介してくださっていますが、色々な言い間違えのパターンがあるみたいですね。

さて、今回はこのような言い間違えをしそうな単語とその薬剤名を自動で抽出してみようと思います。自然言語処理の力を使ってなかば総当り的に探していけば、まだ広く知られていない言い間違えが見つかるかも……?

言い間違えの問題

薬剤の言い間違いについてはこうした笑い話になる一方で、別の薬剤と間違えてしまうことによる医療事故にも繋がりかねない問題でもあります。薬局での薬剤の取り違えの約3割は名称類似によって起こることが報告されているほか、類似名称による医療事故が発生したことから薬剤名が変更される事例もあります。こうした医薬品の言い間違えや認識違いについては、医療事故の原因分析や予防の面で研究されているようです。


方法

今回は、以下の方法で薬剤名とその言い間違い候補を抽出しました。

  1. 候補となる薬剤名およびWikipediaの記事タイトルの一覧を取得する
  2. 編集距離などのフィルタリングを元に候補を絞り込む
  3. 最後は目検で確認する

1. 候補の名称の抽出

対象とする薬剤名の一覧を取得します。くすりのリストにて公開されているPMDAから取得した「医療用医薬品リスト」の中から、xx錠といったカタカナから始まり錠で終わる薬剤名を取得します。今回は一つの単語のまとまりとしての言い間違いを探したいため、薬剤名にありがちなxx酸yy錠といった漢字が含まれている名称は除外しました。その結果、887件の薬剤の名称が抽出できました。

次に、Wikipediaから言い間違え候補の一覧を取得します。Wikipedia:データベースダウンロードから日本語の全タイトルの一覧が含まれるダンプされたデータをダウンロードします。その結果、約200万件の言い間違え候補が抽出できました。

2. 候補を絞り込む

ここから薬剤名と言い間違え候補の中で、お互いに似通った文字列を探し出します。ナイーブに実行すると(1000 × 200万)ペアの組に対して探索する必要があり計算コストが大きいため、薬剤名ごとに編集距離を用いて候補を絞り込み、その絞り込んだ候補に対して類似判定を行います。

2-1. 編集距離

まず最初の絞り込みですが、任意の薬剤名に対して編集距離が2以下の言い間違え候補を列挙しました。編集距離とは、ある文字列から別の文字列に変形するときに必要となる追加/削除/置換のステップの最小回数のことです。例えば「バルトレックス」と「バトルレックス」の編集距離は、2文字目のルを削除する2文字目のトの後ろルを追加するの合計2ステップとなり、編集距離は2です。

編集距離の計算にはSymSpellを利用しました。事前に検索インデックスを計算することで薬剤ごとに探索する時の計算時間を抑えています。

2-2. 間違えやすさを測る

ここから、より言い間違えやすい候補に絞り込んでいきます。編集距離による絞り込みでは文字列として近い候補は列挙できますが、実際に見てみると間違えないような事例が多数含まれます。そういった事例を弾くために文字列同士の言い間違えやすさを評価し、より現実的な候補を見つけます。今回は以下のサイトでまとめられている間違いパターンを利用しました。

第10回:「言語学からみた間違いやすい薬剤名」 - 医療安全推進者ネットワーク

利用したパターンは以下の2つです。

  • 2字目と3字目は「転倒」がおきやすい
  • 1字目と2字目が同じ、末尾が同じ、長さが同じ位

1つ目のパターンはバルトレックス/バトルレックスの事例、2つ目のパターンはエビリファイ/エビフリャイの事例そのものですね。ちなみに2つ目のパターンは、人間が文章を読む際に単語の先頭と末尾さえあっていれば自然と読めてしまう タイポグリセミアとしても有名です。

ここではその他にも、単語を構成する文字の種類に大幅な乖離がないなど、いくつかのヒューリスティックな絞り込みを含めています。

3. 目視で確認

こうして抽出した候補ですが、今回の言い間違い候補の辞書として利用したのはWikipediaですので、全く知らない単語も多く含まれています。また、間違えやすいパターンに合致しても人間が見たときに納得度合いの低いペアも含まれるため、最後は力技で人間(私)が目視で確認し、知ってそうな単語を見つけるとともに、その言い間違えやすさを主観で判断しました。

このあたりは、WikipediaのPV数などを使って単語の認知度合い(popularity)を計算したりすればよかったかもしれません。


結果

それでは結果をいくつか見ていきましょう。ここではあくまで言い間違えやすさと候補単語の認知度等を加味して私の独断で選別しています。

薬剤名 言い間違え候補
スルピリド スピルリナ
カルデミン カルダモン
ランドセン ランドセル
ギャバロン ギャルソン
モンテルカスト モンテクリスト
アーチスト アーティスト
ワイパックス ベイマックス
プラミール プラレール
ボンゾール ボンジュール
トランサミン トランポリン

薬剤名に関しては全く知識がないのでピンとくるものが無いのですが、わりと間違いやすい事例が抽出できたのではないでしょうか。Twitterで2つの単語を検索すると、ランドセン/ランドセルやモンテルカスト/モンテクリスト、ワイパックス/ベイマックスあたりは、似ていると指摘するtweetや言い間違えた経験談が出てきます。

ちなみに冒頭に出したTiwtterの事例で言うと、バトルレックスはWikipediaの単独での記事が存在しなかったため検出できませんでしたが、バトルアックスは検出できていました。

まとめ

今回は言い間違えてしまう薬剤名とその名称を、Wikipediaの記事一覧をもとに半自動で抽出してみました。Advent Calendarの話題作りのために思いつきで始めたタスクでしたが、いざやってみると候補を絞り込む作業がなかなかに難しく、人間の認識能力の高さや間違い傾向の複雑さを実感しました。発音するときの語感やアクセントであったり、文字の字形などの類似度を組み込めると、より間違えやすさが定量的に測れそうです。

また、今回は1つの単語を言い間違い候補として限定しましたが、複数単語での言い間違いもあるようです。例えば、

  • レスタミン → レタス民
  • アトモキセチン → 後乗せチキン

など、こうした2つ以上の単語が組み合わさった検出ができると、より人間の言語的な認識を上手くトレースした形での自動検知ができると思われます。

参考

このエントリーをはてなブックマークに追加