SSH経由でサーバーのファイルをVS Codeで編集する

拡張機能(SSH FS)をインストールするとサーバーのファイルを編集することができます。 VS Code拡張機能が使えるのでとても便利です。

リンクの記事を参考に設定しました。 公開鍵認証で、サーバーのauthorized_keysに公開鍵を登録しておくとpassphraseの入力は不要になります。

    "passphrase": false

リンク

Visual Studio CodeでSSHごしにファイルを編集する - Qiita

単語分散表現のクラスタリング

語彙空間のクラスタリングの参考になるものがないかと探して以下の記事に遭遇しました。

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に公開してくれていました。

shiroyagicorp/japanese-word2vec-model-builder: A tool for building gensim word2vec model for Japanese.

$ 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のバージョン問題のようです。

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!”が出力されました。

WebAssembly · golang/go Wiki

環境 Mac OS High Sierra 10.13.6 go 11.1

f:id:unokun3:20180826121450p:plain

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

ローカル(ブラウザ内)に処理が書けるのは面白そうです。 何ができるか考えてみます。