Facebookでは毎日、何十億ものコンテンツがシェアされている。その膨大な量とペースに漏れなく遅れなく対応できるためにFacebookは、さまざまなツールを駆使してテキストを分類している。多層ニューラルネットワークのような従来的な方法は正確だが、ニューラルネットワークは訓練が大変である。

分類に正確さと容易さの両方をもたらすために、Facebookの研究部門Artificial Intelligence Research(FAIR)ラボはfastTextというものを開発した。そして今日（米国時間8/18）はそのfastTextがオープンソース化され、デベロッパーはどこででも、そのライブラリを使ったシステムを実装できることになった。

fastTextはテキストの分類と、語のベクタ表現の学習の両方をサポートしている。後者には、bag of wordsやsubword information（部分語情報）*などのテクニックが用いられる。skip-gramモデルに基づいて語は文字のn-gramのバッグとして表現され、それらは各文字のn-gramを表すベクタで表現される。〔*: 部分語情報、‘あかい’なら、あ、か、い、あか、かい、などが部分語。〕

“カテゴリー数のとても多いデータベース上で効率的であるために、fastTextは階層的な分類を用いる。そこではさまざまなカテゴリーがフラットなリストではなく二分木構造に編成される”、FacebookのArmand Joulin, Edouard Grave, Piotr Bojanowski, Tomas Mikolovらがドキュメンテーションでそう述べている。

bag of wordsのbag（バッグ）は、配列やリストや木（ツリー）などなどと並ぶコンピューター上の一般的なデータ構造の一種で、名前（“袋”）の名のとおり、データに順序性がなく、この場合は各語の出現頻度を各語が情報として持つ。“語(words)”は多次元空間として表現され、クェリとカテゴリー分けされた語の集合との関係を線形代数を使って計算する。コンピューターにテキストを投じたとき、それはゼロからのスタートになる。それに対して人間の大人はすでに文法知識を持ち、どこが語の始まりで終わりかを知っている。コンピューターの計算力は強力だが、そのままでは“I love TechCrunch”と“CrunchLove iTech”の違いを認識できない。そこでこのような方法では、ことばに対する定性的な分析を、統計的手法などにより、定量的な分析へと強制的に変換する。

そして数を操作する処理が主体なので、fastTextは従来の深層学習の方法（多層ニューラルネットワーク）よりも速い。下図は、Facebookが作った比較表だ。実行時間が「秒」の単位なのは、fastTextだけである:

fastTextは英語だけでなくドイツ語やスペイン語、フランス語、チェコ語などに対しても使える。

今月の初めにFacebookは、クリックベイトをやっつけるアルゴリズムを同社のNewsfeedに実装した。そのアルゴリズムは言葉以外の要素（繰り返しパターンなど）も点検するから相当複雑だが、デベロッパーはfastTextを利用して同様のツールを自作できる。

Facebookによると、fastTextなら、“ふつうのマルチコアのCPUを使って、10億語を10分弱で学習できる。また、50万のセンテンスを30万あまりのカテゴリーに5分弱で分類できる”、という。これはすごい、かもしれない。

今日（米国時間8/18）からFacebookのfastTextは、GitHub上で入手できる。

[原文へ]

（翻訳：iwatani(a.k.a. hiwa））