2015-08-20 8 views
6

अद्यतन वास्तव में विराम चिह्न निकालें कैसे:जब टीएम पैकेज के साथ आर का उपयोग कर

मुझे लगता है कि मैं इस समस्या को हल करने के लिए, बस एक कोड जोड़ने के लिए एक समाधान हो सकता है: dtms = removeSparseTerms(dtm,0.1) यह कोष में विरल चरित्र निकाल देंगे। लेकिन मुझे लगता है कि यह केवल एक कामकाज है, फिर भी विशेषज्ञों के जवाब की प्रतीक्षा करें!


हाल ही में मैं टीएम पैकेज का उपयोग कर आर में टेक्स्ट खनन सीख रहा हूं। और मुझे अपने एबीएपी कार्यक्रम में शब्दों के बारे में अधिकतम आवृत्ति में क्लाउड शब्द बनाने का विचार है। तो मैंने इसे महसूस करने के लिए एक आर कार्यक्रम लिखा।

code = tm_map(code,removePunctuation) 

कोष सामग्री तो सही नहीं है और इस प्रकार:, भिन्न नाम में यदि ऐसा है तो मैं इस मार डाला -

library(tm) 
library(SnowballC) 
library(wordcloud) 

# set path 
path = system.file("texts","abapcode",package = "tm") 

# make corpus 
code = Corpus(DirSource(path),readerControl = list(language = "en")) 

# cleanse text 
code = tm_map(code,stripWhitespace) 
code = tm_map(code,removeWords,stopwords("en")) 
code = tm_map(code,removePunctuation) 
code = tm_map(code,removeNumbers) 

# make DocumentTermMatrix 
dtm = DocumentTermMatrix(code) 

#freqency 
freq = sort(colSums(as.matrix(dtm)),decreasing = T) 

#wordcloud(code,scale = c(5,1),max.words = 50,random.order = F,colors = brewer.pal(8, "Dark2"),rot.per = 0.35,use.r.layout = F) 
wordcloud(names(freq),freq,scale = c(5,1),max.words = 50,random.order = F,colors = brewer.pal(8, "Dark2"),rot.per = 0.35,use.r.layout = F) 

लेकिन मेरे ABAP कोड में, कुछ भिन्न "_" होते हैं और "" शब्द क्लाउड इस तरह है: enter image description here

कुछ शब्द बहुत अजीब हैं अगर "_" या "-" को हटा दें।

और फिर मुझे लगता है कि कोड और शब्द बादल टिप्पणी इस तरह है: enter image description here

इस बार शब्द सही हैं लेकिन कुछ अप्रत्याशित चरित्र इस तरह मेरी ABAP कोड commet के रूप में पॉप, ...

तो क्या हमारे पास कुछ विधियां हैं जो विराम चिह्न को ठीक से हटा सकती हैं जिन्हें हम नहीं चाहते हैं और जिन्हें हम चाहते हैं?

+0

पास-डुप्लिकेट: [टीएम कस्टम निकालें हैशटैग को छोड़कर निष्पादन] (http://stackoverflow.com/questions/27951377/tm-removepunctuation-except-hashtag) – smci

उत्तर

0

ठीक है ... इसलिए निम्न काम करता है ... , एक डेटा फ्रेम में कोष कन्वर्ट अवांछित पात्रों को हटा दें और बाद में कोष के लिए reconvert ...

dataframe<-data.frame(text=unlist(sapply(code, [, "content")), stringsAsFactors=F) dataframe$text <- gsub("[][!#$%()*,.:;<=>@^_|~.{}]", "", dataframe$text)

code <- corpus(Vectorsource(dataframe$text))

4

कोड स्वरूपण के लिए उत्तर के रूप में पोस्ट करना, लेकिन यह के प्रलेखन सेमें पाया गया है 0 प्रलेखन:

मुख्य रूप से यह एक content_transformer में gsub उपयोग कर रहा है removePunctuation शून्य से _ और - ([:punct:] regex वर्ग) के रूप में भी ऐसा ही करने के लिए। removePunctuation में डैश - रखने का विकल्प है लेकिन अंडरस्कोर _ रखने के लिए नहीं है।

f <- content_transformer(function(x, pattern) gsub(pattern, "", x)) 
code <- tm_map(code, f, "[!\"#$%&'*+,./)(:;<=>[email protected]\][\\^`{|}~]") 

चरित्र वर्ग में आप \, " और बंद कोष्ठक ] से बचने के लिए किया है।

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