2013-08-15 5 views
5

मैं अपनी भावनाओं के अनुसार तीन श्रेणियों (खरीदें, होल्ड, सेल) में ट्वीट्स को वर्गीकृत करने की कोशिश कर रहा हूं। मैं आर और पैकेज e1071 का उपयोग कर रहा हूँ।आर: नाइव बेयस वर्गीकृत आधार केवल पूर्व-प्राथमिकताओं पर निर्णय

मेरे पास दो डेटा फ्रेम हैं: एक ट्रेनिंग और नई ट्वीट्स का एक सेट जो भावनाओं की भविष्यवाणी की जानी चाहिए।

trainingset dataframe:

+--------------------------------------------------+ 

    **text | sentiment** 

    *this stock is a good buy* | Buy 

    *markets crash in tokyo* | Sell 

    *everybody excited about new products* | Hold 

    +--------------------------------------------------+ 

अब मैं ट्वीट पाठ trainingset[,2] और भावना श्रेणी trainingset[,4] का उपयोग कर मॉडल प्रशिक्षित करने के लिए चाहते हैं।

classifier<-naiveBayes(trainingset[,2],as.factor(trainingset[,4]), laplace=1) 

classifier$tables$x

साथ वर्गीकारक के तत्वों में देख रहे हैं मुझे लगता है कि सशर्त संभावनाओं calculated..There के विषय में खरीदें हर ट्वीट के लिए विभिन्न संभावनाओं कर रहे हैं, पकड़ो और Sell.So दूर तो अच्छा।

हालांकि साथ सेट जब मैं प्रशिक्षण की भविष्यवाणी:

predict(classifier, trainingset[,2], type="raw")

मैं एक वर्गीकरण जो आधारित है केवल एक-प्रायोरी संभावनाओं, जो हर ट्वीट होल्ड के रूप में वर्गीकृत किया गया है इसका मतलब है पर मिल (क्योंकि " पकड़ो "भावना के बीच सबसे बड़ा हिस्सा था)। इसलिए प्रत्येक ट्वीट में खरीदें, होल्ड और बेचना के लिए समान संभावनाएं हैं:

 +--------------------------------------------------+ 

     **Id | Buy | Hold | Sell** 

     1 |0.25 | 0.5 | 0.25 

     2 |0.25 | 0.5 | 0.25 

     3 |0.25 | 0.5 | 0.25 

    .. |..... | .... | ... 

     N |0.25 | 0.5 | 0.25 

    +--------------------------------------------------+ 

कोई विचार क्या मैं गलत कर रहा हूं? आपकी मदद की सराहना करें!

धन्यवाद

उत्तर

6

ऐसा लगता है कि आप, मॉडल पूरे वाक्य इनपुट के रूप में उपयोग करते हुए प्रशिक्षित ऐसा लगता है कि आप शब्द अपने इनपुट सुविधाओं के रूप में उपयोग करना चाहते हैं।

उपयोग:

## S3 method for class 'formula' 
naiveBayes(formula, data, laplace = 0, ..., subset, na.action = na.pass) 
## Default S3 method: 
naiveBayes(x, y, laplace = 0, ...) 


## S3 method for class 'naiveBayes' 
predict(object, newdata, 
    type = c("class", "raw"), threshold = 0.001, ...) 

तर्क:

x: A numeric matrix, or a data frame of categorical and/or 
    numeric variables. 

    y: Class vector. 

विशेष रूप से, अगर आप naiveBayes इस तरह से प्रशिक्षित:

x <- c("john likes cake", "marry likes cats and john") 
y <- as.factor(c("good", "bad")) 
bayes<-naiveBayes(x,y) 

आप एक वर्गीकारक आरईसी करने में सक्षम प्राप्त ognize बस इन दो वाक्यों:

Naive Bayes Classifier for Discrete Predictors 

Call: 
naiveBayes.default(x = x,y = y) 

A-priori probabilities: 
y 
bad good 
0.5 0.5 

Conditional probabilities: 
      x 
     x 
y  john likes cake marry likes cats and john 
    bad    0       1 
    good    1       0 

एक शब्द स्तर वर्गीकारक आप आदानों

x <-    c("john","likes","cake","marry","likes","cats","and","john") 
y <- as.factors(c("good","good", "good","bad", "bad", "bad", "bad","bad")) 
bayes<-naiveBayes(x,y) 

आप

Naive Bayes Classifier for Discrete Predictors 

Call: 
naiveBayes.default(x = x,y = y) 

A-priori probabilities: 
y 
bad good 
0.625 0.375 

Conditional probabilities: 
     x 
y   and  cake  cats  john  likes  marry 
    bad 0.2000000 0.0000000 0.2000000 0.2000000 0.2000000 0.2000000 
    good 0.0000000 0.3333333 0.0000000 0.3333333 0.3333333 0.0000000 

सामान्य R में है के रूप में शब्दों के साथ इसे चलाने के लिए की जरूरत को प्राप्त करने के एनएलपी डेटा प्रसंस्करण के लिए उपयुक्त नहीं है, python (या कम से कम Java) बहुत अधिक होगा पसंद पसंद है।

शब्दों को एक वाक्य में परिवर्तित करने के लिए, आप strsplit समारोह

unlist(strsplit("john likes cake"," ")) 
[1] "john" "likes" "cake" 
+0

अभूतपूर्व प्रतिसाद का उपयोग कर सकते हैं। –

+0

पुन: ट्वीट्स को शब्दों में परिवर्तित करना, इसे 'tm' टेक्स्ट खनन पैकेज (cran.r-project.org/web/packages/tm/) के साथ आर में भी आसानी से किया जा सकता है। प्रक्रिया को सरल बनाने के लिए इसमें कई टूल हैं जैसे स्टॉप शब्दों को हटाने (जैसे, "द", "इसे"), पूंजीकरण आदि। पैकेज में एक अच्छा [विग्नेट] है (http://cran.r-project.org/web/packages/tm/vignettes/ tm.pdf) खोज के लायक है। – Bryan

संबंधित मुद्दे