単語分散表現のクラスタリング
語彙空間のクラスタリングの参考になるものがないかと探して以下の記事に遭遇しました。
Pythonで単語分散表現のクラスタリング - Ahogrammer
現象
作成済みモデルをダウンロードしてクラスタリングを実行するという優れもの記事でしたが、クラスタリングをする際にgensimのエラーが出たのでその解決法をメモ。
AttributeError: 'Word2Vec' object has no attribute 'trainables'
どうやらこれはgensimのバージョン相違に伴うエラーでした。
モデル作成時のgensimとモデル読み込み時のgensimのバージョンが異なる。
'Word2Vec' object has no attribute 'trainables' · Issue #2000 · RaRe-Technologies/gensim
対応策
ありがたいことにこの作者の方はモデル作成のソースをgithubに公開してくれていました。
$ git submodule init $ git submodule update $ python -m venv .env $ . .env/bin/activate $ pip install -r requirements.txt
これを使って環境を構築し、クラスタリングを実行したところうまくいきました。多謝!
以下が実行結果の一部です。
... ['年末', '11月下旬', '5月上旬', '3月下旬', '6月中旬', '10月中旬', '8月下旬', '9月中旬', '3月上旬', '秋期'] ['大洋', '近鉄バファローズ', '南海', 'プロ野球', '近鉄', '球団', '日本ハム', '藤井寺球場', 'オリックス', '東北楽天ゴールデンイーグルス'] ['ヒール', 'ギミック', 'プロレスラー', 'ベビーフェイス', 'ルチャリブレ', 'ルード', 'テクニコ', 'レスラー', 'ハンス・シュミット', 'フリッツ・フォン・エリック'] ...
実は、Mecabのビルド時にエラーが発生したのですが、実行ときにはグローバルにインストールしているMecabモジュールを使うので問題なく動作しました。
MeCab_wrap.cxx:2987:10: fatal error: 'stdexcept' file not found
こちらは、XcodeのCommandLineToolsのバージョン問題のようです。
MacとiPhone連携
VS CodeでJupter Notebookを使う
ここを参考にvscodeからjupyter notebookを使って見た。これは便利。
VS CodeからJupyter Notebookを使ってみよう (1/3):Visual Studio Codeで始めるPythonプログラミング - @IT
goでWebAssembly(2)
前回の続きです。
goでWebAssembly - unokun’s blog
goのWebAssemblyに関する詳細な記事がありました。
Go and wasm: generating and executing wasm with Go GopherAcademy
まとめると以下のようになると思います。
- Web AssemblyはC/C++、Rustなどでビルドしたnative用バイナリをブラウザ上で実行することができる。
- goのコンパイラ(gc)は、まだnative用バイナリを生成できない。将来的なアーキテクチャ向けのバイナリを生成する予定?
- そのかわり、ブラウザ上でgoでビルドしたwasmファイルを動かすjsを提供している。サンプルコードが(wasm_exec.html, wasm_exec.js)になる。
- このjsは、Web Assemblyでブラウザが提供しているAPIを呼び出す。
- この環境があれば、goでビルドしたモジュールをブラウザ上で動作させることができる。
上記記事には、asmファイルの情報を表示するツールがいろいろ含まれていました。
- wasm-dump
- wasm-run
goでWebAssembly
go 11.1でWebAssemblyが追加になったので、試してみました。
以下のサイトに記載されている内容を試してみたところ、たしかにコンソールに"Hello, WebAssembly!”が出力されました。
環境 Mac OS High Sierra 10.13.6 go 11.1
nginx経由で同じようにしましたが、以下のエラーが発生します。
wasm_exec.html:1 Uncaught (in promise) TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
以下のページを参考に、mime.typesにapplication/wasmを追加しましたが、うまくいきませんでした。
application/wasm wasm;
#1606 (WebAssembly doesn't work on Firefox/Chrome due to missing MIME type) – nginx
ローカル(ブラウザ内)に処理が書けるのは面白そうです。 何ができるか考えてみます。
vue-cli(3.0)を使う前に
vue-cli(3.0)を使ってみようと思ったのですが、その前に、nodeのパッケージ管理をnodebrewからndenvに変更しました。
ndenvはanyenv(なんでもenv)から使うバージョン管理で、pyenv, rbenvも同じように使えるようです。が、今回はndenvのみanyenvから使えるようにしました。
以下のページの処理をそのまま実行すればOKです。
Nodeのバージョン管理をndenvにし、それに合わせてanyenvを導入したのでメモ – YATのblog
anyenvのインストール
$ git clone https://github.com/riywo/anyenv ~/.anyenv
使っているシェルの設定ファイル(.zshrc、.bash_profile)に以下を追加します。それまで使っていたnodebrewの処理をコメントアウトしました。
export PATH="$HOME/.anyenv/bin:$PATH" eval "$(anyenv init -)" # nodebrew #export PATH=$HOME/.nodebrew/current/bin:$PATH
設定ファイルを再読み込みします。
source 設定ファイル(.zshrc、.bash_profile)
ndenvインストール
$ anyenv install ndenv
インストール可能なnodeのバージョン一覧
$ ndenv install -l
nodeインストール
$ node install インストールしたいバージョン
インストールされているバージョン一覧
$ ndenv versions
デフォルトのバージョン
ndenv global デフォルトのnodenのバージョン
ここまでくれば、vue-cli 3.0が使えるようになります。 次は、それを使ったプロジェクトの作成ですね。