この記事はUbie Advent Calendar 2020の15日目の記事です。
昨日の記事はshigedoさんのこれからのDXを社会実装するスタートアップに必要な「パブリック・アフェアーズ」とは|yukishigedo|noteでした。
言い間違えを探す
みなさんはこのツイートを見たことがありますか?
薬剤師の日常#今年もあと少しなので褒めてほしい pic.twitter.com/LaSfRnM3NY
— 鮫島うさぎ (@usagi_samejima) December 27, 2019
患者さんがお薬の名前を言い間違えてしまうという薬剤師あるあるな話ですが、間違え方が独特で面白いですね。特に薬剤名は普段馴染みがなく横文字で覚えづらいので、記憶の中にある近い名称に引っ張られてしまうのかもしれません。このツイートのリプライ欄でも他の人が別の事例を紹介してくださっていますが、色々な言い間違えのパターンがあるみたいですね。
さて、今回はこのような言い間違えをしそうな単語とその薬剤名を自動で抽出してみようと思います。自然言語処理の力を使ってなかば総当り的に探していけば、まだ広く知られていない言い間違えが見つかるかも……?
言い間違えの問題
薬剤の言い間違いについてはこうした笑い話になる一方で、別の薬剤と間違えてしまうことによる医療事故にも繋がりかねない問題でもあります。薬局での薬剤の取り違えの約3割は名称類似によって起こることが報告されているほか、類似名称による医療事故が発生したことから薬剤名が変更される事例もあります。こうした医薬品の言い間違えや認識違いについては、医療事故の原因分析や予防の面で研究されているようです。
- 薬局での「薬剤取り違え」や「数量間違い」が5399件―日本医療機能評価機構2014年度調査 | GemMed | データが拓く新時代医療
- 「サクシン」が「スキサメトニウム注」に改名―薬の取り違え事故をどうなくすか:日経メディカル
- 製薬企業からの医薬品の安全使用(取り違え等)に関するお知らせ | 独立行政法人 医薬品医療機器総合機構
- 薬名類似度検索サービス
方法
今回は、以下の方法で薬剤名とその言い間違い候補を抽出しました。
- 候補となる薬剤名およびWikipediaの記事タイトルの一覧を取得する
- 編集距離などのフィルタリングを元に候補を絞り込む
- 最後は目検で確認する
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つ以上の単語が組み合わさった検出ができると、より人間の言語的な認識を上手くトレースした形での自動検知ができると思われます。
参考
- 薬名類似度検索サービス 薬名類似度とは
- 薬剤と薬剤の類似度について、編集距離以外のいくつかの手法を提案しています