naive bayesアルゴリズムに問題があり、その理由を見つけることができません。私はオンラインチュートリアルを試したので、始めにトレーニングデータを作成し始めました。下のコードでは、トレーニングデータはごくわずかですが、同じ問題です。感情分析RドイツのNaive Bayes
pos_tweets = rbind(
c('Ich liebe das auto', 'positive'),
c('Diese Aussicht ist großartig', 'positive'),
c('toller morgen', 'positive'),
c('ich freue mich so', 'positive'),
c('du bist aber lieb, danke', 'positive')
)
neg_tweets = rbind(
c('ich hasse autos', 'negative'),
c('der blick ist horror', 'negative'),
c('voll müde heute', 'negative'),
c('schreckliche stille', 'negative'),
c('er ist ein feind', 'negative')
)
test_tweets = rbind(
c('Schöne Momente erlebt', 'positive'),
c('zusammen macht es gleich doppelt spass', 'positive'),
c('Yeah, toller Tag', 'positive'),
c('Super schöne Umgebung', 'positive'),
c('es zieht ein leichter wind auf, sehr angenehm', 'positive')
)
tweetsbind = rbind(pos_tweets, neg_tweets, test_tweets)
matrix1= create_matrix(tweetsbind[,1], language="german",
removeStopwords=FALSE, removeNumbers=TRUE,
stemWords=FALSE)
mat1 = as.matrix(matrix1)
今、私は私のモデルを訓練:
classifier1 = naiveBayes(mat1[1:10,], as.factor(tweetsbind[1:10,2]))
そして今、私はそれを使用したい:
predicted = predict(classifier1, mat1[11:15,]); predicted
私は私のモデルに見てみると、それはかなり良い見て、負の単語ので、負のものとしてマークされ、正のものはプラスのものとしてマークされる。
しかし、モデルを使用してテストデータを分析している間は、ステートメントが明らかに陽性であり、使用された単語がトレーニングセットにも存在する場合でも、マイナスを出力します。
私の新しいコードは次のとおりです。
# search for some twitter data
happy <- searchTwitter(":)",n = 10000, lang ='de')
happy_text <- sapply(happy, function (x) x$getText())
sad <- searchTwitter(":(",n = 10000, lang ='de')
sad_text <- sapply(sad, function (x) x$getText())
# create the matrix
tweets <- rbind(sad_text[1:2500,], happy_text[1:2500,]) # if I use more training data, I get a storage error
tweet <- as.matrix(tweets)
matrix= create_matrix(tweet[,2], language= "german", removeStopwords=FALSE, removeNumbers=TRUE, stemWords=FALSE)
matrixdoc = as.matrix(matrix)
# transform to factor and train the model
X <- as.data.frame(matrixdoc[1:5000,])
X$out <- as.factor(tweet[1:5000,3])
X <- as.data.frame(lapply(X, factor))
classifierstack <- naiveBayes(out ~ ., data=X)
# predict
predicted = predict(classifierstack, mat1[11:15,],type = "raw")
そして、これが結果です:私のすべての入力が非常にpositivている場合でも、すべてイストnegativ、(私はそれらを変更)。
negativ positiv
[1,] 1 5.828223e-176
[2,] 1 4.110223e-244
[3,] 1 3.274458e-244
[4,] 1 3.534996e-176
[5,] 1 0.000000e+00
そして、私はこのしようとした場合:
> predict(classifierstack, "zeigt", type = "raw")
negativ positiv
[1,] 0.5 0.5
- >をそれは常に0.5 0.5を出力し、常に最後にnegativです:/
あなたは 'e1071'パッケージから' naiveBayes'を使っていますか? – ekstroem
はい、e1071パッケージを使用しています –
更新が再現できないため、データに何が問題になるかはわかりません。 'testS'とは何ですか?元のデータ/質問について、私が下で行ったのと同じ結果を得ましたか? – ekstroem