(軽量化)BERTScoreで文章を類似度順に並べる

以前、自然言語の評価基準「BERTScore」を使って、類似度の高い文章をスコア順に並べました。しかし、あまりにも計算が遅かったので軽量化します。

この記事について

自然言語処理をとりあえず試してみたい人がターゲットです。自然言語処理で登場する、難しい計算や図について、私はよく分かりません。

分からなくても何とか出来ることを、実感できればと思います。

事前準備

環境の用意や、参考サイトは以前の記事をご確認ください。

テストする文章も前回と同じです。

この4つの文章を他3つの文章と比べ、類似度のスコアを出しましょう。

前回のコードは単純な総当たりでの類似度計算で、500件くらいの文章を処理すると3日かかりました。

コードに無駄が多かったので改修します。

文章Aと文章B、文章Bと文章Aの組み合わせ計算は同じなので、再計算しないようにしています。

軽量化したPythonコード

出力結果

0.7528というような数字が類似度のスコアです。

高いほど似ている文章となります。スコアとしては「吾輩は猫である」と、「未来の世界の猫である」が最も類似していることになります。

計算速度アップ

前回28.5秒だった計算が、22.8秒になりました。

4件だと微妙な速度アップですが、大量の計算だと1日差がでることもあるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)