約6000万のフレーズをベクトル空間に埋め込み、それらの間のコサイン類似度を計算しようとしています。CountVectorizer
ユニグラムとバイグラムを生成するカスタムビルドのトークナイザー関数でsklearnを使用してきました。意味のある表現を得るには、行数に比例した膨大な数の列を許可する必要があることがわかります。これは、非常にまばらな行列につながり、パフォーマンスを低下させます。約10,000列しかなかったとしてもそれほど悪くはありません。これは、単語の埋め込みにはかなり妥当だと思います。
私はword2vec
それがはるかに低次元でより高密度の埋め込みを生成すると確信しているので、Googleを使用しようと考えています。しかしその前に、最初に見ておくべき他の埋め込みがありますか?重要な要件は、約6,000万のフレーズ(行)をスケーリングできることです。
私は単語埋め込みの分野にかなり慣れていないので、アドバイスがあれば助かります。
また、パフォーマンスを向上させるために、特異値分解をすでに使用していることも付け加えておきます。
Sparkを使用していますか?
—
エリアサ
それが最初にSparkを提案した理由の1つです。すみません、電話中です。事前に埋め込むPCAテクニックに関するリファレンスは一切ありません。
—
eliasah 2015
それだけの量のデータがあふれているのかどうかはわかりません。
—
eliasah 2015
テキストを操作しているので、余分なトークンを削除しても、次元が大幅に減少することはありません。150000語の辞書を考えると、例ごとにストップワードを削除すると、数十のメリットがあります。それは役に立ちません。
—
eliasah 2015
そうでない場合は、潜在的なディリクレ割り当てを使用してモデリングするトピックを検討して、フレーズあたりのテキストのベクトルサイズを小さくすることができます。
—
eliasah