Как дать пробел между двумя словами после удаления текста пунктуации и цифр в R

Мы можем видеть, что в приведенном ниже примере после удаления числа 3054 и знаков препинания - в заданной строке "BG3054-suhas B-DC chr 23.7-22.8.13" вывод будет объединен как bgsuhas, но мне нужен пробел между этими двумя словами как bg suhas. То же самое вы можете увидеть в приведенной ниже строке как bdc, bbxsh. Можете ли вы помочь мне с пробелом между этими словами для интеллектуального анализа текста.

Мне нужно вот так bg suhas b dc chr rashmi в качестве выходной матрицы

Newcol<-c("BG3054-suhas B-DC chr 23.7-22.8.13","BBXSH0030 Rashmi S 23.4.13to22.5.13")

text.corp <- Corpus(VectorSource(Newcol))   

text.corp <- tm_map(text.corp, tolower)

text.corp <- tm_map(text.corp, stripWhitespace)

text.corp <- tm_map(text.corp, removeNumbers)

text.corp <- tm_map(text.corp, removePunctuation)

text.corp <- tm_map(text.corp, removeWords, c("the", stopwords("english")))

dtm <- DocumentTermMatrix(text.corp)

dtm.mat <- as.matrix(dtm)

dtm.mat

OUTPUT
    Terms
Docs bbxsh bdc bgsuhas chr rashmi
   1     0   1       1   1      0
   2     1   0       0   0      1

person Suhas    schedule 03.08.2014    source источник


Ответы (2)


Я бы просто заменил все, что не является буквой az, пробелом в качестве шага предварительной обработки, используя gsub:

Newcol <- gsub("[^a-zA-Z]+", " ", Newcol)
Newcol
# [1] "BG suhas B DC chr " "BBXSH Rashmi S to "

Тогда ваш код tm должен нормально работать для обработки Newcol.

person josliber♦    schedule 03.08.2014

Определите свой собственный преобразователь контента:

replacePunctuation <- content_transformer(function(x) {return (gsub("[[:punct:]]"," ", x))})

А затем используйте его:

text.corp <- tm_map(text.corp, replacePunctuation )

person Louis    schedule 13.01.2016