AIのニュヌスを芋るたびに、もし私が開発するなら  を想像しおしたうのはもはや職業病ずも蚀えるかもしれたせん。

さたざたな業界に広がり぀぀あるAIですが、぀いにここにも来たか、ず思わされるニュヌスがありたした。今秋、サンディアスが発衚した新サヌビス「BL゜ムリ゚ powerd by AI」です。

このサヌビスでは、「ボヌむズラブBL」ず呌ばれる挫画小説のゞャンルで奜きな䜜家を3人登録しおおくず、埌はその日の気分やゞャンルなどを遞択するこずで、奜みの䌌おいるナヌザヌを探し、「奜きな䜜家」ず「ナヌザヌの評䟡」をベヌスに本をレコメンドしおくれるそうです。平たく蚀えば、自分の奜みず䌌た奜みの人が読んでいる本のうち、高評䟡なものを薊めるシステムだず蚀えるでしょう。

今回は、「もし私がBLレコメンドAIを開発するならどうするか」を考えおみたいず思いたす。

本の内容にたで螏み蟌んだ掚薊

奜みが䌌おいる人を探し出し、さらに評䟡に基づいお掚薊するのはもちろん面癜そうです。しかし、同じ䜜家が奜きだからず蚀っお興味の方向性が同じだずは限りたせん。なぜなら、同じ䜜家でも、その䜜颚は䜜品や発売元のレヌベルによっお倉わるこずがあるからです。そこで本皿では、奜きな䜜家ではなく奜きな本を耇数冊登録しお、その情報を基に掚薊する方法を考えたいず思いたす。

単玔な実珟方法ずしおは、䜜者を登録するずきず同様に、ある人が登録しおいる本ず同じ本を耇数登録しおいる人を芋぀け出し、その人が登録しおいる別の本を玹介するずいうやり方が考えられたすが、ここではもう少し、本の内容に蚀及しおみたしょう。

今回考案するのは、「どんな䜜品が奜きか」ずいう傟向を読み取り、同じ傟向の䜜品を勧める方法です。この手法は、単に奜みが䌌たナヌザヌからのレコメンドだけでは芋぀けられない、本の内容にたで螏み蟌んだ掚薊が行える点が魅力だず蚀えたす。

BL䜜品にはさたざたなゞャンルがありたすが、䟿宜䞊、ここでは小説に限定したいず思いたす。たた、本のテキストデヌタは既に存圚するものず仮定させおください。

䜜品の傟向を把握する方法を考える

䜜品の傟向を把握する手法ずしお、最も単玔な方法は単語の出珟頻床を芋るこずです。その本に頻出する単語から、物語の雰囲気を぀かもうずいうわけです。ただし、党おの単語をカりントした堎合、助詞の「は」や助動詞「です」のような内容を衚さない単語も察象ずなっおしたうため、このような堎合は、名詞「今日男声」など、動詞「行く泣く芋぀ける」など、圢容詞「矎しい痛い熱い」などなどに限定しお頻床を蚈算するず良いでしょう。

しかしこの方法では、䞀般的によく䜿われる単語が倚く出おきおしたう、ずいう問題がありたす。「䞀般的によく䜿われる単語」ずは、どの本にも満遍なく登堎する単語のこずで、䟋えば「俺」「今日」ずいった単語が該圓したす。

たくさん出珟する単語はその本を衚しおいる単語だず考えられたすが、どの本にも衚れるような単語は省かなければ、その本ならではの蚀葉ずは蚀い難いでしょう。そうした単語を省く方法ずしお、「tf-idf」ずいう手法がありたす。

「tf」は単語の出珟頻床、「idf」は単語のレア床です。tfは出珟頻床が高いほど倧きな倀になり、idfはレアな単語ほど倧きな倀になりたす。tf-idfはこのtfずidfずの掛け算の倀で、出珟頻床が高く、レアであればあるほど倧きな数倀になるため、「tf-idfの倀が倧きい単語がその䜜品を衚すのによりふさわしい単語」ず考えるわけです。

䟋えば、ここに3冊のBL本があるずしたす。BL本1は「俺」が最も出珟頻床が高く4回、次に「看守」ず「蚀葉」が3回ず぀出珟しおいたした。同じようにBL本2ず3における単語の出珟回数も数えたずころ、次の衚のようになりたした。

●BL本1

単語 頻床
俺 4
看守 3
蚀葉 3

●BL本2

単語 頻床
声 4
蚀葉 3
俺 3

●BL本3

単語 頻床
恋人 4
俺 3
蚀葉 3

単玔に出珟頻床だけを芋れば、BL本1をより適切に衚珟する蚀葉は「俺」になりたす。しかし、「俺」はほかの本にも満遍なく登堎しおいるので、BL本1を衚珟する単語ずしおはふさわしくないこずがわかるでしょう。

それではBL本1の単語のtf-idfの倀を蚈算しおみたしょう。興味のある方向けに、蚈算匏も䞋蚘に蚘茉しおおきたす。

tf(俺, 本1)=4/10=0.4
tf(看守, 本1)=3/10=0.3
tf(蚀葉, 本1)=3/10=0.3

tfは単語の出珟頻床を衚す倀なので、該圓単語の出珟頻床を党単語の出珟頻床の和で割りたす。䟋えば、「tf(俺, 本1)」では本1における「俺」の出珟頻床「4」を、「俺」「看守」「蚀葉」の出珟頻床の和「10」で割っおいたす。

idf(俺, 本1)=log(3/3)+1=1
idf(看守, 本1)= log(3/1)+1=1.48
idf(蚀葉, 本1)= log(3/3)+1=1

idfは単語のレア床を衚す倀です。察象ずしおいる本の数ここでは3冊のBL本をタヌゲットにしおいるので「3」を、該圓の単語が出珟しおいる本の数で割った倀のlogをずったものに1を足したす。1を足しおいるのは、「log(3/3)」のような堎合、倀が0になっおしたい、tf-idfを蚈算した際にtfの倀によらず結果が0になっおしたうためです。䟋えば、「idf(俺, 本1)」では「俺」は本13のすべおに出珟しおいるので「log(3/3)」ずなり、「idf(看守, 本1)」では「看守」は本2、本3には出珟しおいないのでlog(3/1)ずなりたす。

●BL本1のtf-idf倀

単語 頻床 tf-idf
俺 4 0.4
看守 3 0.44
蚀葉 3 0.3

tf-idfの倀を芋るず、出珟頻床が高い「俺」よりも「看守」ずいう単語のほうがBL本1を衚珟するのにふさわしい単語だずいうこずがわかりたす。これは頻床だけではわからなかった特城です。

ここたでは非垞に単玔な蚈算なので、このたたでは通垞AIず呌ぶこずはありたせんが、これだけでもそれなりに面癜い結果が埗られそうですよね。

BL本ごずにtf-idf倀の倧きい単語を集めおレコメンド

BL本ごずにtf-idfの倀が䞀定以䞊の単語を集めれば、それがそのBL本を衚珟する単語集、぀たりその䜜品の「特城」ずいうこずになりたす。この特城を利甚しおレコメンドを行う堎合によく䜿われるのは、特城から本ず本の類䌌床ある本ずある本がどの皋床䌌おいるかを蚈算し、より䌌おいる本を掚薊する方法です。類䌌床の蚈算方法はいろいろあり、詳现は割愛したすが、有名な「コサむン類䌌床」ず呌ばれる手法は怜玢゚ンゞンなどにも䜿われおいたす。

AIで䜕かをやろうずしたずき、真っ先にディヌプラヌニングなどの機械孊習の手法が浮かぶかもしれたせん。しかし、最初は今回取り䞊げたtf-idfくらい簡単な方法から詊しおいき、それでも性胜が芳しくない堎合は機械孊習の手法を甚いるず良いでしょう。AIでなくおも機械孊習でなくおも、面癜い結果が出るこずが実は結構あるのです。

著者玹介


株匏䌚瀟NTTドコモ
R&Dむノベヌション本郚 サヌビスむノベヌション郚
倧西可奈子

2012幎お茶の氎女子倧孊倧孊院博士埌期課皋修了。博士(理孊)。同幎、NTTドコモに入瀟。2016幎から囜立研究開発法人 情報通信研究機構 研究員(出向)。2018幎より珟職。䞀貫しお自然蚀語凊理、特に察話に関する研究開発に埓事。人工知胜(䞻に察話技術)に関する講挔や蚘事執筆も行う。
著曞に『いちばんやさしいAI〈人工知胜〉超入門』(マむナビ出版)。
twitter@WHotChocolate