date()
## [1] "Fri Jun 21 17:08:49 2019"
sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS  10.14.5
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] compiler_3.5.1  magrittr_1.5    tools_3.5.1     htmltools_0.3.6
##  [5] yaml_2.2.0      Rcpp_1.0.0      stringi_1.2.4   rmarkdown_1.11 
##  [9] knitr_1.21      stringr_1.3.1   xfun_0.4        digest_0.6.18  
## [13] evaluate_0.12

Исходные файлы с текстами в формате MS Word были переведены в формат TXT (редактор Sublime Text2, кодировка UTF-8) Файлы сложены в папку AllTexts

Требуемые библиотеки:

library(tm)
## Loading required package: NLP
library(wordcloud)
## Loading required package: RColorBrewer
library(magrittr) #provides a new “pipe”-like operator, %>%, with which you may pipe a value forward into an expression or function call; something along the lines of x %>% f,

library(stringr)

Импорт данных

Создание корпуса

Txt <- VCorpus(DirSource("../AllTexts", encoding = "UTF-8"), readerControl = list(language = "ru")) 
#inspect(Txt)

Очищаю фамилии из имен файлов

for (i in 1:length(Txt)) {
        names(Txt)[i] <- paste0("text_", i)
}
names(Txt)
##  [1] "text_1"  "text_2"  "text_3"  "text_4"  "text_5"  "text_6"  "text_7" 
##  [8] "text_8"  "text_9"  "text_10" "text_11" "text_12" "text_13" "text_14"
## [15] "text_15" "text_16" "text_17" "text_18" "text_19" "text_20" "text_21"
## [22] "text_22"

Сохраняю объект корпус для дальнейшей работы на диск

save(Txt, file = "Txt.RData")

Стемминг корпуса 1

В рабочей папке лижит файл mystem (программа Mystem Версия 3.1) Создаю функцию для стеминга (Аргументы для mystem передаю из своей функции “текстом”)

mystem <- function(doc, arg) { 
        sdoc <- system2("./mystem"
                        , args = paste0("-", arg)
                        , stdout = TRUE 
                        # TRUE (capture the output
                        # in a character vector)
                        , input = doc)
        sdoc
}

mystem3 <- content_transformer(mystem)
        # Create content transformers, i.e., functions
        #  which modify the content of an R object.
        # Важно переопределить название обертки функции -
        #  иначе ошибка "рекурсии"

Провожу стемминг с аргументами “ld” l - без исходных словоформ d - контекстное снятие омонимии.

# StemTxt <- tm_map(Txt, mystem3, "ld") 

Очистка корпуса 1

Создаю функцию очиcтки от скобок (метод из хелпа библиотеки tm, см. ??content_transformer)

# cleanStemCorpus <- function(text) {
#         text <- tm_map(text, content_transformer(
#                 function(x) gsub("\\}\\{", " ", x)
#                 )
#         )
#         text <- tm_map(text, content_transformer(
#                 function(x) gsub("[}{]", "", x)
#                 )
#         )
# }
# 
# StemTxt <- cleanStemCorpus(StemTxt)

Стемминг корпуса 2 (POS)

по частям речи (Part of Speach) l - без исходных словоформ d - контекстное снятие омонимии. Создание корпуса с грамматической информацией i - печатать грамматическую информацию g - Склеивать информацию словоформ при одной лемме (только при включенной опции -i).

POSTxt <- tm_map(Txt, mystem3, "ldig")

Очистка корпуса 2 (POS)

очистка корпуса POS от служебной информации

cleanPOSCorpus <- function(text) {
        text <- tm_map(text, content_transformer(
        function(x) gsub("\\}\\{", "} {", x) # добавил пробел между скобками
        )
        )
        text <- tm_map(text, content_transformer(
        function(x) gsub(
           "([{])([а-я?-]+)([=])([[:alpha:]]+)([=,])([[:graph:]]*)([}])"
          , "\\2/\\4", x) # убрал всю информацию, кроме части речи после слеша
        )
        )
        text <- tm_map(text, content_transformer(
        function(x) gsub(
           "([{])([[:graph:]]*)([}])", "\\2", x) 
        # убираю квадратные скобки со слов латиницей
        )
        )
}

POSTxt <- cleanPOSCorpus(POSTxt)

Очистка корпуса 2 Stringr (POS)

#cleanPOSTxt <- 

Создание TDM

(текст-документной матрицы)

# TDM <- TermDocumentMatrix(StemTxt)
POS_TDM <- TermDocumentMatrix(POSTxt)

Описательная статистика

!!! Внимание - если брать текст из корпуса без частей речи (StemTDM) - то текст более корткий? Может ошибка в очистке. Какие-то слова удаляются.

Общая длина

textLength <- colSums(as.matrix(POS_TDM))
summary(textLength)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   347.0   445.5   612.5   639.0   727.0  1320.0

Дата-фрейм списка слов.

Лемма/часть речи/частота-леммы/частота-тексты

frameWords <- function(tdm) {
        words <- data.frame(tdm$dimnames$Terms, stringsAsFactors = FALSE)
        names(words)[1] <- "Terms"
        pos <- gsub("([а-я?-]*)([/])([[:alpha:]]*)", "\\3", words$Terms)
        # берем часть после слеша
        pos <- gsub("([[:alpha:]]*)(\\?\\?)", "NA", pos)
        # Заменяем нераспознанное часть речи на NA
        # Вопросительный знак надо экранировать двумя слешами
        words$POS <- as.factor(pos)
        words$Unclear <- grepl("\\?", words$Terms) 
        # добавляю фактор нераспознанных слов
        words$Words <- rowSums(as.matrix(tdm)) 
        # Количество слов
        words$Texts <- apply(as.matrix(tdm), MARGIN = 1
                             , FUN = function(x) sum(x > 0)) 
        # Количество текстов
        words
}

Words <- frameWords(POS_TDM)

Есть еще функция Terms(x) - выведет список лемм.

Проверка корпуса

Части речи A прилагательное ADV наречие ADVPRO местоименное наречие ANUM числительное-прилагательное APRO местоимение-прилагательное COM часть композита - сложного слова CONJ союз INTJ междометие NUM числительное PART частица PR предлог S существительное SPRO местоимение-существительное V глагол

table(Words$POS)
## 
##      a    adv advpro   anum   apro   conj     NA    num   part     pr 
##    510    210     25      5     27     28     12     12     32     41 
##      s   spro      v 
##   1178     22    679
table(Words$Unclear)
## 
## FALSE  TRUE 
##  2736    45
sum(Words$Words)
## [1] 14058
sum(Words$Texts)
## [1] 7217

вывод всех нераспознанных слов

Words[Words$Unclear == TRUE, ]
##                           Terms POS Unclear Words Texts
## 1                        homo??  NA    TRUE     1     1
## 2                         med??  NA    TRUE     1     1
## 3                      natura??  NA    TRUE     1     1
## 4                     sapiens??  NA    TRUE     1     1
## 5                       waste??  NA    TRUE     1     1
## 6                          xx??  NA    TRUE     1     1
## 7                        zero??  NA    TRUE     1     1
## 8                      φύομαι??  NA    TRUE     1     1
## 9                       φύσις??  NA    TRUE     2     1
## 10                        φύω??  NA    TRUE     1     1
## 45                 атмасфера?/s   s    TRUE     1     1
## 59                  балмфорд?/s   s    TRUE     1     1
## 92                       био?/s   s    TRUE     2     1
## 188                   вживый?/a   a    TRUE     1     1
## 412                    гидро?/s   s    TRUE     1     1
## 524              диазометать?/v   v    TRUE     1     1
## 609                     етей?/s   s    TRUE     1     1
## 662              заизменение?/s   s    TRUE     1     1
## 810                 искапать?/v   v    TRUE     1     1
## 848                     йчас?/s   s    TRUE     1     1
## 932             котороенести?/v   v    TRUE     1     1
## 985                лесовлюди?/s   s    TRUE     1     1
## 1023             малочислять?/v   v    TRUE     1     1
## 1092                      млн??  NA    TRUE     1     1
## 1102             многоэтажка?/s   s    TRUE     1     1
## 1191                насилять?/v   v    TRUE     1     1
## 1223       негативноевлияние?/s   s    TRUE     1     1
## 1473           отособенность?/s   s    TRUE     1     1
## 1569                  пехман?/s   s    TRUE     1     1
## 1713            поражаетсвоя?/s   s    TRUE     1     1
## 1767 практикоориентированный?/a   a    TRUE     1     1
## 1845            природекак?/adv adv    TRUE     1     1
## 1896           промышленость?/s   s    TRUE     1     1
## 2094      самопровозглашение?/s   s    TRUE     1     1
## 2196               сметность?/s   s    TRUE     1     1
## 2318               стемиться?/v   v    TRUE     1     1
## 2367             существутый?/a   a    TRUE     1     1
## 2393                       тд??  NA    TRUE     2     2
## 2453                  третия?/s   s    TRUE     1     1
## 2604                 флешмоб?/s   s    TRUE     1     1
## 2648             целофановый?/a   a    TRUE     1     1
## 2715                  шоппер?/s   s    TRUE     1     1
## 2732             экологичный?/a   a    TRUE     2     2
## 2777                   янино?/s   s    TRUE     2     2
## 2778           янинопокупать?/v   v    TRUE     1     1

Исправление опечаток

пока не добавлено

Удаления Стоп-слов

Стандартный список стоп-слов

# stopwords("ru")

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

removeWords() - Remove Words from a Text Document

стоп слов (оставляем существительные, наречия, прилагательные, глаголы, части композита - сложного слова и нерпспознные слова.)

removeStop <- function(text) {
        tm_map(text, content_transformer(
        function(x){
                x <- gsub("([а-я?-]+)/CONJ\\>", "", x)
                x <- gsub("([а-я?-]+)/PR\\>", "", x)
                x <- gsub("([а-я?-]+)/PART\\>", "", x)
                x <- gsub("([а-я?-]+)/APRO\\>", "", x)
                x <- gsub("([а-я?-]+)/SPRO\\>", "", x)
                x <- gsub("([а-я?-]+)/ADVPRO\\>", "", x)
                x <- gsub("([а-я?-]+)/ANUM\\>", "", x)
                x <- gsub("([а-я?-]+)/NUM\\>", "", x)
                x <- gsub("([а-я?-]+)/INTJ\\>", "", x)
                x
                } 
        )
        )
}

StopPOSTxt <- removeStop(POSTxt)

Создание объектов с удалением Стоп-Слов

StopPOS_TDM <- TermDocumentMatrix(StopPOSTxt)
StopWords <- frameWords(StopPOS_TDM)
head(StopWords)
##       Terms POS Unclear Words Texts
## 1    homo??  NA    TRUE     1     1
## 2     med??  NA    TRUE     1     1
## 3  natura??  NA    TRUE     1     1
## 4 sapiens??  NA    TRUE     1     1
## 5   waste??  NA    TRUE     1     1
## 6      xx??  NA    TRUE     1     1

Описательная статистика

textStopLength <- colSums(as.matrix(StopPOS_TDM))
summary(textStopLength)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   194.0   271.0   361.0   391.4   486.0   803.0

проверка количества слов по частям речи

table(StopWords$POS)
## 
##    a  adv   NA    s    v 
##  510  210   12 1178  679
table(StopWords$Unclear)
## 
## FALSE  TRUE 
##  2544    45
sum(StopWords$Words)
## [1] 8610
sum(StopWords$Texts)
## [1] 5752

Сумма по частям речи. И частота по частям речи

cbind(
        aggregate(Words$Words, by = list(Words$POS), length)
        , aggregate(Words$Words, by = list(Words$POS), sum)[2]
)
##    Group.1    x    x
## 1        a  510 1236
## 2      adv  210  674
## 3   advpro   25  233
## 4     anum    5   23
## 5     apro   27  802
## 6     conj   28 1254
## 7       NA   12   14
## 8      num   12   25
## 9     part   32  603
## 10      pr   41 1534
## 11       s 1178 4442
## 12    spro   22  974
## 13       v  679 2244

Частотные слова

Наиболее частотные слова

функция вывода частот и облака слов

cloud_p <- function(data, min.text = 0, partOS = "all"){
        if (partOS == "all") {
                t <- subset(data[order(data$Words
                                        , decreasing = TRUE), ]
       , Texts > min.text 
       , select = c(Terms, Words, Texts))
        }else{
                t <- subset(data[order(data$Words
                                        , decreasing = TRUE), ]
       , Texts > min.text & POS == partOS
       , select = c(Terms, Words, Texts))
        }
       
        return(
        wordcloud(t$Terms, t$Words, random.order = FALSE, rot.per=0)        
        )
        
}

cloud_t <- function(data, min.text = 0, partOS = "all"){
        if (partOS == "all") {
                t <- subset(data[order(data$Words
                                        , decreasing = TRUE), ]
       , Texts > min.text 
       , select = c(Terms, Words, Texts))
        }else{
                t <- subset(data[order(data$Words
                                        , decreasing = TRUE), ]
       , Texts > min.text & POS == partOS
       , select = c(Terms, Words, Texts))
        }
       
        return(t)
        
}

Слова, которые встречаются более чем в половине текстов (больше 33)

subset(StopWords[order(StopWords$Words, decreasing = TRUE), ] , Texts > 33 , select = c(Terms, Words, Texts)) wordcloud()

!!! Зашитая по умаолчанию переменная- хотя нужно было бы вычислять её из количества текстов

cloud_p(StopWords, min.text = length(Txt)/2)

cloud_t(StopWords, min.text = length(Txt)/2)
##               Terms Words Texts
## 2493      человек/s   363    22
## 1715      природа/s   336    22
## 140          быть/v   121    21
## 1042         мочь/v   108    21
## 1359    отношение/s    77    20
## 1531    позволять/v    56    16
## 589         жизнь/s    55    19
## 1734     проблема/s    55    17
## 913           лес/s    50    20
## 1029      можно/adv    50    17
## 684         земля/s    45    17
## 518       должный/a    43    17
## 1050        мусор/s    43    14
## 230          вода/s    41    15
## 1018      много/adv    38    14
## 2149        среда/s    38    16
## 190           вид/s    37    16
## 447        давать/v    37    16
## 1284   окружающий/a    37    15
## 1717    природный/a    37    17
## 299         время/s    35    15
## 244        воздух/s    34    13
## 1467      планета/s    34    16
## 406           год/s    33    16
## 1691    приводить/v    31    14
## 1200        новый/a    29    18
## 1358   относиться/v    29    12
## 583      животное/s    28    13
## 1905       ресурс/s    28    14
## 2158  становиться/v    28    16
## 832    количество/s    27    13
## 1372       отходы/s    27    13
## 2229      также/adv    27    12
## 1008          мир/s    26    14
## 267        вопрос/s    25    14
## 593          жить/v    24    15
## 1125     начинать/v    24    14
## 571         еще/adv    23    15
## 619  задумываться/v    23    13
## 768  использовать/v    23    12
## 2211 существовать/v    23    15
## 2579     являться/v    23    13
## 1832    различный/a    22    12
## 1880     растение/s    22    14
## 2084    создавать/v    22    15
## 601      забывать/v    20    12
## 44      атмосфера/s    19    12
## 472        делать/v    19    13
## 482        дерево/s    19    12
## 781      источник/s    19    13
## 324        выброс/s    17    12
## 468      действие/s    16    12
## 2491        часть/s    16    12

Существительные

cloud_p(StopWords, min.text = length(Txt)/2, partOS = "s")

cloud_t(StopWords, min.text = length(Txt)/2, partOS = "s")
##             Terms Words Texts
## 2493    человек/s   363    22
## 1715    природа/s   336    22
## 1359  отношение/s    77    20
## 589       жизнь/s    55    19
## 1734   проблема/s    55    17
## 913         лес/s    50    20
## 684       земля/s    45    17
## 1050      мусор/s    43    14
## 230        вода/s    41    15
## 2149      среда/s    38    16
## 190         вид/s    37    16
## 299       время/s    35    15
## 244      воздух/s    34    13
## 1467    планета/s    34    16
## 406         год/s    33    16
## 583    животное/s    28    13
## 1905     ресурс/s    28    14
## 832  количество/s    27    13
## 1372     отходы/s    27    13
## 1008        мир/s    26    14
## 267      вопрос/s    25    14
## 1880   растение/s    22    14
## 44    атмосфера/s    19    12
## 482      дерево/s    19    12
## 781    источник/s    19    13
## 324      выброс/s    17    12
## 468    действие/s    16    12
## 2491      часть/s    16    12

Прилагательные

Короткий список (больше половины текстов)

cloud_p(StopWords, min.text = length(Txt)/2, partOS = "a")

cloud_t(StopWords, min.text = length(Txt)/2, partOS = "a")
##             Terms Words Texts
## 518     должный/a    43    17
## 1284 окружающий/a    37    15
## 1717  природный/a    37    17
## 1200      новый/a    29    18
## 1832  различный/a    22    12

Длинный список (больше четверти текстов)

cloud_p(StopWords, min.text = length(Txt)/4, partOS = "a")

cloud_t(StopWords, min.text = length(Txt)/4, partOS = "a")
##                Terms Words Texts
## 518        должный/a    43    17
## 1284    окружающий/a    37    15
## 1717     природный/a    37    17
## 1200         новый/a    29    18
## 582          живой/a    24    11
## 1832     различный/a    22    12
## 2544 экологический/a    18    11
## 397     глобальный/a    16     8
## 2077   современный/a    15     8
## 119        большой/a    14     9
## 1162   необходимый/a    14     8
## 2507        чистый/a    12     9
## 457         данный/a    11     6
## 1266      огромный/a    11     9
## 2065   собственный/a    11     6
## 19      актуальный/a    10     7
## 297        вредный/a    10     8
## 394        главный/a    10     9
## 1975     связанный/a     9     6
## 139        бытовой/a     8     6
## 568   естественный/a     8     6
## 2092     солнечный/a     8     6
## 2494  человеческий/a     8     7
## 1473   пластиковый/a     7     6
## 1771       простой/a     7     7
## 2137     способный/a     6     6

Наречия

cloud_p(StopWords, min.text = length(Txt)/2, partOS = "adv")

cloud_t(StopWords, min.text = length(Txt)/2, partOS = "adv")
##          Terms Words Texts
## 1029 можно/adv    50    17
## 1018 много/adv    38    14
## 2229 также/adv    27    12
## 571    еще/adv    23    15

Глаголы

cloud_p(StopWords, min.text = length(Txt)/2, partOS = "v")

cloud_t(StopWords, min.text = length(Txt)/2, partOS = "v")
##               Terms Words Texts
## 140          быть/v   121    21
## 1042         мочь/v   108    21
## 1531    позволять/v    56    16
## 447        давать/v    37    16
## 1691    приводить/v    31    14
## 1358   относиться/v    29    12
## 2158  становиться/v    28    16
## 593          жить/v    24    15
## 1125     начинать/v    24    14
## 619  задумываться/v    23    13
## 768  использовать/v    23    12
## 2211 существовать/v    23    15
## 2579     являться/v    23    13
## 2084    создавать/v    22    15
## 601      забывать/v    20    12
## 472        делать/v    19    13

TfIdf

создадим матрицу TfIdf (по умолчанию, с нормализацией)

TfIdf <- weightTfIdf(StopPOS_TDM)

Высокие коэфициенты TfIdf

Создаю таблицу с коэфицинентами по всем словам и всем тексам.

tfidfWords <- function(tfidf = TfIdf, tf = StopPOS_TDM) {
        Terms <- tf$dimnames$Terms
        Texts <- tf$dimnames$Docs
        nTexts <- apply(as.matrix(tf), MARGIN = 1
                        , FUN = function(x) sum(x > 0))
        nWords <- rowSums(as.matrix(tf))
        df <- data.frame()
        
        for (i in 1:length(Texts)) {
                df <- rbind(df, data.frame(Terms
                                 , rep(Texts[i], length(Terms))
                                 , as.matrix(TfIdf)[ ,i]
                                 , as.matrix(StopPOS_TDM)[ ,i]
                                 , nTexts
                                 , nWords
                                 )
                )
                
                df <- df[df[4] != 0, ]
        }
        names(df) <- c("Term", "Text", "TfIdf", "Tf", "nTexts", "nWords")
        return(df)
}


df <- tfidfWords()
head(df[order(df$TfIdf, decreasing = TRUE),], 150)[-1]
##                        Text      TfIdf Tf nTexts nWords
## речка/s              text_1 0.07132849  4      2      5
## ограничение/s1      text_10 0.06454163  5      2      6
## зверь/s             text_17 0.06177556  5      2      6
## содружество/s       text_19 0.05539667  6      1      6
## слишком/adv          text_4 0.05274255  6      3     11
## недра/s             text_11 0.04834072  4      1      4
## подарить/v          text_17 0.04777962  3      1      3
## сообщество/s        text_19 0.04616389  5      1      5
## купаться/v           text_1 0.04597352  2      1      2
## россия/s             text_1 0.04597352  2      1      2
## финляндия/s          text_1 0.04597352  2      1      2
## население/s1        text_10 0.04290252  4      3      6
## забирать/v1         text_13 0.04253400  3      2      4
## вмешательство/s      text_4 0.04091222  3      1      3
## сожаление/s          text_1 0.03803245  3      4      6
## показывать/v        text_22 0.03789885  3      1      3
## производство/s3     text_10 0.03698679  6      7     17
## настоящий/a2        text_10 0.03670793  4      4      9
## вновь/adv           text_13 0.03655272  2      1      2
## объяснять/v         text_13 0.03655272  2      1      2
## железо/s            text_11 0.03625554  3      1      3
## мама/s              text_20 0.03619669  5      1      5
## видно/adv            text_1 0.03566424  2      2      3
## волновать/v          text_1 0.03566424  2      2      3
## нуждаться/v          text_1 0.03566424  2      2      3
## труба/s              text_1 0.03566424  2      2      3
## наблюдение/s        text_12 0.03456924  2      1      2
## неделимый/a         text_18 0.03430332  2      1      2
## уважительный/a      text_18 0.03430332  2      1      2
## управлять/v         text_18 0.03430332  2      1      2
## неблагоприятный/a   text_10 0.03327934  2      1      2
## рост/s1             text_10 0.03217689  3      3      5
## дно/s               text_17 0.03185308  2      1      2
## атомный/a            text_9 0.03116605  2      2      3
## нефтяной/a1          text_9 0.03116605  2      2      3
## сточный/a1           text_9 0.03116605  2      2      3
## современный/a4       text_8 0.03113454  8      8     15
## общество/s4          text_8 0.03083877  7      7     14
## многочисленный/a    text_14 0.03070501  3      2      4
## оружие/s1           text_14 0.03070501  3      2      4
## путь/s1              text_8 0.03066100  4      3     10
## возможность/s2      text_13 0.03023891  3      4      8
## рыба/s               text_1 0.03009137  4      8     16
## мегаполис/s          text_5 0.02979576  3      1      3
## подпункт/s           text_5 0.02979576  3      1      3
## весьма/adv           text_1 0.02963370  2      3      4
## защита/s             text_1 0.02963370  2      3      4
## букашка/s           text_15 0.02943519  2      1      2
## необычный/a         text_15 0.02943519  2      1      2
## сосуд/s             text_15 0.02943519  2      1      2
## травинка/s          text_15 0.02943519  2      1      2
## пользоваться/v1     text_11 0.02896346  5      5     10
## подход/s1           text_19 0.02864954  4      2      5
## спасать/v            text_2 0.02835600  4      2      5
## роль/s1             text_13 0.02835600  2      2      3
## исследование/s      text_19 0.02769833  3      1      3
## обязательный/a       text_2 0.02741454  3      1      3
## бездумный/a          text_4 0.02727481  2      1      2
## заканчиваться/v      text_4 0.02727481  2      1      2
## потоп/s              text_4 0.02727481  2      1      2
## ураган/s             text_4 0.02727481  2      1      2
## чрезмерный/a         text_4 0.02727481  2      1      2
## помогать/v6         text_15 0.02726199  5      7     18
## называть/v1         text_21 0.02667942  3      2      5
## погубить/v1         text_21 0.02667942  3      2      4
## погода/s1           text_18 0.02661101  2      2      3
## улучшать/v1         text_18 0.02661101  2      2      3
## думать/v5           text_22 0.02655055  5      6     16
## сохранение/s5       text_22 0.02655055  5      6     12
## температура/s3      text_17 0.02635105  3      4      6
## восстанавливаться/v  text_9 0.02589612  2      3      4
## охрана/s1            text_9 0.02589612  2      3      4
## очистка/s1           text_9 0.02589612  2      3      4
## полигон/s1           text_9 0.02589612  2      3      4
## болезнь/s1          text_10 0.02581665  2      2      3
## рождаемость/s1      text_10 0.02581665  2      2      3
## спирогира/s         text_16 0.02553110  3      1      3
## здоровье/s1         text_19 0.02545995  5      4     10
## водный/a             text_6 0.02544240  6      4      9
## мера/s               text_1 0.02535497  2      4      5
## нужда/s3            text_21 0.02528979  4      4      7
## участок/s           text_22 0.02526590  2      1      2
## явление/s2          text_12 0.02485469  3      5      8
## дорога/s             text_6 0.02477991  5      3      8
## путь/s               text_6 0.02477991  5      3     10
## охота/s1            text_17 0.02471023  2      2      3
## загрязнение/s2      text_10 0.02465786  4      7     12
## алюминий/s          text_11 0.02417036  2      1      2
## избегать/v          text_11 0.02417036  2      1      2
## пить/v              text_11 0.02417036  2      1      2
## стекло/s            text_11 0.02417036  2      1      2
## чугун/s             text_11 0.02417036  2      1      2
## добывать/v2         text_11 0.02336967  3      3      5
## состоять/v2         text_11 0.02336967  3      3      5
## мать/s2             text_20 0.02333173  5      3      8
## концепция/s          text_5 0.02311424  3      2      5
## сегодняшний/a        text_5 0.02311424  3      2      4
## биоресурсы/s         text_6 0.02306603  3      1      3
## причинять/v          text_6 0.02306603  3      1      3
## часто/adv           text_13 0.02304675  3      6      9
## ведро/s              text_1 0.02298676  1      1      1
## внезапно/adv         text_1 0.02298676  1      1      1
## втекать/v            text_1 0.02298676  1      1      1
## дача/s               text_1 0.02298676  1      1      1
## домой/adv            text_1 0.02298676  1      1      1
## закинуть/v           text_1 0.02298676  1      1      1
## запрещать/v          text_1 0.02298676  1      1      1
## зарастать/v          text_1 0.02298676  1      1      1
## коричневый/a         text_1 0.02298676  1      1      1
## кристальный/a        text_1 0.02298676  1      1      1
## ловить/v             text_1 0.02298676  1      1      1
## минимальный/a        text_1 0.02298676  1      1      1
## мутно/adv            text_1 0.02298676  1      1      1
## набираться/v         text_1 0.02298676  1      1      1
## наткнуться/v         text_1 0.02298676  1      1      1
## невооруженный/a      text_1 0.02298676  1      1      1
## неподалеку/adv       text_1 0.02298676  1      1      1
## одумываться/v        text_1 0.02298676  1      1      1
## особенно/adv         text_1 0.02298676  1      1      1
## папа/s               text_1 0.02298676  1      1      1
## пары/s               text_1 0.02298676  1      1      1
## подозревать/v        text_1 0.02298676  1      1      1
## прогревать/v         text_1 0.02298676  1      1      1
## прокатиться/v        text_1 0.02298676  1      1      1
## разница/s            text_1 0.02298676  1      1      1
## разрабатываться/v    text_1 0.02298676  1      1      1
## рыбачить/v           text_1 0.02298676  1      1      1
## сливание/s           text_1 0.02298676  1      1      1
## сравнивать/v         text_1 0.02298676  1      1      1
## удочка/s             text_1 0.02298676  1      1      1
## ходить/v             text_1 0.02298676  1      1      1
## частый/a             text_1 0.02298676  1      1      1
## щас/adv              text_1 0.02298676  1      1      1
## экономичный/a        text_1 0.02298676  1      1      1
## влечение/s          text_21 0.02292767  2      1      2
## вместилище/s        text_21 0.02292767  2      1      2
## голубой/a           text_21 0.02292767  2      1      2
## забота/s            text_21 0.02292767  2      1      2
## инстинкт/s          text_21 0.02292767  2      1      2
## ступень/s           text_21 0.02292767  2      1      2
## формирование/s      text_21 0.02292767  2      1      2
## вдохновение/s1      text_15 0.02283453  2      2      4
## казаться/v          text_15 0.02283453  2      2      3
## меняться/v1         text_15 0.02283453  2      2      3
## удивительный/a1     text_15 0.02283453  2      2      3
## царь/s1             text_20 0.02246384  4      2      5
## энергия/s            text_4 0.02231547  5      8     16
## любовь/s2           text_12 0.02228271  2      3      4
## ущерб/s             text_12 0.02228271  2      3      4
## загрязненный/a       text_1 0.02203612  2      5      6

Темы каждого текста

mostTfIdf <- findMostFreqTerms(TfIdf, 10)
lapply(mostTfIdf, FUN = function(x) Words[Words$Terms %in% names(x), ])
## $text_1
##            Terms POS Unclear Words Texts
## 205    видно/adv adv   FALSE     3     2
## 273  волновать/v   v   FALSE     3     2
## 963   купаться/v   v   FALSE     2     1
## 1307 нуждаться/v   v   FALSE     3     2
## 2048     речка/s   s   FALSE     5     2
## 2063    россия/s   s   FALSE     2     1
## 2074      рыба/s   s   FALSE    16     8
## 2234 сожаление/s   s   FALSE     6     4
## 2460     труба/s   s   FALSE     3     2
## 2603 финляндия/s   s   FALSE     2     1
## 
## $text_2
##               Terms POS Unclear Words Texts
## 19     активность/s   s   FALSE     2     1
## 126        борьба/s   s   FALSE     4     2
## 476       давно/adv adv   FALSE     6     4
## 527      динозавр/s   s   FALSE     2     1
## 916      контроль/s   s   FALSE     3     2
## 980    ледниковый/a   a   FALSE     2     1
## 1329  обновляться/v   v   FALSE     2     1
## 1358 обязательный/a   a   FALSE     3     1
## 2271      спасать/v   v   FALSE     5     2
## 2443    транспорт/s   s   FALSE     4     2
## 
## $text_3
##               Terms POS Unclear Words Texts
## 136      бумажный/a   a   FALSE     2     1
## 158   вдохновлять/v   v   FALSE     2     1
## 235      внимание/s   s   FALSE     4     2
## 645   зависимость/s   s   FALSE     4     2
## 815     искусство/s   s   FALSE     2     1
## 902    композитор/s   s   FALSE     2     1
## 912     контейнер/s   s   FALSE     2     1
## 1047   медикамент/s   s   FALSE     2     1
## 1883 произведение/s   s   FALSE     4     2
## 1927     психолог/s   s   FALSE     2     1
## 
## $text_4
##                Terms POS Unclear Words Texts
## 73       бездумный/a   a   FALSE     2     1
## 228  вмешательство/s   s   FALSE     3     1
## 546      дозволять/v   v   FALSE     3     2
## 665  заканчиваться/v   v   FALSE     2     1
## 909          конец/s   s   FALSE     3     2
## 1745         потоп/s   s   FALSE     2     1
## 2181     слишком/adv adv   FALSE    11     3
## 2543        ураган/s   s   FALSE     2     1
## 2692    чрезмерный/a   a   FALSE     2     1
## 2753       энергия/s   s   FALSE    16     8
## 
## $text_5
##              Terms POS Unclear Words Texts
## 303    впервые/adv adv   FALSE     2     1
## 397        выход/s   s   FALSE     2     1
## 695  зарождаться/v   v   FALSE     2     1
## 919    концепция/s   s   FALSE     5     2
## 1039    материал/s   s   FALSE     7     4
## 1045   мегаполис/s   s   FALSE     3     1
## 1520        пара/s   s   FALSE     2     1
## 1632    подпункт/s   s   FALSE     3     1
## 2110        свет/s   s   FALSE    13     6
## 2129 сегодняшний/a   a   FALSE     4     2
## 
## $text_6
##              Terms POS Unclear Words Texts
## 97    биоресурсы/s   s   FALSE     3     1
## 245       водный/a   a   FALSE     9     4
## 335   всячески/adv adv   FALSE     2     1
## 367  вылавливать/v   v   FALSE     2     1
## 560       дорога/s   s   FALSE     8     3
## 1224  негативный/a   a   FALSE     4     2
## 1332   обработка/s   s   FALSE     2     1
## 1858   причинять/v   v   FALSE     3     1
## 1934        путь/s   s   FALSE    10     3
## 2381           т/s   s   FALSE     7     3
## 
## $text_7
##               Terms POS Unclear Words Texts
## 9           φύσις??  NA    TRUE     2     1
## 58         баллон/s   s   FALSE     2     1
## 78      безумно/adv adv   FALSE     2     1
## 92           био?/s   s    TRUE     2     1
## 452         греча/s   s   FALSE     2     1
## 913     континент/s   s   FALSE     2     1
## 923        корень/s   s   FALSE     2     1
## 1404  определение/s   s   FALSE     9     4
## 1782 предполагать/v   v   FALSE     6     2
## 2122        связь/s   s   FALSE     8     4
## 
## $text_8
##               Terms POS Unclear Words Texts
## 194      взамен/adv adv   FALSE     7     5
## 261   возможность/s   s   FALSE     8     4
## 782      изучение/s   s   FALSE     3     2
## 1219 невозможно/adv adv   FALSE     3     2
## 1318 обеспечивать/v   v   FALSE     3     2
## 1345     общество/s   s   FALSE    14     7
## 1934         путь/s   s   FALSE    10     3
## 2228  современный/a   a   FALSE    15     8
## 2371        сфера/s   s   FALSE     3     2
## 2480     уважение/s   s   FALSE     7     4
## 
## $text_9
##                    Terms POS Unclear Words Texts
## 47             атомный/a   a   FALSE     3     2
## 147        в-третьих/adv adv   FALSE     1     1
## 148      в-четвертых/adv adv   FALSE     1     1
## 240        во-вторых/adv adv   FALSE     1     1
## 293  восстанавливаться/v   v   FALSE     4     3
## 1284          нефтяной/a   a   FALSE     3     2
## 1494            охрана/s   s   FALSE     4     3
## 1501           очистка/s   s   FALSE     4     3
## 1675           полигон/s   s   FALSE     4     3
## 2333           сточный/a   a   FALSE     3     2
## 
## $text_10
##                  Terms POS Unclear Words Texts
## 115          болезнь/s   s   FALSE     3     2
## 639      заболевание/s   s   FALSE     4     3
## 651      загрязнение/s   s   FALSE    12     7
## 1189       население/s   s   FALSE     6     3
## 1198       настоящий/a   a   FALSE     9     4
## 1214 неблагоприятный/a   a   FALSE     2     1
## 1365     ограничение/s   s   FALSE     6     2
## 1886    производство/s   s   FALSE    17     7
## 2058     рождаемость/s   s   FALSE     3     2
## 2064            рост/s   s   FALSE     5     3
## 
## $text_11
##               Terms POS Unclear Words Texts
## 25       алюминий/s   s   FALSE     2     1
## 540      добывать/v   v   FALSE     5     3
## 616        железо/s   s   FALSE     3     1
## 762      избегать/v   v   FALSE     2     1
## 1230        недра/s   s   FALSE     4     1
## 1576         пить/v   v   FALSE     2     1
## 1692 пользоваться/v   v   FALSE    10     5
## 2259     состоять/v   v   FALSE     5     3
## 2317       стекло/s   s   FALSE     2     1
## 2703        чугун/s   s   FALSE     2     1
## 
## $text_12
##                Terms POS Unclear Words Texts
## 86           берет/s   s   FALSE     1     1
## 159  вдохновляться/v   v   FALSE     1     1
## 1009        любовь/s   s   FALSE     4     3
## 1097       много/adv adv   FALSE    38    14
## 1149    наблюдение/s   s   FALSE     2     1
## 1685 положительный/a   a   FALSE     6     4
## 1696      помогать/v   v   FALSE    18     7
## 1972     различный/a   a   FALSE    22    12
## 2587         ущерб/s   s   FALSE     4     3
## 2769       явление/s   s   FALSE     8     5
## 
## $text_13
##              Terms POS Unclear Words Texts
## 77   безотходный/a   a   FALSE     1     1
## 113        божий/a   a   FALSE     1     1
## 237      вновь/adv adv   FALSE     2     1
## 254  возвышенный/a   a   FALSE     1     1
## 259    возлагать/v   v   FALSE     1     1
## 261  возможность/s   s   FALSE     8     4
## 636     забирать/v   v   FALSE     4     2
## 1354   объяснять/v   v   FALSE     2     1
## 2062        роль/s   s   FALSE     3     2
## 2666     часто/adv adv   FALSE     9     6
## 
## $text_14
##                 Terms POS Unclear Words Texts
## 20         активный/a   a   FALSE     1     1
## 42          асфальт/s   s   FALSE     1     1
## 186        вещество/s   s   FALSE     8     5
## 187            вещь/s   s   FALSE     4     3
## 1033         массив/s   s   FALSE     3     2
## 1101 многочисленный/a   a   FALSE     4     2
## 1421         оружие/s   s   FALSE     4     2
## 1604    поверхность/s   s   FALSE     4     3
## 1841      приносить/v   v   FALSE    13     7
## 1913     протяжение/s   s   FALSE     5     4
## 
## $text_15
##               Terms POS Unclear Words Texts
## 134       букашка/s   s   FALSE     2     1
## 157   вдохновение/s   s   FALSE     4     2
## 225      вместе/adv adv   FALSE     4     3
## 852      казаться/v   v   FALSE     3     2
## 1058     меняться/v   v   FALSE     3     2
## 1251    необычный/a   a   FALSE     2     1
## 1696     помогать/v   v   FALSE    18     7
## 2261        сосуд/s   s   FALSE     2     1
## 2440     травинка/s   s   FALSE     2     1
## 2500 удивительный/a   a   FALSE     3     2
## 
## $text_16
##                   Terms POS Unclear Words Texts
## 29         антарктида/s   s   FALSE     2     1
## 53             байкал/s   s   FALSE     4     2
## 232          внедрять/v   v   FALSE     2     1
## 354            выгода/s   s   FALSE     2     1
## 643       завершаться/v   v   FALSE     2     1
## 671  законодательство/s   s   FALSE     2     1
## 1781    предотвращать/v   v   FALSE     2     1
## 2280        спирогира/s   s   FALSE     3     1
## 2326             сток/s   s   FALSE     2     1
## 2560        установка/s   s   FALSE     2     1
## 
## $text_17
##              Terms POS Unclear Words Texts
## 428     говорить/v   v   FALSE    16     8
## 481     далеко/adv adv   FALSE     6     4
## 533          дно/s   s   FALSE     2     1
## 717        зверь/s   s   FALSE     6     2
## 742      значить/v   v   FALSE     5     4
## 1043        мать/s   s   FALSE     8     3
## 1492       охота/s   s   FALSE     3     2
## 1621    подарить/v   v   FALSE     3     1
## 2400 температура/s   s   FALSE     6     4
## 2765      эффект/s   s   FALSE     4     3
## 
## $text_18
##                Terms POS Unclear Words Texts
## 150        важно/adv adv   FALSE     5     4
## 1201     научаться/v   v   FALSE     5     4
## 1226     неделимый/a   a   FALSE     2     1
## 1388      окружать/v   v   FALSE    10     7
## 1471    относиться/v   v   FALSE    29    12
## 1616        погода/s   s   FALSE     3     2
## 1685 положительный/a   a   FALSE     6     4
## 2481  уважительный/a   a   FALSE     2     1
## 2522      улучшать/v   v   FALSE     3     2
## 2541     управлять/v   v   FALSE     2     1
## 
## $text_19
##                    Terms POS Unclear Words Texts
## 190  взаимозависимость/s   s   FALSE     2     1
## 615               желе/s   s   FALSE     2     1
## 721           здоровье/s   s   FALSE    10     4
## 758               идея/s   s   FALSE     4     2
## 824       исследование/s   s   FALSE     3     1
## 1636            подход/s   s   FALSE     5     2
## 2232       содружество/s   s   FALSE     6     1
## 2246        сообщество/s   s   FALSE     5     1
## 2269        социальный/a   a   FALSE     4     2
## 2402          теперь/adv adv   FALSE     4     2
## 
## $text_20
##              Terms POS Unclear Words Texts
## 173      вернуть/v   v   FALSE     2     1
## 284  воспитывать/v   v   FALSE     3     1
## 464        грязь/s   s   FALSE     2     1
## 860     каменный/a   a   FALSE     2     1
## 935         край/s   s   FALSE     2     1
## 1025        мама/s   s   FALSE     5     1
## 1043        мать/s   s   FALSE     8     3
## 1596  плодородие/s   s   FALSE     2     1
## 2031     ребенок/s   s   FALSE    14     6
## 2641        царь/s   s   FALSE     5     2
## 
## $text_21
##               Terms POS Unclear Words Texts
## 221      влечение/s   s   FALSE     2     1
## 226    вместилище/s   s   FALSE     2     1
## 434       голубой/a   a   FALSE     2     1
## 640        забота/s   s   FALSE     2     1
## 798      инстинкт/s   s   FALSE     2     1
## 1160     называть/v   v   FALSE     5     2
## 1306        нужда/s   s   FALSE     7     4
## 1619     погубить/v   v   FALSE     4     2
## 2353      ступень/s   s   FALSE     2     1
## 2609 формирование/s   s   FALSE     2     1
## 
## $text_22
##             Terms POS Unclear Words Texts
## 278    вообще/adv adv   FALSE     3     2
## 508        дело/s   s   FALSE     3     2
## 581      думать/v   v   FALSE    16     6
## 721    здоровье/s   s   FALSE    10     4
## 1661 показывать/v   v   FALSE     3     1
## 1736  построить/v   v   FALSE     3     2
## 1879     проект/s   s   FALSE     3     2
## 2039  результат/s   s   FALSE     7     5
## 2265 сохранение/s   s   FALSE    12     6
## 2579    участок/s   s   FALSE     2     1