BERT+UMAPを実装した


EIGHT
BERT+UMAPを実装した

https://shuhoyo.hatenablog.com/entry/nogizaka46-lyrics-nlp

上記サイトを参考にBERT+UMAPを実装してみた。

BERTとは

BERTとは自然言語処理の1手法のことだ。 BERTを使った処理の流れを説明すると、まず文章データはJUMAN ++によって単語の列に変換される。 単語の列はBERTによって分散表現と呼ばれる1024次元ベクトルに変換される。 このベクトルを入力データにした機械学習モデルを作ることで、全体としては自然言語モデルになる。

例えば入力値1024で出力値2のNNモデルを作成し、教師データを文章がポジティブなら[1,0],ネガティブなら[0,1]とするような学習モデルを作れば、 全体としては文章を見てネガポジを判定するモデルになる。

今回はこの分散表現をUMAPによって次元削減してみる。 次元削減をすることで、本来BERTによって数値化された文章は1024次元で人の目には理解できないものを、文章同士の位置関係を保ったまま2次元に落とし込むことができる。 これにより、BERTがどの文章同士を似ていると判断したのか分かるわけだ。

実装

実装は上のサイトのように実行しようとしたが、うまく行かない箇所があったので下記も参考にした。

https://snowman-88888.hatenablog.com/entry/2020/08/21/055414

また、入力する文章は次のサイトをスクレイピングした。

https://mric.jogmec.go.jp

結果

見たところ、国ごと、鉱物ごとなどに纏まっているような感じはある。


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Python

    Pythonでファイル・ディレクトリを削除する

    Pythonでファイル・ディレクトリを削除する 日付形式のディレクトリを管理していると古いデータを定期的に整理する必要が出てきます。特に画像ファイルなどの日々大量に生成されるデータを扱うシステムでは、ストレージの圧迫を防 […]

    Posted on by press
    Python

    UnicodeEncodeError: ‘ascii’ codec can’t encode

    UnicodeEncodeError: ‘ascii’ codec can’t encode Pythonのprint() 関数で文字列を出力する時に以下の様なUnicodeEncod […]

    Posted on by press