はじめに
Apitoreユーザーのリクエストにお応えして、文の意味類似度を評価するWebAPIを作成しました。多少の言い換えであれば問題なく吸収します。これを使えば、例えばQ&Aサイトでは類似した質問文の検索に利用できますし、例えば定型文を投稿するような雑談系チャットボットでは相手の会話文に近い内容の定型文を投稿して相手に同意したかのように振る舞うこともできます。料金はCPU利用時間で、1秒あたり0.01円と格安です。
API
サンプルコード
使ってみる
ApitoreのWebAPIをとりあえず使ってみるまでの流れはこちらにあるので参考にしてください。
実際の挙動を確認してみます。以下に3例ほど載せておきますが、とても精度良く類似文を評価できていることが分かると思います。processTime
は単位がmillisecondです。単文であれば1回あたりほぼ0.01円で処理できます。
"processTime": "81",
"text1": "私は犬と散歩に行く",
"text2": "私は猫と散歩に行く",
"similarity": 0.9969277381896973
"processTime": "61",
"text1": "私は犬と散歩に行く",
"text2": "私は柴犬と秋田犬と散歩に行く",
"similarity": 0.9884411692619324
"processTime": "47",
"text1": "私は犬と散歩に行く",
"text2": "私は飲み会に行く",
"similarity": 0.3070487380027771
おわりに
今回はApitoreのユーザーリクエストにお応えして、文の意味類似度を評価するアルゴリズムをWebAPIで公開しました。例で示した通り、犬であれば犬種の違いは何の問題もなく吸収できます。「散歩」と「飲み会」を間違えることもありません。試した限りではかなりいい感じに動作しているので、文単位の表記ゆれ解消モジュールとしても使えるかもしれません。 注意点としては、今回のアルゴリズムは単文を前提としている点です。2文くらいであれば許容できると思いますが、文書となると動作は保証できません。その点だけ理解した上でご利用下さい。