2013-08-29 5 views
9

ट्विटर डेटा के कुछ विश्लेषण करने का प्रयास कर रहा है। ट्वीट्स डाउनलोड किया गया और नीचेट्विटर डेटा विश्लेषण - टर्म दस्तावेज़ मैट्रिक्स में त्रुटि

# Creating a Corpus 
wim_corpus = Corpus(VectorSource(wimbledon_text)) 

का उपयोग कर के रूप में नीचे एक TermDocumentMatrix बनाने का प्रयास कर में, मैं एक त्रुटि और चेतावनी हो रही है ट्वीट्स की पाठ से एक कोष बनाया।

tdm = TermDocumentMatrix(wim_corpus, 
         control = list(removePunctuation = TRUE, 
             stopwords = TRUE, 
             removeNumbers = TRUE, tolower = TRUE)) 

Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 'i, j, v' different lengths 


In addition: Warning messages: 
1: In parallel::mclapply(x, termFreq, control) : 
all scheduled cores encountered errors in user code 
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL' 
3: In TermDocumentMatrix.VCorpus(corpus) : invalid document identifiers 
4: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 
NAs introduced by coercion 

क्या इस त्रुटि को इंगित करने के लिए? किसी को भी बिंदु इस टीएम पैकेज से संबंधित हो सकता है कर सकते हैं?

टीएम लाइब्रेरी आयात की गई है। मैं आर संस्करण का उपयोग कर रहा हूं: आर 3.0.1 और आरस्टूडियो: 0.97

+0

क्या आप इस त्रुटि को एक छोटी पाठ फ़ाइल (कुछ फ़ाइल जो आप साझा कर सकते हैं) के साथ पुन: उत्पन्न कर सकते हैं? –

उत्तर

7

मुझे लगता है कि त्रुटि ट्वीट संदेशों के भीतर कुछ "विदेशी" पात्रों के कारण है, जो टीएम फ़ंक्शन संभाल नहीं सकता है। मुझे कॉर्पस स्रोत के रूप में ट्वीट्स का उपयोग करके एक ही त्रुटि मिली है। हो सकता है कि निम्न वैकल्पिक हल में मदद करता है:

# एक वेक्टर

rawTweets <- readLines(con = "target_7_sample.txt", ok = TRUE, warn = FALSE, encoding = "utf-8") 

# utf-8

में स्पष्ट रूप से ट्वीट पाठ में कनवर्ट में (एक पाठ फ़ाइल से यहाँ) कुछ ट्वीट संदेशों को पढ़ना
convTweets <- iconv(rawTweets, to = "utf-8") 

# उपर्युक्त रूपांतरण आपको वेक्टर प्रविष्टियों "एनए" के साथ छोड़ देता है, यानी उन ट्वीट्स जिन्हें संभाला नहीं जा सकता है। निम्न आदेश के साथ "NA" प्रविष्टियाँ निकालें:

tweets <- (convTweets[!is.na(convTweets)]) 

कुछ ट्वीट्स का विलोपन अपने समाधान के लिए एक मुद्दा नहीं है, तो (उदाहरण के लिए एक शब्द भी बादल का निर्माण) तो इस दृष्टिकोण काम कर सकते हैं, और आप से आगे बढ़ सकते हैं टीएम पैकेज के कॉर्पस फ़ंक्शन को कॉल करना।

सादर - अल्बर्ट

12

मैं एक ही समस्या थी और यह पता चला है कि यह पैकेज संगतता के साथ एक मुद्दा है। DocumentTermMatrix कॉल करने से पहले

library(SnowballC) 

साथ

install.packages("SnowballC") 

और लोड से स्थापित करने की कोशिश करें।

यह मेरी समस्या हल हो गया।

+0

क्या आप विस्तार कर सकते हैं कि यह एक समाधान क्यों है? –

+0

मुझे संगतता समस्या के विवरण के बारे में निश्चित नहीं है। हाल ही में स्लैम के अपडेट के साथ कुछ करने के लिए हो सकता है? क्या यह काम नहीं करता? – Guillaume

+0

धन्यवाद आदमी। आप एक जीवन बचतकर्ता हैं! – nutsiepully

3

जैसा कि अल्बर्ट ने सुझाव दिया था, टेक्स्ट एन्कोडिंग को "utf-8" में परिवर्तित करने से मेरे लिए समस्या हल हो गई। लेकिन समस्या पैदा करने वाले पात्रों के साथ पूरे ट्वीट को हटाने के बजाय, आप उप विकल्प iconv में केवल करने के लिए उपयोग कर सकते हैं एक ट्वीट में "बुरा" पात्रों को हटा दें और बाकी का ध्यान रखें:

tweets <- iconv(rawTweets, to = "utf-8", sub="") 

यह NAS उत्पादन नहीं करता है अब और और कोई और निस्पंदन कदम आवश्यक है।

0

मुझे लगता है कि यह समस्या तब होती है क्योंकि पाठ में कुछ अजीब पात्र दिखाई देते हैं।यहां मेरा समाधान है:

wim_corpus = tm_map(wim_corpus, str_replace_all,"[^[:alnum:]]", " ") 


tdm = TermDocumentMatrix(wim_corpus, 
         control = list(removePunctuation = TRUE, 
             stopwords = TRUE, 
             removeNumbers = TRUE, tolower = TRUE)) 
0

कुछ जर्मन उमलॉट अक्षरों और कुछ विशेष फोंट थे जो त्रुटियों का कारण बन रहे थे। मैं उन्हें आर में नहीं हटा सका .. यहां तक ​​कि इसे utf-8 में परिवर्तित करके भी। (मैं एक नया आर उपयोगकर्ता हूं) इसलिए मैंने जर्मन अक्षरों को हटाने के लिए एक्सेल का उपयोग किया और उसके बाद कोई त्रुटि नहीं हुई ..

7

मुझे टीएम के बारे में एक लेख में इस समस्या को हल करने का एक तरीका मिला है।

एक उदाहरण है, जिसमें त्रुटि नीचे इस प्रकार है:

getwd() 
require(tm) 

# Importing files 
files <- DirSource(directory = "texts/",encoding ="latin1") 

# loading files and creating a Corpus 
corpus <- VCorpus(x=files) 

# Summary 

summary(corpus) 
corpus <- tm_map(corpus,removePunctuation) 
corpus <- tm_map(corpus,stripWhitespace) 
corpus <- tm_map(corpus,removePunctuation) 
matrix_terms <- DocumentTermMatrix(corpus) 
Warning messages: 
In TermDocumentMatrix.VCorpus(x, control) : invalid document identifiers 

यह त्रुटि होती है क्योंकि आप वर्ग वेक्टर स्रोत अपने टर्म दस्तावेज़ मैट्रिक्स करने के लिए की एक वस्तु की जरूरत है, लेकिन पिछले परिवर्तन चरित्र में ग्रंथों के अपने कॉर्पस को बदलते हैं, इसलिए, उस वर्ग को बदलना जो फ़ंक्शन द्वारा स्वीकार नहीं किया जाता है।

हालांकि, यदि आप टर्म डॉक्यूमेंटमैट्रिक्स फ़ंक्शन का उपयोग करने से पहले एक और कमांड जोड़ते हैं तो आप जा सकते हैं।

getwd() 
require(tm) 

files <- DirSource(directory = "texts/",encoding ="latin1") 

# loading files and creating a Corpus 
corpus <- VCorpus(x=files) 

# Summary 
summary(corpus) 
corpus <- tm_map(corpus,removePunctuation) 
corpus <- tm_map(corpus,stripWhitespace) 
corpus <- tm_map(corpus,removePunctuation) 

# COMMAND TO CHANGE THE CLASS AND AVOID THIS ERROR 
corpus <- Corpus(VectorSource(corpus)) 
matriz_terms <- DocumentTermMatrix(corpus) 

इसलिए, आप इस के साथ और अधिक समस्या नहीं होगी:

नीचे नई कमांड के साथ कोड इस प्रकार है।

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