我正在使用R tm包,发现几乎tm_map所有删除文本元素的函数都不适用于我.
通过'工作'我的意思是,例如,我将运行:
d <- tm_map(d, removeWords, stopwords('english'))
Run Code Online (Sandbox Code Playgroud)
但是当我跑的时候
ddtm <- DocumentTermMatrix(d, control = list(
weighting = weightTfIdf,
minWordLength = 2))
findFreqTerms(ddtm, 10)
Run Code Online (Sandbox Code Playgroud)
我还是得到:
[1] the this
Run Code Online (Sandbox Code Playgroud)
等等,还有一堆其他的停用词.
我没有看到任何错误表明出现了问题.有谁知道这是什么,以及如何正确地使用停用词删除功能,或者诊断出我的错误是什么?
UPDATE
之前有一个错误,我没有抓到:
Refreshing GOE props...
---Registering Weka Editors---
Trying to add database driver (JDBC): RmiJdbc.RJDriver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): jdbc.idbDriver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): org.gjt.mm.mysql.Driver - Warning, not in CLASSPATH?
Trying to add database driver …Run Code Online (Sandbox Code Playgroud) 我正在从数据框架创建一个Copus.我将其传递VectorSource为只有一列我想用作文本源.然而,这可以找到我需要语料库中的文档ID来匹配数据框中的文档ID.文档ID存储在原始数据框的单独列中.
df <- as.data.frame(t(rbind(c(1,3,5,7,8,10),
c("text", "lots of text", "too much text", "where will it end", "give peas a chance","help"))))
colnames(df) <- c("ids","textColumn")
library("tm")
library("lsa")
corpus <- Corpus(VectorSource(df[["textColumn"]]))
Run Code Online (Sandbox Code Playgroud)
运行此代码会创建一个语料库,但文档ID从1-6开始运行.有没有办法用文件ID 1,3,5,7,8,10创建语料库?
我有一个4列的数据框.第1列由ID组成,第2列由文本组成(每个约100个单词),第3列和第4列包含标签.
现在,我想从文本列中检索单词频率(最常用的单词),并将这些频率作为额外的列添加到数据框中.我希望列名称是单词本身以及文本中填充其频率(从0到...每个文本)的列.
我尝试了tm包的一些功能,但直到现在还不尽如人意.有谁知道如何处理这个问题或从哪里开始?有没有可以完成这项工作的包裹?
id texts label1 label2
Run Code Online (Sandbox Code Playgroud) 我有一个MS Word文档的混合文件类型集合.有些文件是*.doc,有些是*.docx.我正在学习使用tm并且我(或多或少*)使用以下方法成功创建了由*.doc文件组成的语料库:
ex_eng <- Corpus(DirSource('~/R/expertise/corpus/english'),
readerControl=list(reader=readDOC,
language='en_CA',
load=TRUE));
Run Code Online (Sandbox Code Playgroud)
此命令不处理*.docx文件.我认为我需要一个不同的读者.从这篇文章中,我了解到我可以编写自己的文章(很好地理解我目前没有的.docx格式).
readDOC阅读器使用antiword来解析*.doc文件.是否有类似的应用程序将解析*.docx文件?
或者更好的是,是否已经有一种使用tm创建*.docx文件语料库的标准方法?
*或多或少,因为虽然文件进入并且可读,但我对每个文档都会收到此警告: In readLines(y, encoding = x$Encoding) : incomplete final line found on 'path/to/a/file.doc'
我有一个以下格式的数据列:
文本
Hello world
Hello
How are you today
I love stackoverflow
blah blah blahdy
Run Code Online (Sandbox Code Playgroud)
我想通过使用tau包的textcnt()函数来计算此数据集中每行的3克.但是,当我尝试它时,它给了我一个数字向量,其中包含整个列的ngrams.如何将此功能分别应用于我的数据中的每个观察?
我一直在阅读不同的问题/答案(特别是在这里和这里),而没有设法适用于我的情况.
我有一个11,390行矩阵,其中包含属性id,作者,文本,例如:
library(tm)
m <- cbind(c("01","02","03","04","05","06"),
c("Author1","Author2","Author2","Author3","Author3","Auhtor4"),
c("Text1","Text2","Text3","Text4","Text5","Text6"))
Run Code Online (Sandbox Code Playgroud)
我想用它创建一个tm语料库.我可以快速创建我的语料库
tm_corpus <- Corpus(VectorSource(m[,3]))
Run Code Online (Sandbox Code Playgroud)
它终止了我的11,390行矩阵的执行
user system elapsed
2.383 0.175 2.557
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将元数据添加到语料库中时
meta(tm_corpus, type="local", tag="Author") <- m[,2]
Run Code Online (Sandbox Code Playgroud)
执行时间超过15分钟并计数(然后我停止执行).
根据这里的讨论,可能会大大减少处理语料库的时间tm_map; 就像是
tm_corpus <- tm_map(tm_corpus, addMeta, m[,2])
Run Code Online (Sandbox Code Playgroud)
我仍然不知道该怎么做.可能它会是这样的
addMeta <- function(text, vector) {
meta(text, tag="Author") = vector[??]
text
}
Run Code Online (Sandbox Code Playgroud)
首先,如何传递给tm_map值的向量以分配给语料库的每个文本?我应该在循环中调用该函数吗?我应该把tm_map功能包括在内vapply吗?
我有一个包含公司名称的数据字段,例如
company <- c("Microsoft", "Apple", "Cloudera", "Ford")
> company
Company
1 Microsoft
2 Apple
3 Cloudera
4 Ford
Run Code Online (Sandbox Code Playgroud)
等等.
该软件包tm.plugin.webmining允许您从Yahoo!查询数据 基于股票代码的财务:
require(tm.plugin.webmining)
results <- WebCorpus(YahooFinanceSource("MSFT"))
Run Code Online (Sandbox Code Playgroud)
我错过了中间步骤.如何根据公司名称以编程方式查询票证符号?
我在R中有一个向量语料库。我想删除该语料库中出现的所有电子邮件ID。电子邮件ID可以在语料库中的任何位置。说例如
1> "Could you mail me the Company policy amendments at xyz@gmail.com. Thank you."
2> "Please send me an invoice copy at abcdef@yahoo.co.in. Looking forward to your reply".
Run Code Online (Sandbox Code Playgroud)
所以在这里,我只希望从语料库中删除电子邮件ID“ xyz@gmail.com”和“ abcdef@yahoo.co.in”。
我尝试使用:
corpus <- tm_map(corpus,removeWords,"\w*gmail.com\b")
corpus <- tm_map(corpus,removeWords,"\w*yahoo.co.in\b")
Run Code Online (Sandbox Code Playgroud) 我在脚本中使用此函数使用r文本挖掘包(tm)来消除推文中的URL.令我惊讶的是,在清理之后,有一些剩余的"http"单词以及来自URL本身的片段(例如t.co).看起来有些URL被彻底消灭了,而其他一些只是分解成组件.可能是什么原因?注意:我拿了.在t.co网址中.StackOverflow不允许将URL提交到t.co地址.
toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
trumpcorpus1020to1109 <- tm_map(trumpcorpus1020to1109, toSpace, "/")
trumpcorpus1020to1109 <- tm_map(trumpcorpus1020to1109, toSpace, "@")
trumpcorpus1020to1109 <- tm_map(trumpcorpus1020to1109, toSpace, "\\|")
removeURL <- function(x) gsub("(f|ht)tp(s?)://(.*)[.][a-z]+", "", x)
trumpcorpus1020to1109 <- tm_map(trumpcorpus1020to1109, removeURL)
Run Code Online (Sandbox Code Playgroud)
清洁前的文字
VOTE TODAY! Go to https://tco/KPQ5EY9VwQ to find your polling location. We are going to Make America Great Again!… https://tco/KPQ5EY9VwQ
清洁后的文字
vote today go https tco mxraxyntjy find polling location going make america great https tco kpqeyvwq
我正在网上书http://tidytextmining.com/上学习文本挖掘.在第五章:http: //tidytextmining.com/dtm.html#financial
以下代码:
library(tm.plugin.webmining)
library(purrr)
company <- c("Microsoft", "Apple", "Google", "Amazon", "Facebook",
"Twitter", "IBM", "Yahoo", "Netflix")
symbol <- c("MSFT", "AAPL", "GOOG", "AMZN", "FB", "TWTR", "IBM", "YHOO", "NFLX")
download_articles <- function(symbol) {
WebCorpus(GoogleFinanceSource(paste0("NASDAQ:", symbol)))
}
stock_articles <- data_frame(company = company,
symbol = symbol) %>%
mutate(corpus = map(symbol, download_articles))
Run Code Online (Sandbox Code Playgroud)
给我错误:
StartTag: invalid element name
Extra content at the end of the document
Error: 1: StartTag: invalid element name
2: Extra content at the end of the document
Run Code Online (Sandbox Code Playgroud)
任何提示?有人建议删除与"Twitter"相关的公司和符号,但它仍然不起作用并返回相同的错误.提前谢谢了
r ×10
tm ×10
text-mining ×2
apply ×1
docx ×1
n-gram ×1
nlp ×1
stop-words ×1
text ×1
text-parsing ×1
web-mining ×1