GPT で専門用語のよみがなを生成する
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)」のように強制表記することができるので、そこも便利かなと思っています。
Discussion