BERTScoreで文章を類似度順に並べる

自然言語の評価基準「BERTScore」を使って、類似度の高い文章をスコア順に並べてみます。

この記事について

自然言語処理について基礎知識すら無い人(私)が、とにかく試して、自然言語処理とはどんなものか、イメージを掴むための内容です。

環境構築

BERTScoreのGitHub参照

Python 3.6以上の環境が必要です。

コマンドプロント(Windows)やターミナル(Mac)で下記を入力して、BERTScoreをインストールします。

エラーが出ないことを祈ります。

Windows、Mac共に、私の環境では問題なくインストールできました。

テスト用の文章

今回は簡単なテストで、4つの文章を用意します。test.txtという名前で、任意の場所に保存してください。

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

Pythonコード

BERTScoreで文章の類似性を測定してみた」のコードを大部分参考にさせていただきました。しっかり学びたい場合は、このサイトの閲覧をお勧めします。

早く試したい場合は、下記Pythonコードをtest.pyという名前で保存してください。test.pyは、さきほどのtest.txtと同じ階層に格納します。

BERTScoreでは、Precision(適合率), Recall(再現率), F1(適合率と再現率の調和平均)を取得できるようです。

とりあえずF1で類似度を評価することにしました。

出力結果

コマンドプロントなどで「python test.py」を実行すると、文章の類似度スコアが算出されます。

初回実行時のみ時間がかかります。1GB近くある学習済みモデルをダウンロードしているようでした。

しばらく待つと、各文章に対し、類似度の高い順にスコアと文章が掲載されます。

結果としては納得いくスコアです。

「吾輩は猫である」であれば、「未来の世界の猫である」が類似しており、「猫型のロボットである」は少し違い、「眼鏡をかけた黄色い服の少年」は全く違います。

ただ、今回の文章サンプルだと、BERTのすごさを引き出せていない気もします。単純な文章で比較したので、昔からある自然言語処理でも結果が変わらないかもしれません。

まずは結果が見られたことに感謝

自然言語処理を使いこなそうと思うと、まだまだ学習と経験の積み重ねが必要だと感じます。しかし、知識がほぼ無い状況でも、BERTScoreとその使い方の情報があったおかげで、自然言語処理のイメージは掴むことができました。

コメントを残す

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

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