問題タブ [term-document-matrix]

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.

0 投票する
0 に答える
1501 参照

r - コントロールリストに辞書を含むRテキストマイニングパッケージDocumentTermMatrixは、メモリを大量に消費します

DocumentTermMatrix(myCorpus, control=list(dictionary=myDict))私はそれがはるかに多くのメモリを消費することに気づきましたDocumentTermMatrix(myCorpus)

なぜこうなった?

リードはありますか?

コードスニペットは次のとおりです。

今ここに私の質問があります:

メモリリークとバグの可能性があると思います。

0 投票する
1 に答える
5389 参照

r - R tmパッケージは、最も頻繁な用語のマトリックスを作成します

Rのパッケージを使用してtermDocumentMatrix作成しました。tm

最も頻繁に発生する50の用語を持つマトリックス/データフレームを作成しようとしています。

行列に変換しようとすると、次のエラーが発生します。

そこで、Matrixパッケージを使用してスパース行列に変換してみました。

以下を使用して、tdmのさまざまな部分にアクセスしてみました。

その他の情報は次のとおりです。

私の理想的な出力は次のようなものです。

助言がありますか?

0 投票する
2 に答える
1387 参照

matlab - MATLAB nnmf() - 大規模な用語ドキュメント マトリックス - メモリと速度の問題

大きな用語文書行列があり、matlab が提供する非負行列因数分解関数を使用したいと考えています。問題は、最初の繰り返しの後、メモリ使用量が急速に上昇してトップに達し (私のシステムには 6GB あります)、一方で CPU 使用率レベルが非常に低く (約 1%-5%) になることです。システム全体がクラッシュしたかのように動作し、何年も待った場合にのみ、2 回目の反復が終了します。(良い結果を得るには、さらに多くの反復が必要であることに注意してください)。

質問:

誰かがこれを経験したことがある場合、または私のものよりもさらに大きな行列で nnmf() を実行したことがある場合は、言及された問題を実際にどのように克服したかを知りたいです。

また、これを小さなマトリックス (約 7000x1800) で実行しましたが、問題はありませんでした。用語とドキュメントの行列には多数のゼロ要素が含まれており、保存に必要なスペースを減らすのに役立つため、疎行列を使用します。たとえば、私の場合、Term-Document マトリックスには14608 * 18828 = 275039424要素とsum(sum(spa~=0)) = 1312582ゼロ以外の要素があります。

0 投票する
1 に答える
1146 参照

statistics - PCAの用語ドキュメント行列を介して構築された共分散行列の重要性は何ですか?

私はニューラルネットワークに取り組んでおり、ドキュメントとその中のtf-idfの値を持つさまざまな用語を介して構築された用語-ドキュメント行列の次元を減らすために、PCAを適用する必要があります。このようなもの

PCAは、データの平均を取得し、その平均を減算してから、共分散行列に次の式を使用することで機能します。

行列Mを次元NxNの用語ドキュメント行列とします。

共分散行列は次のようになります

次に、固有値と固有ベクトルを計算して、ニューラルネットワークの特徴ベクトルとしてフィードします。私が理解できないのは、共分散行列の重要性と、共分散を見つけるための次元です。

単純な2次元X、Yを考えれば理解できるからです。ここではどの次元が相関していますか?

ありがとうございました

0 投票する
4 に答える
66172 参照

r - tm_map(..., tolower) でテキストを小文字に変換中にエラーが発生しました

を使ってみましたtm_map。次のエラーが発生しました。どうすればこれを回避できますか?

0 投票する
1 に答える
1354 参照

node.js - ドキュメントのストリーム内のドキュメント間の類似性を効率的に計算する方法

i1 つのドキュメントが単語のリストとして表されるテキスト ドキュメントを (Node.js で) 収集します。新しいドキュメントがドキュメントの一種のストリームとして来ることを考慮して、これらのドキュメント間の類似性を計算する効率的な方法は何ですか?

私は現在、各ドキュメント内の単語の正規化頻度に cos-similarity を使用しています。ますます多くのドキュメントを取得するため、スケーラビリティの問題があるため、TF-IDF (用語頻度、逆ドキュメント頻度) は使用しません。

最初は

私の最初のバージョンは、現在利用可能なドキュメントから始めて、大きな Term-Document 行列Aを計算し、 ( と の両方で正規化した後) ドキュメント間の cos-similarityとその単語頻度がそれぞれとであるように計算するS = A^T x Aことでした。S(i, j)norm(doc(i))norm(doc(j))ijdoc(i)doc(j)

新規書類の場合

新しいドキュメントを取得したらどうすればよいdoc(k)ですか? さて、このドキュメントと以前のすべてのドキュメントとの類似性を計算する必要がありますが、これにはマトリックス全体を作成する必要はありません。doc(k) dot doc(j)以前のすべての の内積を取ることができj、その結果はS(k, j)になります。これは素晴らしいことです。

トラブル

  1. SNode.js でのコンピューティングは非常に時間がかかります。実際には長すぎます!そこで、すべてをより高速に実行できる C++ モジュールを作成することにしました。そして、そうです!しかし、私はそれを待つことができません。中間結果を使用できるはずです。そして、「それを待たない」というのは、

    a. 計算が完了するのを待ちますが、
    b. マトリックスAが構築されるのを待ちます (これは大きなものです)。

  2. コンピューティング newS(k, j)は、ドキュメントが与えられたすべての単語のセットよりもはるかに少ない単語を持っているという事実を利用できます (これを使用して、マトリックス全体を構築しますA)。したがって、Node.js で実行する方が高速に見え、データにアクセスするために多くの余分なリソースが必要になるのを回避できます。

しかし、それを行うより良い方法はありますか?

: 私がコンピューティングを始めた理由は、すべてのデータにアクセスできる Node.js でS簡単に構築できA、C++ で行列乗算を実行して Node.js に戻すことができるためです。これにより、全体が大幅に高速化されます。 . しかし、コンピューティングSが実用的でなくなった今、それは役に立たないように見えます。

注 2 : ええ、全体を計算する必要はありません。S右上の要素 (または左下の要素) を計算するだけで済みますが、それは問題ではありません。時間計算の問題はその順序ではありません。

0 投票する
2 に答える
9168 参照

r - 用語ごとの頻度-RTMDocumentTermMatrix

私はRに非常に慣れていないので、DocumentTermMatrixsに頭を悩ませることはできません。TMパッケージで作成されたDocumentTermMatrixがあり、その中に用語頻度と用語がありますが、それらにアクセスする方法がわかりません。

理想的には、私はしたい:

現在、私のコードは次のとおりです。

これはstr(dtm)からの出力です

ありがとうございました、

-A

0 投票する
1 に答える
1278 参照

nlp - 用語-頻度ベクトルを使用するよりも TF-IDF が悪い状況はありますか?

現在、テキスト分類を行っています。用語-頻度ベクトルを使用するよりも TF-IDF が悪い状況はありますか? それを説明する方法は?ありがとう

0 投票する
3 に答える
44677 参照

python - NLTK を使用した効率的な用語ドキュメント マトリックス

NLTK と pandas を使用して用語ドキュメント マトリックスを作成しようとしています。次の関数を書きました。

それを実行する

コーパス内のいくつかの小さなファイルではうまく機能しますが 、4,000 個のファイル (それぞれ約 2 kb) のコーパスで実行しようとすると、 MemoryErrorが発生します。

何か不足していますか?

私は32ビットのpythonを使用しています。(Windows 7、64 ビット OS、Core Quad CPU、8 GB RAM を使用しています)。このサイズのコーパスに本当に 64 ビットを使用する必要がありますか?

0 投票する
2 に答える
774 参照

python - Python を使用して csv から用語ドキュメント マトリックスを読み取る

従来の csv リーダーが用語ドキュメント配列で機能しない理由は、csv ファイルの最初の列が値ではなく用語であるためです。したがって、ファイルの構文は次のとおりです。

キーが label1、label3 などであり、値が列ベクトルである辞書を作成する必要があります (ここでは、 dict[label1]-> 1,0 、 dict[label2] -> 0,0 などになります) 、つまり、用語は私にはまったく役に立たないということです。

次のようなカスタム ソリューションを実装しました。

ただし、8 つの csv ファイル (合計: 12MB) を読み取るには、ラップトップで 90 分以上かかります。

これに対処するより効率的な方法を知っている人はいますか?