Показать сообщение отдельно
Старый 19.12.2013, 13:22   #59
Hogfather
Platinum Member
 
Аватар для Hogfather
 
Регистрация: 22.07.2010
Адрес: Санкт-Петербург
Сообщений: 3,286
По умолчанию

Еще немного о работе с текстами. Берем послания к федеральному собранию за последние 4 года и рисуем облако. Данный пример показывает, как удобно грузятся данные из текста в UTF-8 в заданном каталоге.Теоретически, R также читает doc и pdf, но через внешние конвертеры в txt.

Код:
library(tm)
library(wordcloud)
library(RColorBrewer)
library(SnowballC)

strsplit_space_tokenizer <- function(x) unlist(strsplit(x, "[[:space:]]+"))
ds<-DirSource(directory=".\\texts\\",encoding="UTF-8",pattern="*.txt")
ds.corpus <- Corpus(ds,readerControl = list(reader = readPlain, language = "ru"))
ds.corpus <- tm_map(ds.corpus, removePunctuation)
ds.corpus<- tm_map(ds.corpus, removeWords,stopwords("russian"))
ds.corpus <- tm_map(ds.corpus, stemDocument,language = "russian")
ds.corpus <- tm_map(ds.corpus, stripWhitespace)
ds.corpus <- tm_map(ds.corpus, tolower)

tdm <- TermDocumentMatrix(ds.corpus,control = list(tokenize=strsplit_space_tokenizer))
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
pal1 <- rainbow(20)
pal2 <- brewer.pal(8,"Dark2")


# Смотрим слова, которые встречаются более 200 раз
png("poslan.png", width=1000,height=1000)
comparison.cloud(m, colors = pal2, title.size=1.5,scale=c(6,.2), max.words=400)
dev.off()


Исходные данные во вложении, так что экспериментируйте на здоровье.

Самые распространенные слова в посланиях.
Код:
> findFreqTerms(tdm, 50)
 [1] "важн"         "возможн"      "вопрос"       "год"         
 [5] "государств"   "государствен" "дет"          "должн"       
 [9] "друг"         "ещё"          "задач"        "котор"       
[13] "люд"          "нам"          "наш"          "необходим"   
[17] "нов"          "нужн"         "обществ"      "прав"        
[21] "правительств" "программ"     "работ"        "работа"      
[25] "развит"       "регион"       "решен"        "росс"        
[29] "российск"     "сам"          "сво"          "сдела"       
[33] "систем"       "современ"     "созда"        "социальн"    
[37] "стран"        "сфер"         "счита"        "так"         
[41] "такж"         "уважа"        "цел"          "числ"        
[45] "экономик"     "экономическ"  "это"
Интересный инструмент -- поиск ассоциаций с заданным уровнем корреляции.
Код:
> findAssocs(tdm,"стратегическ",0.98)
    источник      проблем         флот   инструмент          одн    результат самоуправлен 
        1.00         1.00         1.00         0.99         0.99         0.99         0.99 
     страхов       послан      привест     разрешен        район 
        0.99         0.98         0.98         0.98         0.98 
> findAssocs(tdm,"дет",0.98)
  воспитан     окружа     семейн        суд   увеличен        дом     размер        сем       2008 
      1.00       1.00       1.00       1.00       1.00       0.99       0.99       0.99       0.98 
    детств        зал      насил партнёрств    применя        умн 
      0.98       0.98       0.98       0.98       0.98       0.98
NB! Обсуждение картинки вот тут.
Вложения
Тип файла: zip texts.zip (101.3 Кб, 6 просмотров)
---------
DNF is not an option
Hogfather вне форума   Ответить с цитированием
Реклама