tm
パッケージのfindAssocs()
をドキュメントの頻度行列に使用して、コーパス内のさまざまなドキュメントの特定の用語に関連する単語を識別しています。tmパッケージのfindAssocs()が関連を抑制する
私の問題は、1つの単語を入力として与えた場合と比べて、関数の入力として単語のベクトルを与えると、出力が違うことです。
これは私の例です。
library(tm)
txt <- c("alpha bravo", "alpha charlie", "alpha charlie", "zulu")
corp <- Corpus(VectorSource(txt))
dtm <- DocumentTermMatrix(corp)
私は(意図したように)以下のような出力を得る"alpha"
に関連付けられたすべての用語を特定したい場合は、以下のDTM
> as.matrix(dtm)
Terms
Docs alpha bravo charlie zulu
1 1 1 0 0
2 1 0 1 0
3 1 0 1 0
4 0 0 0 1
を返します:
> findAssocs(dtm, "alpha", 0.00)
$alpha
charlie bravo
0.58 0.33
私が行うことができます"bravo"
と同じで、次のような出力が得られます(0120)。
> findAssocs(dtm, "bravo", 0.00)
$bravo
alpha
0.33
これらの関連付けをいくつかの用語で検索したいので、必要な出力を得るためにベクトルをfindAssocs
に渡しました。
> findAssocs(dtm, c("alpha","bravo"), 0.00)
$alpha
charlie
0.58
$bravo
numeric(0)
実際、"alpha"
と"bravo"
間assocationが動作されていない省略されている:私は、関数への用語(CHR)のベクトルを渡す場合は、出力は、私は、単一の入力のために得るものとは異なります私はここに期待していただろう。この関数は、個々の項を互いに独立して扱うようであるため、両方ともベクトルの関数に渡される場合、"alpha"
と"bravo"
の間の相関を分析しません。
誰もその動作を説明し、それを省略する方法を教えてもらえますか?回避策として...私は、各単一タームのための機能を適用できるが、それは本当に便利ではありません
UPDATE
私は奇妙な見つけることは"alpha"
と"bravo"
間の相関が省略されていないということであるならば、私たちのプロット協会、例えば以下のコードを:どのように
> freqTerm <- findFreqTerms(dtm, 1)
> freqTerm
[1] "alpha" "bravo" "charlie" "zulu"
plot(dtm, term=freqTerm, corThreshold=0.0, weighting=T, attrs=list(node=list(fixedsize=FALSE, shape="ellipse")))
plot(dtm, term=freqTerm ...
"findAssocs()"
は異なるのですか?
'findAssocs(dtm、c(" alpha "、" bravo ")、0.00)'という用語は、 'c(" alpha "、" bravo " *コーパスの用語。これはあなたが渡したベクトル内の項のペアごとの相関関係を計算しません。 –
あなたが望むことを行う適切な方法は、 'sapply(c(" alpha "、" bravo ")、function(x)findAssocs(dtm、 ) – scoa