R Wordcloud - невозможно сохранить подчеркивание

Я пытаюсь создать wordcloud запросов SQL. и это стандартный подход к использованию подчеркивания в имени таблицы и имени столбца. и я хочу показать эту информацию в облаке слов. Однако текущий код удаляет его, хотя я явно написал, что не удаляю знаки препинания.

Файл1.txt:

SQL_query_NEW
"SELECT 0 AS c1 , D1.c2 AS c2 , D1.c3 AS c3 , D1.c4 AS c4 , D1.c5 AS c5 , D1.c6 AS c6 , D1.c7 AS c7 , D1.c8 AS c8 , D1.c1 AS c9 FROM ( SELECT DISTINCT CASE WHEN T7267472.""PABC_DT"" > T7267432.""PEINSTL_DT"" THEN NULL ELSE T7267432.""XYZ_DT"" END AS c1 , T7267472.""ABC_DT"" AS c2 , T7267472.""SID"" AS c3 , T7267488.""CITY"" AS c4 , ( COALESCE( T7267563.""P_KEY"" , '' )  ) || '-' || ( COALESCE( T7267563.""PRD_LNG_DESC"" , '' )  ) AS c5 , T7267563.""P_KEY"" AS c6 , T7267589.""L6_DESC"" AS c7 , T7267589.""G_L3_DESC"" AS c8 FROM ""E_R_S"".""G_ADD_V"" T7267488 , ""E_R_S"".""S_G_AST_F_V"" T7267472 , ""E_R_S"".""G_G_E_S4_D1_V"" T7267589 , ""E_R_S"".""PD_MN_HR_D1_V"" T7267563 , ""E_R_S"".""S_G_AST_D_F_V"" T7267432 "

Код до сих пор:

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

qryTxt <- read.table("C://File1.txt",sep="\t", header=TRUE)
vectorSQL = qryTxt$SQL_query_NEW
SQLCorpus <- Corpus(VectorSource(vectorSQL))
tdm <- TermDocumentMatrix(SQLCorpus,control = list(verbose = FALSE,
                                                   asPlain = FALSE,
                                                   stopwords = FALSE,
                                                   tolower = TRUE,
                                                   removeNumbers = FALSE,
                                                   stemWords = FALSE,
                                                   removePunctuation = FALSE,
                                                   removeSeparators = FALSE,
                                                   stem = FALSE,
                                                   stripWhitespace = FALSE))

matrix <- as.matrix(tdm)
v <- sort(rowSums(matrix),decreasing = TRUE)
d <- data.frame(word= names(v),freq=v)

wordcloud(d$word,v, scale = c(5,1),max.words = 10, random.order = FALSE,colors = brewer.pal(8, "Dark2"),rot.per = 0.35,use.r.layout = F)

Вы можете увидеть removePunctuation как False. тем не менее он удаляет подчеркивание в выводе.

d

word                    freq
t7267472    t7267472    4       
t7267563    t7267563    4       
desc    desc    3       
t7267432    t7267432    3       
t7267589    t7267589    3       
ast ast 2       
coalesce    coalesce    2       
from    from    2       
key key 2       
select  select  2   

person Bhavesh Ghodasara    schedule 28.06.2017    source источник
comment
Пожалуйста, сделайте воспроизводимый пример. stackoverflow.com/ вопросы/5963269/   -  person emilliman5    schedule 28.06.2017
comment
@emilliman5 внес некоторые изменения. Я не могу создавать все запросы или вывод облака слов. Однако вы можете видеть вывод фрейма данных. слово ast нигде не появляется само по себе, оно всегда было с подчеркиванием. Надеюсь это поможет.   -  person Bhavesh Ghodasara    schedule 28.06.2017
comment
Воспроизводимый пример — это тот, где я могу скопировать и вставить код из вашего поста и воспроизвести вашу проблему. В нынешнем виде я не могу этого сделать, потому что у меня нет входных данных.   -  person emilliman5    schedule 28.06.2017


Ответы (2)


У меня была точно такая же проблема. Элементы управления в списке не исправляют это.

Вам придется использовать VCorpus() вместо Corpus().

В вашем примере измените это SQLCorpus <- Corpus(VectorSource(vectorSQL)) на это:

SQLCorpus <- VCorpus(VectorSource(vectorSQL))

Затем появятся символы подчеркивания, тире и любые другие знаки препинания. После этого вам нужно будет применить элементы управления, чтобы избавиться от тех знаков препинания, которые вам не нужны.

person f0nzie    schedule 03.10.2017

Я также сталкиваюсь с той же проблемой. Я хочу сохранить символы подчеркивания в своем словесном облаке. Можем ли мы иметь корпус, как показано ниже, и построить облако слов?

texts <- c("O_SALES", "M_SALES", "AMOUNT" , "TOTAL_SALES" , "COST_AMOUNT" )
corpus <- Corpus(VectorSource(texts))

wordcloud(corpus , random.order = FALSE)
person Lata    schedule 02.07.2017
comment
Я попытался использовать основную таблицу непосредственно в WordClound, и это сработало. Давайте посмотрим, работает ли это и в нашем случае? wordcloud(words = text$pn, freq = d$freq, min.freq = 1, max.words=200, random.order=FALSE, rot.per=0.35, colors =brewer.pal(8, Dark2)) - person Bhavesh Ghodasara; 02.07.2017