0

トレーニング データの termdocumentmatrix オブジェクトを作成するために使用したコードは次のとおりです。

text_train = iconv(data_train$SentimentText, "UTF-8", "ASCII", sub = "")
corpus_train = Corpus(VectorSource(text_train))
tdm_train = TermDocumentMatrix(
  corpus_train,
  control = list(
    removePunctuation = TRUE,
    removestopWords   = TRUE,
    stemming = FALSE,
    removeNumbers = TRUE, 
    tolower = TRUE,
    weighting = weightTfIdf)
)

そしてそれは動作します!機械からの苦情はありません。

ただし、同じ手法を使用して検証データセットを作成すると、マシンが文句を言います!

検証セットの termdocumentmatrix オブジェクトを作成するために使用したコードを次に示します。唯一の違いは、「辞書」引数をコントロールに追加したことです。

text_val = iconv(data_val$SentimentText, "UTF-8", "ASCII", sub = "")
corpus_val = Corpus(VectorSource(text_val))
tdm_val = TermDocumentMatrix(
  corpus_val,
  control = list(
    removePunctuation = TRUE,
    removestopWords   = TRUE,
    stemming = FALSE,
    removeNumbers = TRUE, 
    tolower = TRUE,
    weighting = weightTfIdf,
    dictionary = tdm_train$dimnames$Terms
  )
)

ただし、次のエラー メッセージが引き続き表示されます。

simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 'i, j, v' の異なる長さのエラー

次のような多くの投稿を読みました。

  1. DocumentTermMatrix が奇妙なエラーで失敗するのは、用語数が 3000 を超える場合のみです。
  2. Twitter データ分析 - Term Document Matrix のエラー
  3. Twitter データ <- termdocumentmatrix のエラー
  4. Twitter データ分析 - Term Document Matrix のエラー

提案された解決策をすべて試しましたが、どれも機能しません。

1 つ付け加えておきたいのは、この問題が発生するのは、約 2000 を超えるツイートを使用した場合のみであるということです。

入力データに関する注意:

入力データは 2 つの列を持つデータ テーブルで、そのうちの 1 つは "SentimentText" という名前です (上記のコードで確認できます)。

この列では、各行が 1 つのツイートであり、各ツイートはテキスト文字列、別名 character() です。

ツイートの例 (行データとも呼ばれます) は、次のようになります。

どんな助けでも大歓迎です!

4

0 に答える 0