見出し画像

「般若心経」をT5(Text-to-Text Transfer Transformer)を使って現代語訳してみた!

ICTRADの山野です。

この記事は、
T5という自然言語処理の手法を用いて、
漢文形式の般若心経を現代語訳にチャレンジした、
いわゆる「やってみた」系の記事です。

「漢文」って、書き下しのルールや意味が理解できれば、普段使う日本語の深さも教えてくれるものですが、ちょっととっつきづらいイメージがありますよね。なので技術を使って簡単に現代語訳することができたら、身近に感じられるんじゃないかと思い、まずは「般若心経」でチャレンジしてみました。

あわせて、「朝日新聞ってなんだか堅そう」、「新聞社のエンジニアって普段何してるかわからない」っていう方は、ぜひこの記事を見て「ICTRAD」の研究開発チームが何をやっているかちょっとでもわかってもらえればなと思います!

※すぐに現代語訳の結果が見たいという方は、下までスクロールしてください!

1. まずは自己紹介

まずは自分の紹介から。
2018年に入社しました。先日の倉井さんの記事でも紹介した、半年間の研修期間を経てICTRADに配属されました。

それ以降、ICTRADでいくつかのサービスを開発してきましたので一部紹介させていただきます。

・記者への記事レコメンドサービス開発
・クイズサービス「Qrich」のための朝日の膨大なテキストデータを活用した単語ベクトル構築
・内製OCR開発
・音声認識サービス開発
etc…

まとめると、自然言語処理や画像処理、音声処理サービスのバックエンド部分がメインですが、フロント部分も(必要になれば)開発するといった状況です。

個人的に思い出に残っているのは、内製OCR開発です。
これは紙面PDFデータから構造的なテキストデータに変換するプロジェクトで、1年目の3月から2年目の夏ぐらいまで行っていました。論文読んだり実装したりし、これでいけるだろ!って思ったらなぜか精度が下がったりなど、一喜一憂しながら開発していました。

最終的には精度が出ず頓挫してしまいましたが、そこで培った画像処理や自然言語処理の技術は今でも重宝しています。

社内には140年分(!)の紙面データがあるので、内製OCR開発に興味がある方がいれば、是非一緒にプロジェクトを立ち上げて最強のOCRエンジンを開発していきましょう!

ということで、、長くなりましたが本題です。

やってみよう!

2. T5(Text-to-Text Transfer Transformer)とは

T5をざっくり説明すると、「入力と出力がいずれもテキストになっている(Text-to-Text)」ことが特徴の、新しい自然言語処理モデルです。翻訳、要約などの分野で活躍が期待されています。

詳しく知りたいという方は、すでに多くの方が解説してくださっていますので、そちらをご参考にしていただければと思います。

(1) Googleが発表した自然言語処理モデルText-to-Text Transfer Transformer(T5)とは?:ACCEL UNIVERSE CORPORATION 技術ブログ

(2) T5:Text-To-Text Transfer Transformerと転移学習の探索(1/3):WebBigData

(3)  T5(Text-to-Text Transfer Transformer)について少し説明してみる:@shotasakamotoさんのQiita

3. 「般若心経」を現代語訳するための学習データ

学習データは以下のページから、原典・現代語訳を引用させていただきました。本来であれば書物の成立時期や背景なども加味すべきだと思いますが、アクセスしやすかったこちらのデータを使わさせていただいております。

古事記のデータ
雑阿含経のデータ

古事記のデータは、1.7 ヤマタノオロチ退治のスサノオの系譜・続まで
仏典に関するデータは、上記URLの2ページから4ページまで(4ページから遡って学習データを作成したのですが、途中で心が折れました...)

古事記のデータと雑阿含経のデータを併せて、
漢文・現代語訳のデータを900件ほど作成しました。
そのうちの7割をtrainデータ(学習用データ)、3割をvalidationデータ(検証用データ)としました。

4.結果

さて、お待ちかねの般若心経の現代語訳の結果は以下の通りです。
全国曹洞宗青年会様がわかりやすい現代語訳を提供してくださっているので、照らし合わせてご覧いただければと思います。
左から順に、原典 -> T5モデルによる現代語訳の結果を下に示します。

原典 -> T5モデル
観自在菩薩。行深般若波羅蜜多時 -> 観じたの菩薩たち。深々とした蜜を飲んだ
照見五蘊皆空 -> 五蘊はみな空やにいた 
度一切苦厄 -> 悟った人は苦しみである
舎利子 -> 舎利子
色不異空 -> 色を正しく思考
空不異色 -> 空や非ものの姿は
色即是空 -> 色を正しく思考
空即是色 -> 空や非ものの姿である
受想行識 -> 受想行識に成った
亦復如是 -> これもまた、二度と死ぬことはない
舎利子 -> 舎利子
是諸法空相 -> これが正しく思考しなさい
不生不滅 -> 生死を断じた
不垢不浄 -> 垢を取る
不増不減 -> 減らないこと
是故空中 -> 空中に留まった
無色無受想行識 -> 色を無為の行識に成った
無眼耳鼻舌身意 -> 鼻や口やにおいを知る
無色声香味触法 -> 色をすすいだことによって生まれた神である
無眼界乃至無意識界 -> 無眼の界を無常であると見てありのままに知れば
無無明亦無無明尽 -> 無光がないならば、無光がない
乃至無老死 -> 老人と老死がある
亦無老死尽 -> 老人と老死を断じた
無苦集滅道 -> 無苦に苦しむといえど
無智亦無得 -> 無智は理解しないし目は開いていない
以無所得故 -> 無為のままに治めている中
菩提薩埵 -> 菩薩たち
依般若波羅蜜多故 -> その姿は夏の蠅のように充満し
心罣礙 -> 心は理解しないし目は開いていない
無罣礙故 -> 踏み鳴らし
無有恐怖 -> 踏み殺すことがないようにせよ
遠離一切顛倒夢想 -> 未来の構想されたものを欲せず
究竟涅槃 -> その涅槃を生んだ
三世諸仏 -> 三世は仏の神
依般若波羅蜜多故 -> その姿は夏の蠅のように充満し
得阿耨多羅三藐三菩提 -> ブッダの菩薩たち
故知般若波羅蜜多 -> その姿は夏の蠅のように充満し。
是大神呪 -> 大神は大神の呪いにまみれて爛れています
是大明呪 -> これを大明の呪いに教えていく
是無上呪 -> これが正しく思考しないこと
是無等等呪 -> これが心配することはありません
能除一切苦 -> 苦を断つことができる
真実不虚 -> 真実は虚いていない
故説般若波羅蜜多呪 -> そこで、波羅蜜多神に考えさせて
即説呪日 -> すぐにブッダの日の神
羯諦羯諦 -> 羯つ目のただしく意識しないこと 
波羅羯諦 -> 波羅陀のただしく意識しないこと
波羅僧羯諦 -> 波羅陀のただしく受けることである
菩提薩婆訶 -> 菩薩たち訶比売
般若心経般 -> 若心はなくなる

意味を捉えてそうな結果と、全く意味のわからない結果が混在しています。

例えば以下のような結果をご覧ください。

般若心経原典 -> T5モデル
故知般若波羅蜜多 -> その姿は夏の蠅のように充満し。

「原典の字面だけではよくわからないけど、夏の蠅...?どういう意味?」となりますね。

これには、学習データに含まれている古事記が影響を及ぼしている可能性があります。900件の学習データのうち、「蠅」が2回出現しています。(以下、古事記・現代語訳と注釈より引用)

古事記原典 -> 古事記現代語訳
以惡神之音、如狹蠅皆滿 -> そして、悪神の声は夏の蠅のように充満し
於是萬神之聲者狹蠅那須滿 -> そして大勢の神々の騒ぐ声は夏の蠅のように充満し

上で示した般若心経原典と古事記原典には、一致する漢字は1文字もないのいにも関わらず、T5モデルの現代語訳に「蠅」が出てきてしまっています。

このような結果になった原因の一つとして学習データの偏りが考えられるので、学習データと般若心経を調査してみます。

5. 学習・般若心経データの調査

まず、ユニークな漢字は学習データは842字、般若心経は117字でした。

その中で、般若心経にあって学習データにない漢字は、計33文字でした。
33文字の内訳は以下の通りです。

['僧', '罣', '涅', '利', '藐', '浄', '減', '提', '埵', '耨', '蘊', '蜜', '増', '尽',
 '厄', '眼', '観', '界', '究', '触', '羯','舎', '声', '般', '真', '実', '婆', '呪',
 '仏', '経', '槃', '礙', '夢']

このことから、般若心経の現代語訳が以下のような結果になったのは、「般」や「蜜」が学習データになかったことが考えられます。

故知般若波羅蜜多 -> その姿は夏の蠅のように充満し。

一方で、般若心経と学習データが一致する漢字とそのカウントの上位10字は以下の通りでした。

('不', 111), ('如', 58), ('是', 57), ('所', 57), ('生', 50), 
('神', 43), ('心', 39), ('時', 35), ('故', 34), ('無', 34)

上記の33文字に対して、上位10字の中で漢字単体で意味を持ちそうな漢字は「生」や「神」・「心」ぐらいで他は1文字で意味を持ちそうにありません。

これらのことから、般若心経を現代語訳するための学習データとしては、今回のデータは適切ではなかったことが考えられます。もしくは、データ量を増やしたらもっと良い結果が出たかもしれません。

6.ポジネガ判定

続いて、現代語訳では意味を捉えていそうな箇所とそうじゃない箇所が混在していたため、文章の流れとしての傾向を調べてみました。般若心経を50フレーズに分割し、そのフレーズごとでポジネガ判定を行いました。

ポジネガ判定とは、その名の通り、文章が「前向き(ポジティブ)」な意味合いを持つか、「後ろ向き(ネガティブ)」な意味合いを持つか、自然言語処理技術で判定する方法です。
(そもそも原典をポジネガ判定することに違和感を多少持ちましたが、原典と現代語訳が示す意味が似通っているのか調べるために、試しにやってみました。)

ポジネガ判定に使ったのは、「oseti」というOSSです。
青線が原典、赤線がT5モデルです。

画像2

これらの相関を取った結果は以下の通りになります。
T5モデルと原典:0.321
正の相関がありました。強い相関とは言えませんが、少なくとも反対の傾向にないことがわかり安心しました。

T5モデルと原典で数値が一致したのは以下の通りです。

ポジネガ判定で一致したフレーズ -> 値[-1:ネガティブ,1:ポジティブ]
度一切苦厄 -> -1
不垢不浄 -> -1
無苦集滅道 -> -1
是無等等呪 -> -1
真実不虚 -> 1

上記の結果からどの漢字がポジネガに支配的なのか、1文字ごとに調査してみました。

[度一切苦厄] -> [度:0, 一:0 ,切:0, 苦:-1, 厄:-1] 
[不垢不浄] - > [不:0, 垢:-1, 不:0, 浄: 0]
[無苦集滅道] - > [無:0 ,苦: -1, 集:0, 滅:0 ,道:0]
[是無等等呪] -> [是:0, 無:0, 等:0, 等:0, 呪: -1]
[真実不虚] -> [真:1, 実:1, 不:0, 虚:0]

「苦」や「厄」、「垢」、「呪」がネガティブ、「真」・「実」がポジティブ判定されていることがわかりました。
現代語訳にこれらの文字が入っているので、ポジネガ判定が一致したことが考えられます。

今後の課題としては、「不垢」や「無苦」など原典では熟語として用いられており、それを加味したポジネガ判定を行う必要がありそうですね。

7. 終わりに

結果的には現代語訳は良い結果が出なかったように思います。
現代語訳しようと思ったら現代誤訳になってしまいました。

今回は「やってみた」として般若心経をテーマにしてみましたが、このT5の技術を使った今後の展望としては、こんなことができるんじゃないかなと感じています。

・漢文翻訳
・現在開発している音声認識サービスの自動修正
・日本語記事自動英文生成
・チャットボットサービス

などなどデータの量次第ではありますが、汎用性の高い技術なので色々妄想膨らみますね〜

ということで以上、【「般若心経」をT5(Text-to-Text Transfer Transformer)を使って現代語訳してみた!】でした。

最後まで読んでくださったみなさま、ありがとうございます。

T5を使った記事は他のメンバーがまた書く予定ですので、
今後もお楽しみに!

(ICTRAD・山野陽祐)