AI:NLP_自然言語処理NNablaで、Word2Vecをやってみるの3回目です。この記事は長くなるので以下のように3つにわけてます。1回めは、Word_to_Vector.pyで、日本語のごく小さなテキストファイルを読み込んで、とりあえず、動かしてどんな結果が得られるかを確認しました。2回めは、ネットから何か適当なテキストデータをとってきて、自然言語処理をおこなって、Word2Vecで利用できるインプットデータを作るところまでやりました。3回めの今回は、それを学習させて、その結果を利用して、任意の単語で類義語を取得して遊んでみようかなと思っている・・とまあ、こんな構成です。create」でnnablaという仮想環境を用意する以下の記事にそった手順で環境構築されていることを前提に書いてます。arakan-pgm-ai.hatenablog.comそれ以外の環境でインストールしている方は、読み替えてください。nnabla環境にします。IDLEを立ち上げます。IDLEで、1回めのときに修正した保存したファイルを開きます。自分は「my_word_embedding.py」という名前で保存していたので、それを開くことになります。ここでソースを修正していきます。2回めで作成したテキストデータで学習するチェックしたい単語を指定できるように変更する。main():の下にある、data_file名を定義する部分を、保存したファイル名に書き換えてやります。今回は、「w2v2_magi.txt」という名前で結果を保存したので、それに変えます。"w2v2_magi.txt"うーん。見出しつける必要もなかった。チェックしたい単語を指定できるように変更するもとのソースは、読み込んだテキストデータの単語を出現順に、「max_check_words」個分表示し、それぞれに対して、類似度が高い順に5つの単語を表示する仕様です。セント・・と表示してしまいます。これでは全然おもしろくないので、せめて、小説を読んで気になる単語を指定して表示させるくらいはやりたいなと考えてます。正規表現を使うので、importを追加します。re次にmain()の最後の方を以下のように変更します。赤字の部分が変更点です。similarity)補足すると、まず以下をコメントアウトします。args.max_check_wordsそれで、以下を追記します。len(itow)このitowというdictに、出現した単語が格納されているので、lenでサイズをとることで、格納した単語の種類すべての回数分繰り返しをさせようということです。実際に結果を出力しているのは、以下のファンクションです。similarity)このままにしておくと、最初から最後まですべての単語を出力してしまうので、条件をつけるために、if文の下にくくってます。similarity)itow[i]に単語がはいっているので、要するに、「髪か時計」のどちらかに一致した場合だけ出力するということにしてます。ここの髪とか時計とかを、変更すると任意のキーワードで結果を出力できるというわけですね。試して遊んでみました上書き保存して、F5キーで実行します。結果はこんな感じでした。0.256218うーん。学習データが少ないので仕方ないです。本格的に試すなら、Wikipediaの全文データのような大量のテキストデータを処理する必要があります。今回の目的は気楽に試すことです。それでこの程度の結果ならOKじゃないですかね。今回の一連の変更で、適当なテキストデータを持ってきて、Word2Vecを気楽に試せるようにはなってます。いろんなソースと単語の組み合わせで、遊んで見るのも面白いんじゃないですかね。ちなみに、"BOKU"が、「賢者の贈り物」で一番マシだと思った結果は、テキストデータを単語分割する時に対象とする品詞を名詞のみにしたケースでした。そのときの結果がこれです。キーワードは、時計|髪の毛にしてます。0.198949お話の筋を考えると、時計と髪の毛がお互いに近いものであると認識しているのは、なかなか良い・・まるで小説の内容を理解しているかのように見える・・と思います。まとめNNablaのsampleの「word_embedding.py」を、ちょこっと改造して、Word2Vecで遊んでみました。実は、この単語のベクトル化は、文章解釈とか会話みたいな自然言語処理を伴うAIの処理にとって、なかなか重要な技術らしいのです。FaceBookがニュースフィードから釣り見出しを排除するために開発したと言われている「FastText」なども、このWord2Vecの超高速版みたいなものですし。deepage.netだから、とりあえず、簡単なサンプルででも感触をつかんでおくのは、悪くないと思うんですよね。関連情報NNabla関連の記事一覧はこちらです。arakan-pgm-ai.hatenablog.comニューラルネットワークコンソール関連の記事一覧はこちらです。検索スポンサーリンク最近のアクセスTOP5ブクマ数TOP3IT的なTIPS・ノウハウイベントログから抽出したログオン・オフ時刻を見やすいように整形するEXCELのVBAマクロなど。Google検索は利用するけど、アクティビティを保存させたくない時もある文字コードで悩まされるなんて久しぶり/JIS7(ISO-2022-JP)とJIS8の話もっと見る作業時によく参照する「まとめ」djangoテンプレート内でforループで回す時の整理とデフォルト辞書利用時の注意など。djangoテンプレート内ので条件分岐(IF文)で注意することなどをまとめておくdjangoテンプレート/変数の値の参照の仕方が、Pythonと違う所があるので整理しておく。service」とサーバーレスコンピューティング関係をまとめてみる。PWA・SPA・・など「最近のWEBアプリケーションの種類」をざっくりまとめる。文系的まとめディープラーニング(ニューラルネットワーク)の「学習」の肝は「微分」らしいよ。Consoleもっと見るディープラーニングのデモをやってみるWord2Vecで「単語の足し算・引き算の結果(単語)を取得する」デモをやってみる。API」で入力文の疑わしい部分をAIが指摘するデモを作る。classで事前学習済のVGG16モデルを使った画像識別クラス/tensorflow2.0(tf.keras)ランダムフォレストで回帰してみる/気象情報と電力データその2もっと見るPythonでWebアプリやってみるviews.py(python)からデータを渡して、Chart.jsでRaderチャートを描く/Chart.js+djangoWEBブラウザ上にドラッグ&ドロップした画像ファイルをBase64に変換して表示するWEBブラウザで手描きしたイメージをJPEG・PNG変換後Base64エンコードするもっと見るPythonで自動化やってみるWebアプリケーションで自動的に値を参照、スクロール他Tips/Selenium&pythonWebアプリケーションで自動的に何かをクリックするTips/Selenium&pythonWebアプリケーションへの自動入力・選択のTipsあれこれ/Selenium&pythonもっと見るPythonで数学・グラフィックスやってみるモンティ・ホール問題で、ちょっと暇つぶし。最近、台風が怖すぎる!!!生産性向上しろと言いながら、片方で足をひっぱるなんて・・と呆れてます。/軽減税率のニュースを見てもっと見るBOKU62歳の文系SE”BOKU”です。<arakan_no_boku@yahoo.co.jp>興味の向いたものを、つまみ食い的に勉強してます。自分が消化した内容を、頭の整理と備忘を兼ねてブログに書いてます。IT系・・特に機械学習・プログラムネタが中心ですが、IT以外のネタになる時もあります。(43)スポンサーリンクはてなブログをはじめよう!arakan_no_bokuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。