标签: tm

R tm removeWords停用词不会删除停用词

我正在使用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)

nlp r stop-words tm

2
推荐指数
1
解决办法
2万
查看次数

如何在语料库中手动设置文档ID?

我正在从数据框架创建一个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创建语料库?

r tm

2
推荐指数
1
解决办法
2376
查看次数

R文本挖掘 - 如何将R数据框列中的文本更改为具有字频率的多个列?

我有一个4列的数据框.第1列由ID组成,第2列由文本组成(每个约100个单词),第3列和第4列包含标签.

现在,我想从文本列中检索单词频率(最常用的单词),并将这些频率作为额外的列添加到数据框中.我希望列名称是单词本身以及文本中填充其频率(从0到...每个文本)的列.

我尝试了tm包的一些功能,但直到现在还不尽如人意.有谁知道如何处理这个问题或从哪里开始?有没有可以完成这项工作的包裹?

id  texts   label1    label2
Run Code Online (Sandbox Code Playgroud)

r text-mining tm

2
推荐指数
1
解决办法
3622
查看次数

如何使用tm创建*.docx文件的语料库?

我有一个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'

r docx tm

2
推荐指数
1
解决办法
4056
查看次数

计算R中每行文本数据的ngrams

我有一个以下格式的数据列:

文本

Hello world  
Hello  
How are you today  
I love stackoverflow  
blah blah blahdy  
Run Code Online (Sandbox Code Playgroud)

我想通过使用tau包的textcnt()函数来计算此数据集中每行的3克.但是,当我尝试它时,它给了我一个数字向量,其中包含整个列的ngrams.如何将此功能分别应用于我的数据中的每个观察?

text r text-parsing n-gram tm

2
推荐指数
1
解决办法
5471
查看次数

如何使用tm_map向tm Corpus对象添加元数据

我一直在阅读不同的问题/答案(特别是在这里这里),而没有设法适用于我的情况.

我有一个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吗?

r apply tm

2
推荐指数
1
解决办法
4830
查看次数

以编程方式在R中查找股票代码

我有一个包含公司名称的数据字段,例如

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 web-mining tm

2
推荐指数
1
解决办法
2377
查看次数

从语料库中删除电子邮件ID

我在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

2
推荐指数
1
解决办法
1090
查看次数

TM包中的gsub函数删除URLS不会删除整个字符串

我在脚本中使用此函数使用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

r tm

2
推荐指数
1
解决办法
1598
查看次数

使用GoogleFinanceSource函数使用tm.plugin.webmining包进行文本挖掘

我正在网上书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 text-mining tm

2
推荐指数
1
解决办法
1006
查看次数

标签 统计

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