😽

GPT で専門用語のよみがなを生成する

2023/04/03に公開

GPT を使って専門用語 (医学用語) のよみがなを生成して、社内活用した小ネタです。活用方法は色々考えられそうです。

背景

Ubie では日々膨大な医学用語を目にしますが、これがなかなか厄介です。
まず単純に漢字が多いです。さらに医学界に独特な漢字の書き方・読み方をするものがあったり、中には作られた漢字もあるようです。自分は漢字が6個くらい並んでいるだけでウッとなるのでこれはかなり辛いです。

この医学用語ムズすぎ問題は、Ubie メンバーの生産性を3%くらい毀損しているのではないでしょうか (勘)。


「繊維」と「線維」とか、むずいのです。

Ubie は数万件の疾患名のマスタを運用しているのですが、現状よみがながありません。何らかの方法でよみがなを作ることができれば、変換辞書を作ることができます。変換辞書さえ各メンバーの PC に標準装備されればこの専門用語ムズすぎ問題は解決するのでは…!?

GPT でいける気がする

漢字の読み方を教えてもらうタスク、一般的なものならいける気がしますね。今までの NLP で地味に難しかった領域と認識しています。

さっそく挙動をみていきましょう。サンプルとして社内の疾患データをランダムに選んで、OpenAI API に投げてみました。ここではあまりプロンプトをチューニングしていません。
model は gpt-3.5-turbo と gpt-4 の比較です。

disease_name gpt-3.5-turbo gpt-4 same_result
アレルギー性胃腸炎 あれるぎーせいいちょうえん あれるぎーせいいちょうえん True
サルコイドーシス さるこいどーしょう さるこいどーしす False
スウィート症候群 すうぃーとしょうこうぐん すうぃーとしょうこうぐん True
リンパ浮腫 りんぱふしゅ りんぱふしゅ True
下垂体腺腫 しもすいたいせんしゅ しょうすいたいせんしゅ False
卵巣のう腫 らんそうのうしゅ らんそうのうしゅ True
多嚢胞性卵巣症候群 たのうほうせいらんそうしょうこうぐん たのうせいらんそうしょうこうぐん False
急性汎発性発疹性膿疱症 きゅうせいはんぱつせいはっしんせいのうほうしょう きゅうせいはんぱつせいほっしんせいのうほうしょう False
急性胆管炎 きゅうせいたんかんえん きゅうせいたんかんえん True
悪性リンパ腫 あくせいりんぱしゅ あくせいりんぱしゅ True
慢性骨髄性白血病 まんせいこつずいせいはっけつびょう まんせいこつずいせいはっけつびょう True
有機酸代謝異常症 ゆうきさんだいしょういせきしょう ゆうきさんだいかいびょういじょうしょう False
横紋筋融解症 よこもじきんゆうかいしょう よこもんきんゆうかいしょう False
毛じらみ けじらみ けじらみ True
気管支喘息 きかんしせんそく きかんしぜんそく False
淋病 りんびょう りんびょう True
神経因性骨盤臓器症候群 しんけいいんせいこつばんぞうきしょうこうぐん しんけいいんせいこつばんぞうきしょうこうぐん True
網膜静脈分枝閉塞症 あみまくじょうみゃくぶんしへいしょう あみもうじょうみゃくぶんしへいそくしょう False
脳震盪 のうしんとう のうしんとう True
食物蛋白誘発胃腸炎 しょくもつたんぱくゆうはついちょうえん しょくもつたんぱくゆうどういちょうえん False

正答率はどちらのモデルも6割くらいでしょうか。gpt-4 は普段使っている感覚だと圧倒的に文脈を読み取る力が強いですが、単語の変換の勝負ではあまり差はなさそうです。

gpt-3.5 の「下垂体」->「しもすいたい」、「網膜」->「あみまく」あたりが小学生のような可愛い間違え方なのに対して、gpt-4 の「下垂体」->「しょうすいたい」、「網膜」->「あみもう」は、それどこで習ったの…?と言いたくなる間違え方で面白いです。gpt-4 のほうが何らかの推測をしているような挙動です。
今回のサンプル外で「緑色爪(りょくしょくそう)」という用語があるのですが、gpt-3.5 は「みどりいろつめ」と答えたのに対して gpt-4 は「りょくしょくそう」と正解していて、医学用語であるというコンテキストをうまく扱えている印象を受けました。

いずれにせよ、GPT 単体ではやや非力と言えそうです。(文脈を扱わないこのようなタスクで最低限ワークするだけで十分すごいのですが…)
プロンプトチューニングの余地はあるものの、ここは深追いせずに次に進みます。

既存のアセットを借りる

ここで専門知識の既存アセットをお借りすることにしてみます。

DMiME という医学領域に特化した変換辞書があります。OSS で、比較的活発に更新がされていて、語句も4.2万件と豊富です。これが無料というのはすごいですね。メンテナの方、ありがとうございます。

この辞書を GPT の事前知識として活用できれば良さそうですが、プロンプトに入れるには少しボリュームが大きすぎます。そこで、前処理として活用してみました。DMiME の語句を用いて疾患名の一部もしくは全体をよみがなに置換します。

disease_name dict_replaced
アレルギー性胃腸炎 あれるぎーせいいちょうえん
サルコイドーシス さるこいどーしす
スウィート症候群 スウィートしょうこうぐん
リンパ浮腫 りんぱふしゅ
下垂体腺腫 かすいたいせんしゅ
卵巣のう腫 らんそうのう腫
多嚢胞性卵巣症候群 たのうほうせいらんそうしょうこうぐん
急性汎発性発疹性膿疱症 きゅうせいはんぱつせいほっしんせいのうほうしょう
急性胆管炎 きゅうせいたんかんえん
悪性リンパ腫 あくせいりんぱしゅ
慢性骨髄性白血病 まんせいこつずいせいはっけつびょう
有機酸代謝異常症 ゆうき酸代謝いじょうしょう
横紋筋融解症 おうもんきんゆうかいしょう
毛じらみ けじらみ
気管支喘息 きかんしぜんそく
淋病 りんびょう
神経因性骨盤臓器症候群 しんけいいんせいこつばん臓器しょうこうぐん
網膜静脈分枝閉塞症 もうまくじょうみゃくぶんしへいそくしょう
脳震盪 脳震盪
食物蛋白誘発胃腸炎 しょくもつたんぱく誘発いちょうえん

餅は餅屋ですね…!9割方の漢字は消えました。
専門用語の多くはすでに置き換わっていることが期待できるので、あとは「らんそうのう腫」、「しんけいいんせいこつばん臓器しょうこうぐん」のように部分的に残った漢字を GPT で変換すれば良さそうです。これをインプットとして、再度やってみましょう。

disease_name dict_replaced gpt-3.5-turbo gpt-4
卵巣のう腫 らんそうのう腫 らんそうのうしゅ らんそうのうしゅ
有機酸代謝異常症 ゆうき酸代謝いじょうしょう ゆうきさんだいしゃいじょうしょう ゆうきさんだいしゃいじょうしょう
神経因性骨盤臓器症候群 しんけいいんせいこつばん臓器しょうこうぐん しんけいいんせいこつばんぞうきしょうこうぐん しんけいいんせいこつばんぞうきしょうこうぐん
脳震盪 脳震盪 のうしんとう のうしんとう
食物蛋白誘発胃腸炎 しょくもつたんぱく誘発いちょうえん しょくもつたんぱくゆうはついちょうえん しょくもつたんぱくゆうはついちょうえん

「代謝」を「だいしゃ」と読んでいますが、概ねいい感じそうです…!
あとは、カタカナを変換したりアルファベットの扱いを工夫するだけです。全てのデータのよみがなを得ることができました。

DMiME の語句を活用する際に、疾患名全体がヒットしなくても部分的に置換することがポイントです。GPT に渡す前に知識を活用することになります。
また、他の方法としては、疾患ごとに関連しそうな語句をピックアップしてプロンプトに渡すことで文字数を圧縮する方法も考えられるかと思います。

結論

今回は専門用語のよみがなを生成するタスクでした。表記が揺れたり一般的でない用語の変換は既存アセットの力を借りつつ、単純な置換でカバーしきれないラストワンマイル的な部分を GPT でよしなに解いてもらうという方法は、医学用語に限らず有効そうです。

この辞書は Google IME と Mac IM 用の変換辞書として社内で公開して、活用していこうとしています。今回は踏み込まなかったですが、より精度を上げることで、プロダクト利用のためのデータにもできそうです。

余談として、社内のチャットコミュニケーション上では疾患名だけでなく id をセットで伝えて欲しいと思うことがあります。今回作ったデータを変換辞書として活用できれば、「脳震盪」を「脳震盪(id:12345)」のように強制表記することができるので、そこも便利かなと思っています。

Ubie テックブログ

Discussion