トレーニング データの 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' の異なる長さのエラー
次のような多くの投稿を読みました。
- DocumentTermMatrix が奇妙なエラーで失敗するのは、用語数が 3000 を超える場合のみです。
- Twitter データ分析 - Term Document Matrix のエラー
- Twitter データ <- termdocumentmatrix のエラー
- Twitter データ分析 - Term Document Matrix のエラー
提案された解決策をすべて試しましたが、どれも機能しません。
1 つ付け加えておきたいのは、この問題が発生するのは、約 2000 を超えるツイートを使用した場合のみであるということです。
入力データに関する注意:
入力データは 2 つの列を持つデータ テーブルで、そのうちの 1 つは "SentimentText" という名前です (上記のコードで確認できます)。
この列では、各行が 1 つのツイートであり、各ツイートはテキスト文字列、別名 character() です。
ツイートの例 (行データとも呼ばれます) は、次のようになります。
どんな助けでも大歓迎です!