問題タブ [lsa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R を使用したテキスト分析の次元削減に LSA を使用する方法
私はデータ サイエンスの初心者で、ツイートを使用したテキスト分析/感情分析プロジェクトに取り組んでいます。私がやろうとしているのは、ツイート トレーニング セットに対して次元削減を実行し、トレーニング セットを NaiveBayes 学習器にフィードし、学習した NaiveBayes を使用してテスト ツイート セットのセンチメントを予測することです。
この記事の手順に従っています。
彼らの説明は、私のような初心者には簡単すぎます。
lsa() を使用して、RStudio で「Large LSAspace (3 要素)」とラベル付けされたものを作成しました。彼らの例に従って、さらに 3 つのデータ フレームを作成しました。
lsa.train.tkデータを表示すると、次のようになります ( lsa.train.dkはこのマトリックスにかなり似ています)。
私のlsa.train.skは次のようになります。
私の質問は、そのような情報をどのように解釈するのですか? この情報を利用して、NaiveBayes 学習器にフィードできるものを作成するにはどうすればよいですか? NaiveBayes 学習器に lsa.train.sk を使用してみましたが、試したことを正当化できる適切な説明が思いつきません。どんな助けでも大歓迎です!
編集: これまでに行ったこと:
- すべてを用語文書マトリックスにする
- NaiveBayes 学習器に行列を渡す
- 学習したアルゴリズムを使用して予測する
私の問題は次のとおりです。
精度はわずか 50% です...そして、すべてが肯定的な感情としてラベル付けされていることに気付きました (したがって、テスト セットに否定的な感情のツイートのみが含まれている場合、1% の精度が得られた可能性があります)。
現在のコードはスケーラブルではありません。大きな行列を使用するため、最大 3.5k 行のデータしか処理できません。それ以上だと、コンピューターがクラッシュします。したがって、より多くのデータ (10k または 100k 行のツイートなど) を処理できるように次元削減を行いたいと考えました。
scikit-learn - scikit-learn TruncatedSVD ドキュメント
Kaggle コンペティションで LSA を実行するために使用する予定sklearn.decomposition.TruncatedSVD
です。SVD と LSA の背後にある数学は知っていますが、scikit-learn のユーザー ガイドに混乱しているため、実際に適用する方法がわかりません
TruncatedSVD
。
ドキュメントでは、次のように述べています。
この操作の後、
U_k * transpose(S_k)
特徴を含む変換されたトレーニング セットです ( API でk
呼び出されます)n_components
どうしてこれなの?私はSVDの後に、、、X
この時点X_k
ですべきだと思いましたU_k * S_k * transpose(V_k)
か?
そして、それは言う、
テスト セット も変換する
X
には、次の値を掛けますV_k
。X' = X * V_k
これは何を意味するのでしょうか?
r - R: 並列処理形式で lsa() を実行する方法
ツイートでテキスト分析を行い、DR に LSA() を使用しようとしています。ただし、lsa スペースの計算は非常にメモリを集中的に使用するようです。最大 2.3k のツイートしか処理できません。そうしないと、コンピューターが死んでしまいます。
並列処理に関するオンライン リソースを調べたところ、私のコンピューターは 4 コアですが、R の既定の設定であるため、そのうちの 1 つしか使用しないことがわかりました。非常に役立つこの投稿も読みました。 、しかし、並列処理しかできないようです:
- apply() ファミリで使用できる関数について
- forループを置き換える
lsa() の並列処理を使用しようとしています。これが私の1行のコードです:
ここで、tdm.trainは用語を行、ドキュメントを列とする TermDocumentMatrix です。
私の質問は:
lsa() のこのコード行を変更して、順次形式ではなく並列形式で処理するにはどうすればよいですか? 1 コアのみではなく n コアを使用するようにします。ここで、n はユーザー (私) によって定義されたコアの数です。
python - ループで適切に続行しない
私はpython 2.7を持っています。これは私のコードで、実行すると、次のエラーが表示されます:「続行」がループで適切に行われません。
'continue' は for ループ内にある必要があることはわかっていますが、 内if
で使用しています。
python - Python 2: AttributeError: 'list' オブジェクトに属性 'split' がありません
これはLSAの私のプログラムです。この機能では、すべてのテキストをトークン化し、それをステムに変換したいと考えています。ステミングのプログラムを統合しようとしていますが、これを取得します: titles.split(" "): AttributeError: 'list' オブジェクトに属性 'split' がありません
このコード lsa:
そして、これは私が統合したいものです:
python - LSA から類似度を取得する方法
私は潜在的な意味分析に取り組んでおり、2 つのドキュメントから類似性を取得しようとしています。Python で潜在意味解析のコードを実行すると、次のようになります。
この数字からどのように類似点を見つけますか?