fastTextとは

ファストテキスト別名 FastText

1行定義

fastTextとは、単語を文字n-gramの集まりとして扱うことで未知語にもベクトルを与えられるようにした、単語の分散表現と文書分類のための手法のことです。

くわしく

fastTextは、Facebook(現Meta)のAI研究チームが2016年に発表した、単語のベクトル表現と文書分類のための手法です。word2vecを考案したTomas Mikolovも著者に加わっています。同じ名前のライブラリとしても公開されています。

word2vecとの違い:文字n-gram

word2vecは、単語を1つのまとまりとして扱い、単語ごとに1つのベクトルを学習します。そのため、学習データに出てこなかった単語にはベクトルを作れません。また、「play」「played」「playing」のように形の似た単語どうしの関係も、別々に学ぶしかありません。

fastTextは、単語をさらに細かい文字n-gram(連続するn文字の並び)に分けて扱います。論文では、単語の前後に境界を示す記号を付け、3〜6文字のn-gramを取り出しています。たとえばwhereの3文字のn-gramは「<wh」「whe」「her」「ere」「re>」です。単語のベクトルは、これらのn-gramのベクトルと、単語そのもののベクトルの和で表します。学習の枠組みは、word2vecのスキップグラムを土台にしています。

何がよくなるのか

  • 未知語に強い:学習データにない単語でも、含まれるn-gramのベクトルを足せばベクトルを作れます。
  • 語形変化の多い言語に強い:語幹や語尾を共有する単語どうしが、自然に近いベクトルになります。
  • 速い:浅いネットワークで学習します。文書分類の論文では、10億語を超える文章を一般的なCPUで10分足らずで学習できたと報告されています。

限界

fastTextも、1つの単語には文脈によらず同じベクトルを割り当てます。そのため、多義語を文脈で区別できない点はword2vecと同じです。この課題には、文脈ごとにベクトルを変えるELMoやBERTが取り組みました。

覚え方

「単語を文字のかけらに分けて、かけらの和で表す」と覚えます。

G検定での出題

word2vecを拡張し、単語を文字n-gramのベクトルの和で表す仕組み、学習データにない単語や語形変化の多い言語に強い点、学習の速さ、文脈ごとに表現を変えない点が問われます。

混同しやすい用語

用語意味
word2vec単語と周辺の単語の一方から他方を予測するニューラルネットワークを学習し、単語の意味を密なベクトル(分散表現)で表す手法

◯×チェック

  1. fastTextの論文では、単語の前後に境界を示す記号を付けてから文字n-gramを取り出し、接頭辞や接尾辞をほかの文字の並びと区別できるようにしている。

    答えを見る

    答え ◯ 正しい

    たとえばwhereの3文字のn-gramは「<wh」「whe」「her」「ere」「re>」です。単語そのものを表す「<where>」も1つの単位として加えます。

  2. fastTextは、Transformerのエンコーダを大量の文章で事前学習し、文脈に応じて単語のベクトルを変えるモデルである。

    答えを見る

    答え × 誤り

    それはBERTの説明です。fastTextはword2vecと同じく浅いネットワークで学習し、1つの単語には文脈によらず同じベクトルを割り当てます。

  3. fastTextは文書分類にも使われ、深層学習の分類器に近い精度を、はるかに短い学習時間で得られることが報告されている。

    答えを見る

    答え ◯ 正しい

    文書分類の論文では、10億語を超える文章を一般的なマルチコアCPUで10分足らずで学習できたと報告されています。

練習問題

fastTextの問題(1問)
  1. 単語の分散表現の手法

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術27

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習