WindowsでfastTextをインストールした備忘
- 2019/11/20 内容があまりに雑だったのでちょっと修正しました
fastTextとは
- facebookが発表した自然言語向けの機械学習ライブラリです
- 単語をベクトル化するモデルを作成します
- 単語を「単語の意味」を示すようなベクトル値に変換できます
- 学習の文章を単語レベルで分割(分かち書き)し、近くに出現した単語は近くなるように学習します
- 単語をベクトル化することで、単語同士の距離を測定したり単語の演算ができたりします
- 例えば女性 + 王様 - 男性 なんていう計算ができたりする
- 単語内で文字ngram分割をかけることで、活用形を考慮することもできます
- subwordsという考え方です
- 「going」という単語を学習すると、その単語を構成している「go」も同じように学習してくれる感じ
- 結果的にgoとgoing,goedみたいな活用形は同じ単語ベクトルになる(関連性がある)という感じになります
- 単語をベクトル化するモデルを作成します
環境
- Windows7(後でWin10環境でもやりました)
fastTextを動かすために必要なもの
- c++のコンパイル環境
- fastTextのソースをコンパイルするため、c++11のコンパイル環境が必要になります
- コンパイルしたexeを実行する環境も同じです
- Pythonで動かす場合
- 公式でPythonから動かすライブラリも提供されています
- 必要なもの
- c++11コンパイル環境
- Python(バージョン2.7または≥3.4)
- NumPy
- SciPy
- pybind11
インストールしたもの
- c++コンパイル環境
- Cygwin(msys2でもよい)
- Cygwinのパッケージでmake、g++
- Python
- Python3.6
- 分かち書き用
- Python用MeCab(日本語の単語分割→分かち書き用)→pipでインストール
- MeCabの辞書
手順
1. fastTextをコンパイルする
fastTextをクローンしてコンパイルする
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ make
ここでthreadのエラーがでたらc++のコンパイラが古い可能性があります
2. Pythonライブラリをインストールする
- cloneしたfastTextで以下を実行
pip install .
ここで
C2039: 'to_string': 'std' のメンバーではありません
というエラーがでた場合、src/productquantizer.ccを直接編集して
#include<string>
を足すといける。
→issuesにあがっていた
fastTextを動かすために
- 実際にfastTextを動かすときには以下の作業が必要になります
- 教育用データの作成
- モデルの作成(supervised)
- 検証(test)
このあたりは気が向いたら記事でも書くかもしれない。。。