我正在跟踪Nathan Dannerman和Richard Heimann撰写的来自R的Social Media Mining中的文本挖掘示例:The Book。使用拉鸣叫后searchTwitter的功能,笔者采用sapply的list提取这样的文字部分:
rstats <- searchTwitter("#rstats", n = 1000)
rstats_list <- sapply(rstats, function (x) x$getText())
整齐地制作一个字符矢量,其中仅包含来自推文的文本部分。什么是getText()?我在任何地方都找不到任何东西-作者没有充分解释。我看了看tm包装文件-什么都没有!我在SO上寻找与此相关的问题- 从推文中获取文本回答者在问与我相同的问题。在Inside-R中,我发现了这一点:http : //www.inside-r.org/r-doc/base / gettext,但与getText。有人可以解释我所缺少的吗?
我想通过以下方式使用removeWords(stopwords("english"))函数:corpus <- tm_map(corpus,removeWords, stopwords("english"))但是有些像"不"这样的词,以及其他我想保留的否定.
是否可以使用该removeWords, stopwords("english")功能但如果指定,则排除该列表中的某些单词?
我怎么能阻止删除"不"例如?
(二级)是否可以将此类控制列表设置为所有"否定"?
我宁愿不使用我感兴趣的停止列表中的单词来创建我自己的自定义列表.
我正在使用 R 和 tm 包进行一些文本分析。我试图根据是否在各个文本文件的内容中找到某个表达式来构建语料库的子集。
我创建了一个包含 20 个文本文件的语料库(感谢 lukeA 提供的这个示例):
reut21578 <- system.file("texts", "crude", package = "tm")
corp <- VCorpus(DirSource(reut21578), list(reader = readReut21578XMLasPlain))
Run Code Online (Sandbox Code Playgroud)
我现在只想选择那些包含字符串“priceduction”的文本文件来创建子集语料库。
检查文档的第一个文本文件,我知道至少有一个文本文件包含该字符串:
writeLines(as.character(corp[1]))
Run Code Online (Sandbox Code Playgroud)
我最好怎样做呢?
我正在使用tm并wordcloud在 R 中执行一些基本的文本挖掘。正在处理的文本包含许多无意义的单词,如 asfdg、aawptkr,我需要过滤这些单词。我找到的最接近的解决方案是使用library(qdapDictionaries)和构建自定义函数来检查单词的有效性。
library(qdapDictionaries)
is.word <- function(x) x %in% GradyAugmented
# example
> is.word("aapg")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
使用的其余文本挖掘是:
curDir <- "E:/folder1/" # folder1 contains a.txt, b.txt
myCorpus <- VCorpus(DirSource(curDir))
myCorpus <- tm_map(myCorpus, removePunctuation)
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus,foo) # foo clears meaningless words from corpus
Run Code Online (Sandbox Code Playgroud)
该问题is.word()适用于处理数据帧,但如何将其用于语料库处理?
谢谢
我正在使用 R 中的 tm-package 创建一个文档术语矩阵,但是我的语料库中的一些单词在这个过程中丢失了。
我将用一个例子来解释。假设我有这个小语料库
library(tm)
crps <- " more hours to my next class bout to go home and go night night"
crps <- VCorpus(VectorSource(crps))
Run Code Online (Sandbox Code Playgroud)
当我DocumentTermMatrix()从 tm-package 使用时,它将返回以下结果:
dm <- DocumentTermMatrix(crps)
dm_matrix <- as.matrix(dm)
dm_matrix
# Terms
# Docs and bout class home hours more next night
# 1 1 1 1 1 1 1 1 2
Run Code Online (Sandbox Code Playgroud)
然而,我想要的(和期望的)是:
# Docs and bout class home hours more next night my go to
# 1 1 1 1 …Run Code Online (Sandbox Code Playgroud) 我有文本语料库。
mytextdata = read.csv(path to texts.csv)
Mystopwords=read.csv(path to mystopwords.txt)
Run Code Online (Sandbox Code Playgroud)
如何过滤此文本?我必须删除:
1) all numbers
2) pass through the stop words
3) remove the brackets
Run Code Online (Sandbox Code Playgroud)
我不会使用dtm,我只需要从数字和停用词中清除此文本数据
样本数据:
112773-Tablet for cleaning the hydraulic system Jura (6 pcs.) 62715
Run Code Online (Sandbox Code Playgroud)
Jura,the 是停用词。
在我期望的输出中
Tablet for cleaning hydraulic system
Run Code Online (Sandbox Code Playgroud) 有没有办法用字符串中的单个数字替换数字范围?数字的范围可以从nn,最可能在1-15左右,也可能是4-10.
范围可以用a)表示 -
a <- "I would like to buy 1-3 cats"
Run Code Online (Sandbox Code Playgroud)
或者用词b)例如:to,bis,jusqu'à
b <- "I would like to buy 1 jusqu'à 3 cats"
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
"I would like to buy 1,2,3 cats"
Run Code Online (Sandbox Code Playgroud)
我发现这个:用一定数量替换数字范围,但在R中无法真正使用它.
我正在尝试tm通过text2vecLDA 实现从-package运行 AssociatedPress 数据集。
我面临的问题是数据类型的不兼容:AssociatedPressis atm::DocumentTermMatrix又是slam::simple_triplet_matrix. text2vec然而期望输入x 到text2vec::lda$fit_transform(x = ...)要Matrix::dgTMatrix。
因此,我的问题是:有没有办法强制DocumentTermMatrix接受text2vec?
最小(失败)示例:
library('tm')
library('text2vec')
data("AssociatedPress", package="topicmodels")
dtm <- AssociatedPress[1:10, ]
lda_model = LDA$new(
n_topics = 10,
doc_topic_prior = 0.1,
topic_word_prior = 0.01
)
doc_topic_distr =
lda_model$fit_transform(
x = dtm,
n_iter = 1000,
convergence_tol = 0.001,
n_check_convergence = 25,
progressbar = FALSE
)
Run Code Online (Sandbox Code Playgroud)
...这使:
base::rowSums(x, na.rm = na.rm, dims = dims, …
对于文本挖掘项目,我必须调查单词列表随着时间的推移的发展。为此,我需要拆分行名称,以便有一列包含公司名称,一列包含年份。这是我的数据框中的摘录:
abs access allow analysis application approach base big business challenge company
Adidas_2010.txt 13 25 26 11 41 132 1 266 13 115 1
Adidas_2011.txt 1 3 1 0 0 8 0 11 2 10 0
Adidas_2012.txt 29 35 37 22 110 181 7 384 31 136 3
Adidas_2013.txt 28 47 38 32 180 184 4 451 30 129 3
Adidas_2014.txt 12 42 38 27 159 207 6 921 32 128 6
Adidas_2016.txt 30 47 50 47 162 251 9 …Run Code Online (Sandbox Code Playgroud) 我正在使用R的tm包来使用字典方法获取字频.我想找到所有以"esque"结尾的单词,无论它们拼写为"abcd-esque","abcdesque"还是"abcd esque"(因为我的语料库中存在所有不同的拼写).如何为此创建正则表达式?这就是我到目前为止所拥有的.任何帮助/提示将不胜感激.
text <- Corpus(DirSource("txt/"))
text <- tm_map(text,tolower)
text <- tm_map(text,stripWhitespace)
dtm.text <- DocumentTermMatrix(text)
list<-inspect(
DocumentTermMatrix(text,list(dictionary = c("rose", "green", "esque")))
)
Run Code Online (Sandbox Code Playgroud) r ×10
tm ×10
text-mining ×3
corpus ×2
tidytext ×2
dataframe ×1
dictionary ×1
regex ×1
replace ×1
split ×1
stop-words ×1
text ×1
text2vec ×1
twitter ×1