2016-04-15 12 views
0

以下のRスクリプトを使用して、Twitterのコメント(カザフ語)の感想分析を行っています。 3000(1500sad、1500happy)はトレーニングセットのコメント、テストセットの1000(happy sad mixed)コメントです。すべてがうまくいきますが、最終的に予測値はすべて幸せを示していますが、これは正しくありません。naiveBayesと予測機能がRで動作しない

私はすべての機能をチェックしており、すべてnaiveBayes機能まで動作しています。私はクラシファイアの値をチェックして、それらが正しいです。私はnaiveBayespredictのどちらかがうんざりしていると思います。

このコードで幸せなコメント(最初のリスト)と1500の悲しい(否定的な)コメントしか使用しなかったとき、予測結果はすべて幸せだったと思います。私はトレーニングセットのためのすべての悲しいまたは否定的なコメントを使用する場合

classifier = naiveBayes(mat[1500:3000,], as.factor(sentiment_all[1500:3000])) 

はしかし、予測された結果は、すべての悲しいです。

classifier = naiveBayes(mat[1501:3000,], as.factor(sentiment_all[1501:3000])) 

私は数時間を費やしていましたが、問題が発生した場所は完全に失われました。この問題を解決するために私を助けてください。ここで

はスクリプトです:

setwd("Path") 
happy = readLines("Path") 
sad = readLines("Path") 
happy_test = readLines("Path") 
sad_test = readLines("Path") 

tweet = c(happy, sad) 
tweet_test= c(happy_test, sad_test) 
tweet_all = c(tweet, tweet_test) 
sentiment = c(rep("happy", length(happy)), 
       rep("sad", length(sad))) 
sentiment_test = c(rep("happy", length(happy_test)), 
        rep("sad", length(sad_test))) 
sentiment_all = as.factor(c(sentiment, sentiment_test)) 

library(RTextTools) 
library(e1071) 

# naive bayes 
mat= create_matrix(tweet_all, language="kazakh", 
        removeStopwords=FALSE, removeNumbers=TRUE, 
        stemWords=FALSE, tm::weightTfIdf) 

mat = as.matrix(mat) 

classifier = naiveBayes(mat[1:3000,], as.factor(sentiment_all[1:3000])) 
predicted = predict(classifier, mat[3001:4000,]); predicted 
+0

コメントしませんか? –

+0

predict()関数が正しく動作していないと思われます。私が 'code'を実行したとき、predict = predict(classifier、mat [1:1、]、type =" raw ");予測される 'code'は、' code'を返します。幸いなことに、悲しいです。 [1、] 0.5 0.5 'code'は、予測関数が機能していないことを意味します。 –

答えて

0

あなたの問題はあなたの問題を間違って設定している、非常に基本的なものです。理想的には、トレーニングデータに50〜50のポジティブとネガティブの分割が必要です。 Naive Bayesクラシファイアがどのように機能するのかにより、エントロピーを最小限に抑えようとしています。

肯定的なコメントが1つしかない場合、分類子は複数のプレディクタに基づいて非常に簡単にエントロピーを最小限に抑えることができたと推測しています。

肯定的なコメントは絶対に使用しませんが、唯一の予測値/唯一の可能な結果は「悲しい」ということと基本的には同じです。

主な問題は、別のデータセットを使用して別のものを試してみることです。 あなたのつぶやきはどこから届いていますか、十分に多様ですか?

+0

最初はトレーニングデータに50-50分割、1500回の幸せと1500の悲しいコメントを試みましたが、それは仕事をしませんでした。私は、このソースhttp://datascienceplus.com/sentiment-analysis-with-machine-learning-in-r/の指示に従っています。彼らのデータは完全に機能しますが、カザフ語のコメントでデータを置き換えると、単に動作が停止します。私はそれが言語の問題だと思う。 –

+0

どこからデータを取得していますか?私はあなたのデータセットが幾分偏っている可能性が高いと思います。 Naive Bayesはそうする傾向があります。 ROC曲線の結果を投稿できますか? – krthkskmr

+0

ROCカーブを取得するにはどうすればよいですか?あなたはそれが言語の問題ではないと確信していますか?私のデータはこのように見えます –

関連する問題