• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

fasttext

date: 2017-04-05 excerpt: fasttextについて

tag: nlpgensimfasttext


fasttextについて

概要

  • 類似の使われ方をする単語をコサイン類似度で計算できる
  • w2vの亜種でchargramを考慮等、いくつかのヒューリスティックを組み合わせている

gensim

  • gensimというライブラリが便利

ドキュメント

  • FastText model

学習

from gensim.test.utils import common_texts
from gensim.models import FastText

model = FastText(vector_size=250, window=5, workers=16, word_ngrams=1, max_n=0, min_count=10, sentences: List[List[str]], epochs=1)
  • sentences
    • List[List[str]]で一つの文章が一つのListに収まっている必要がある
  • vector_size
    • NNのサイズで大きい方が表現力が大きくなるが学習が遅くなる
  • min_count
    • 増やすと頻出でフィルタを行い、変な単語を掴む確率が下がり、安定するが、大きすぎると単語を検出できない
  • window
    • 周辺のCBOWを構築する単語の範囲
  • workers
    • 並列CPU数
  • max_n
    • chargramのn数
    • 0で無効
  • epoch
    • 学習のepoch数

類似度検索

# 一つのクエリ
model.wv.most_similar('computer', topn=10)
# 複数のクエリ
model.wv.most_similar(positive=['computer', 'human'], negative=['interface'])

2つの単語間の類似度(-1 ~ 1)

model.wv.similarity("word_a", "word_b")

モデルに含まれるキー(文字)の一覧

words = list(model.wv.index_to_key)

モデルのセーブ

model.save("word2vec.model")

モデルのロード

model = FastText.load("word2vec.model")


nlpgensimfasttext Share Tweet