fastText : FAQ (翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/05/2018 (0.1.0)
FAIR の fastText は単語表現とセンテンス分類の効率的な学習のためのライブラリです。
0.1.0 でドキュメントが整備されましたので、再翻訳しています。
* 本ページは、github 上の facebookresearch/fastText の website の FAQ を動作確認・翻訳した上で
適宜、補足説明したものです:
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
fastText : FAQ
fastText とは何でしょう? チュートリアルはありますか?
fastText はテキスト分類と表現のためのライブラリです。テキストを連続するベクトルに変換します、これはどのような言語関連タスク上でも後で利用可能です。また幾つかのチュートリアルが利用可能です。
fastText モデルは何故これほど大きいのでしょう?
fastText は単語か文字 ngram のいずれかのためにハッシュテーブルを利用します。ハッシュテーブルのサイズはモデルのサイズに直接的なインパクトを与えます。モデルのサイズを減じるために、オプション ‘-hash’ でこのテーブルのサイズを減じることが可能です。例えば良い値は 20000 です。モデルのサイズに大いにインパクトを与える他のオプションはベクトルのサイズです (-dim)。この次元は空間をセーブするために減じることができますがこれはパフォーマンスに本質的にインパクトを与えることがあります。それが大きすぎるモデルを依然として生成するのであれば、量子化オプションで訓練モデルのサイズを更に減じることができます。
./fasttext quantize -output model
単語 (= words) ではなく語句 (= word phrases) を表わすベストな方法は何でしょう?
語句やセンテンスを表わすための現時点でベストなアプローチは単語ベクトルの bag of words を取ることです。更に、”New York” のような語句のために、それがシングル・トークン “New_York” となるようにデータを前処理することは大いに役立つでしょう。
fastText は何故未知の単語に対してさえもベクトルを生成するのでしょう?
fastText 単語表現の主要な特徴の一つは任意の単語、でっちあげた (=made-up) もののためでさえもベクトルを生成する能力です。実際に、fastText 単語ベクトルはそれに含まれる文字の部分文字列のベクトルから構築されます。これはスペルミスをした単語や単語の連結のためでさえもベクトルを構築することを可能にします。
階層的 softmax は何故パフォーマンスの点で full softmax よりも少し悪いのでしょう?
階層的 softmax は full softmax 損失の近似値で巨大な数のクラス上で効率的に訓練することを可能にします。これはしばしば精度の幾パーセントかを犠牲にします。この損失は (幾つかのクラスが他よりもより頻度が高いような) 不均衡なクラスのために考えられていることにもまた注意してください。貴方のデータセットがクラス毎にバランスの取れたサンプル数を持つ場合には、negative sampling 損失を試す (-loss ns -neg 100) 価値があります。けれども、negative sampling はテスト時でも依然として非常に遅いでしょう、何故ならば full softmax が計算されるからです。
fastText プログラムを GPU 上で実行できますか?
今のところ、fastText は CPU 上でのみ動作します。fastText の目標の一つは、GPU を必要とすることなくモデルを訓練することを可能にし、効率的な CPU ツールであることに注意してください。
fastText を python で利用できますか? または多の言語では?
github で利用可能な python や lua のための幾つかの非公式なラッパーがあります。
fastText を連続的なデータで使用できますか?
fastText は離散的なトークン上で動作しますので、連続的なトークン上では直接的には使用できません。けれども、連続的なトークンをそれらの上で fastText を使用するために離散化することはできます、例えば値を特定の数字に丸める (“12.3” が “12” になります) ことによってです。
辞書にミススペルがあります。テキスト正規化を改良すべきでしょうか?
それらの単語が稀であれば、気にする必要はありません。
NaN に遭遇しています、何故こうなるのでしょう?
学習率が高すぎるためにこの挙動を見がちです。このエラーをもう見なくなるまでそれを減じてみてください。
私のコンパイラ / アーキテクチャは fastText をビルドできません。どうするべきでしょう?
貴方のコンパイラのより新しいバージョンを試してください。私達は gcc のより古いバージョンや多くのプラットフォームとの互換性を維持しようとしていますが、けれども後方互換正を維持することは時に非常に難しくなっています。一般的に、メジャーな linux ディストリビューションと一緒に出荷されるコンパイラとツールチェーンは良いターゲットです。どのような場合でも、貴方のコンパイラ・バージョンとアーキテクチャで issue を作成してください、私達は互換性を実装する試みをするでしょう。
以上