Разделы презентаций


Метода анализа текста в R

Чистка данныхlibrary(tm); library(tidytext)text

Слайды и текст этой презентации

Слайд 1Метода анализа текста в R
Алексей Горгадзе
Анастасия Кузнецова

NET-RESEARCH.NET

Метода анализа текста в RАлексей ГоргадзеАнастасия КузнецоваNET-RESEARCH.NET

Слайд 2Чистка данных
library(tm); library(tidytext)
text

"", text)
text

stopwords("russian"))

text <- removeWords(text, stoplist)
В стоп слова входят (stoplist):
слишком частотные
слишком редкие
слишком короткие
не существительные
имена собственные

Чистка данныхlibrary(tm); library(tidytext)text

Слайд 3Лемматизация
Приведение словоформы к лемме (к инфинитиву)
MyStem (Яндекс) - производит морфологический

анализ текста на русском языке
text.tmp

input=docs$text, stdout=TRUE) (должен быть установлен MyStem)
кошками -> кошка
Стемминг (урезание слова до основы):
кошками -> кошк
ЛемматизацияПриведение словоформы к лемме (к инфинитиву)MyStem (Яндекс) - производит морфологический анализ текста на русском языкеtext.tmp кошкаСтемминг (урезание

Слайд 4Форматы текстовых данных
corpus1

Форматы текстовых данныхcorpus1

Слайд 5Частотность слов
words_freq

= names(words_freq))

Облака слов library(wordcloud)
wordcloud(words = words_freq$word, freq = words_freq$freq,

scale=c(2,.2), min.freq = 5, max.words=Inf, random.order=FALSE, rot.per=0.1, ordered.colors=FALSE, random.color=TRUE,colors=pal2)
Частотность словwords_freq

Слайд 7Сравнение частотности
Male

[1:length(dtm1)], colnames = count)
Female

as.matrix(sort(sapply(dtm2, "sum"), decreasing = T)
[1:length(dtm2)], colnames = count)

# Removing missing values
Male <- Male[complete.cases(Male),]
Female <- Female[complete.cases(Female),]

words1 <- data.frame(Male)
words2 <- data.frame(Female)

Облака слов library(wordcloud)

# Merge the two tables by row names
wordsCompare <- merge(words1, words2, by="row.names", all = T)
# Replace NA with 0
wordsCompare[is.na(wordsCompare)] <- 0

term.matrix <- as.matrix(wordsCompare[,2:3])
rownames(term.matrix) <- wordsCompare[,1]

png("Name_2wc_300.png", width=2000,height=1200)
par(mfrow=c(1,2),oma = c(2, 1, 5, 1))
comparison.cloud(term.matrix,max.words=300, colors = c("#9999CC", "#CC6666"), scale=c(8, 1))
title("", sub = "Название левого вордклауда",
cex.main = 5, font.main= 2, col.main= "black",
cex.sub = 3, font.sub = 1, col.sub = "black")
commonality.cloud(term.matrix,random.order=FALSE,max.words=300, scale=c(8, 1), main="Plot 1")
title("", sub = "Название правого вордклауда",
cex.main = 5, font.main= 2, col.main= "black",
cex.sub = 3, font.sub = 1, col.sub = "black")
mtext("Общее название", outer = TRUE, cex = 5, font = 2)
dev.off()

Сравнение частотностиMale

Слайд 8Сравнение частотностей
wordsCompare$prop



# Broke down the z score formula a little

to understand how it worked
a <- wordsCompare$prop
b <- wordsCompare$prop2
c <- wordsCompare$Male
d <- wordsCompare$Female
e <- sum(c)
f <- sum(d)

# z score formula - adds column for z scores
wordsCompare$z <- (a - b) / ((sqrt(((sum(c) * a) + (sum(d) * b)) / (sum(c) +
sum(d)) * (1 - ((sum(c) * a) + (sum(d) * b)) / (sum(c) +
sum(d))))) * (sqrt((sum(c) + sum(d)) / (sum(c) *
sum(d)))))

# calculate percentage reduction:
wordsCompare$dif1 <- -100 * (1 - wordsCompare$prop/wordsCompare$prop2)
# calculate percentage increase
wordsCompare$dif2 <- 100 * (1 - wordsCompare$prop2/wordsCompare$prop)
-------------------------------------------------------------
require(ggplot2)

png("eco_dif_m_f_words_full_size_byDif.png", width=3000,height=1500)
ggplot(wordsCompare3, aes(dif, log(abs(Male + Female)), size = 1,label=Row.names, colour = z2))+
scale_colour_gradientn(name="Z Score", colours=c("#80FF00FF", "#00FFFFFF", "#8000FFFF")) +
geom_text(fontface = 2, alpha = .8) +
#scale_size(range = c(3, 12)) +
ylab("Логарифм от каоличества упоминаний") +
xlab("Использование слов \n <----------Больше используются девушками --------|--------Больше используются мальчиками----------->")+
geom_vline(xintercept=0, colour = "red", linetype=2)+
theme_bw() + #theme(legend.position = "none") +
ggtitle("Сравнение используемых слов на факультете экономики \nмежду мальчиками и девушками")
dev.off()
Сравнение частотностейwordsCompare$prop

Слайд 9Коллокации
library(quanteda)
collocations

Коллокацииlibrary(quanteda)collocations

Слайд 10LSA - семантическая близость слов
library(lsa)
tdm

присвоено "tdm_lsa" (какое-то значение)
as.matrix(tdm)[1:5,1:5]
t.locs

labels=rownames(lsa_space2$tk))

lsa.distances<-cosine(tdm_lsa) # косинусное расстояние между текстами в LSA-пространстве
rownames(lsa.distances) <- farm$Name
colnames(lsa.distances) <- farm$Name
lsa.distances[upper.tri(lsa.distances)] <- NA
diag(lsa.distances)=NA
lsa.matrix <- melt(lsa.distances)
colnames(lsa.matrix) <- c("Source","Target", "Weight")
lsa.matrix<-lsa.matrix[lsa.matrix$Weight > 0, ]
lsa.matrix<-lsa.matrix[!(is.na(lsa.matrix$Weight)), ]

lsa.matrix$Weight2 <- lsa.matrix$Weight
lsa.matrix$Type <- "Undirected"
write.csv(lsa.matrix, "graph_farmo_lsa.csv")
View(order(lsa.matrix$Weight))

write.csv(labels_farma, "labels_farma.csv")
LSA - семантическая близость слов library(lsa)tdm

Слайд 11Linguists
Philosophers
Historians
Sociologists
Physics
Astronomers
Biologists
Economists
Chemists
Anthropologists
Psychologists
Размер узлов - Betweenness Centrality

Цвет - специализации спикеров

Связь - LSA

метрики
LSA - PostNauka materials

LinguistsPhilosophersHistoriansSociologistsPhysicsAstronomersBiologistsEconomistsChemistsAnthropologistsPsychologistsРазмер узлов - Betweenness CentralityЦвет - специализации спикеровСвязь - LSA метрикиLSA - PostNauka materials

Слайд 12LSA - PostNauka materials

LSA - PostNauka materials

Слайд 13LDA — к каким темам относится документ
library(mallet)
mallet.instances

tb$Название.раздела, text.array = corp, stoplist.file = "./data/stopwords.txt") ## настраиваем параметры модели

и загружаем данные topic.model <- MalletLDA(num.topics=5) # количество тем topic.model$loadDocuments(mallet.instances) topic.model$setAlphaOptimization(20, 50) # оптимизация гиперпараметров ## собираем статистику: словарь и частотность vocabulary <- topic.model$getVocabulary() # словарь корпуса word.freqs <- mallet.word.freqs(topic.model) # таблица частотности слов ## вершина частотного списка (по документной частоте) head(word.freqs[order(word.freqs$doc.freq, decreasing=T),],30) ## параметр — количество итераций topic.model$train(1000)
## выбор наилучшей темы для каждого токена topic.model$maximize(10) ### LDA: выгрузка результатов ## таблица распределения тем по документам doc.topics <- mallet.doc.topics(topic.model, smoothed=TRUE, normalized=TRUE) ## таблица распределения слов по темам topic.words <- mallet.topic.words(topic.model, smoothed=TRUE, normalized=TRUE) ## метки для тем (по трем главным словам) topic.labels <- mallet.topic.labels(topic.model, topic.words, 5)

Ссылка на интерактивный граф


LDA — к каким темам относится документlibrary(mallet)mallet.instances

Слайд 14LDA: этнические группы в ВК

LDA: этнические группы в ВК

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика