首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的词频散点图(单词作为标签)

R中的词频散点图(单词作为标签)
EN

Stack Overflow用户
提问于 2014-01-05 20:32:23
回答 2查看 1.8K关注 0票数 1

我目前正在写一篇论文,比较英国议员在议会中的角色和他们在twitter上的角色。我收集了twitter的数据(最重要的是,原始文本)和一位议员在议会中的演讲,并希望做一个散点图,显示哪些单词在twitter和议会中都很常见(右上角),哪些不常见(左下角)。所以,x轴是议会中的词频,y轴是twitter上的词频。

到目前为止,我已经用R完成了这篇论文的所有工作,我对R没有任何经验,到目前为止我只使用STATA。

我试着改编这段代码(http://is-r.tumblr.com/post/37975717466/text-analysis-made-too-easy-with-the-tm-package),但就是做不出来。主要问题是,编写此代码的人使用一个文本文档和正则表达式来划分哪个文本属于哪个轴。但是,我有两个单独的文档(我将它们保存为.txt、corpi或term-document-matrices),它们应该对应于单独的轴。

很抱歉,像我这样的新手打扰了您,今年我会花更多的时间学习R的基础知识,这样我就可以自己解决这个问题了。然而,这篇论文下周一就要交了,我现在根本不能做这么多的回溯来解决这个问题。

如果你能帮我,我会很感激的,

非常感谢,

耐克

编辑:我会把我写的代码放进去,尽管它的方向不太正确,但这样我就可以提供一个正确的例子来说明我正在处理的东西。

我曾尝试实现is.R()的方法,在csv文件中使用相关文本,并使用一个虚拟变量来区分它是twitter文本还是语音文本。我遵循这种方法,最后我甚至得到了一个散点图,然而,它绘制了数字(我认为它是单词在数据集中所处的数字??)而不是字眼。我认为问题可能是R将csv文件中的每一行都作为单独的文本文档处理。

代码语言:javascript
复制
# in excel i built a csv dataset that contains all the text, each instance (single tweet / speech) in one line, with an added dummy variable that clarifies whether the text is a tweet or a speech ("istweet", 1=twitter). 

comparison_watson.df <- read.csv(file="data/watson_combo.csv", stringsAsFactors = FALSE)

# now to make a text corpus out of the data frame

comparison_watson_corpus <- Corpus(DataframeSource(comparison_watson.df))
inspect(comparison_watson_corpus)

# now to make a term-document-matrix

comparison_watson_tdm <-TermDocumentMatrix(comparison_watson_corpus)
inspect(comparison_watson_tdm)

comparison_watson_tdm <- inspect(comparison_watson_tdm)
sort(colSums(comparison_watson_tdm))
table(colSums(comparison_watson_tdm))

termCountFrame_watson <- data.frame(Term = rownames(comparison_watson_tdm))
termCountFrame_watson$twitter <- colSums(comparison_watson_tdm[comparison_watson.df$istwitter == 1, ])
termCountFrame_watson$speech <- colSums(comparison_watson_tdm[comparison_watson.df$istwitter == 0, ])

head(termCountFrame_watson)

zp1 <- ggplot(termCountFrame_watson)
zp1 <- zp1 + geom_text(aes(x = twitter, y = speech, label = Term))
print(zp1)
EN

回答 2

Stack Overflow用户

发布于 2014-01-05 23:52:54

代码语言:javascript
复制
library(tm)
txts <- c(twitter="bla bla bla blah blah blub",
          speech="bla bla bla bla bla bla blub blub")
corp <- Corpus(VectorSource(txts))
term.matrix <- TermDocumentMatrix(corp)
term.matrix <- as.matrix(term.matrix)
colnames(term.matrix) <- names(txts)
term.matrix <- as.data.frame(term.matrix)

library(ggplot2)
ggplot(term.matrix, 
       aes_string(x=names(txts)[1], 
                  y=names(txts)[2], 
                  label="rownames(term.matrix)")) + 
  geom_text()

你可能还想试试这两个伙伴:

代码语言:javascript
复制
library(wordcloud)
comparison.cloud(term.matrix)
commonality.cloud(term.matrix)

票数 3
EN

Stack Overflow用户

发布于 2014-01-05 20:43:08

你没有张贴一个可重复的例子,所以我不能给你代码,只能准确地指出你的资源。使用R进行文本抓取和处理有点困难,但有很多指南。检查thisthis。在最后的步骤中,您可以获得字数统计。

在来自One R Tip A Day的示例中,您将获得d$word的单词列表和d$freq的词频

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20933589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档