小编RUs*_*ser的帖子

用R文本分析进行干扰

我正在对TM包进行大量分析.我最大的问题之一是与词干和词干变换有关.

假设我有几个与会计相关的术语(我知道拼写问题).
在阻止后我们有:

accounts   -> account  
account    -> account  
accounting -> account  
acounting  -> acount  
acount     -> acount  
acounts    -> acount  
accounnt   -> accounnt  
Run Code Online (Sandbox Code Playgroud)

结果:3个条款(帐户,帐户,帐户)我希望1(帐户),因为所有这些都与同一个词有关.

1)纠正拼写是一种可能性,但我从来没有在R中尝试过.这是否可能?

2)另一种选择是建立一个参考列表,即账户=(账户,账户,会计,会计,账户,账户,账户),然后将所有事件替换为主条款.我怎么会在R?

再一次,任何帮助/建议将不胜感激.

text r stemming tm

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

使用R语料库保留文档ID

我搜索了stackoverflow和web,只能找到部分解决方案,或者由于TM或qdap的变化而找不到的部分解决方案.问题如下:

我有一个数据帧:ID文本(简单文档ID /名称,然后一些文本)

我有两个问题:

第1部分:如何创建tdm或dtm并维护文档名称/ ID?它只在inspect(tdm)上显示"character(0)".
第2部分:我想只保留一个特定的术语列表,即删除自定义停用词的相反.我希望这发生在语料库中,而不是tdm/dtm.

对于第2部分,我使用了一个我在这里得到的解决方案:如何在tm字典中实现邻近规则来计算单词?

这个发生在tdm部分!对于使用"tm_map(my.corpus,keepOnlyWords,customlist)"之类的东西,第2部分是否有更好的解决方案?

任何帮助将不胜感激.非常感谢!

text r corpus text-mining tm

10
推荐指数
2
解决办法
6912
查看次数

使用 R 测试日期是否出现在多个日期范围内

我有一个具有多个日期范围的数据框(准确地说是 45):

Range  Start       End
1      2014-01-01  2014-02-30
2      2015-01-10  2015-03-30
3      2016-04-20  2016-10-12
...    ...         ...
Run Code Online (Sandbox Code Playgroud)

他们永远不会重叠

我还有一个包含各种事件日期(200K+)的数据框:

Event  Date
1      2014-01-02
2      2014-03-20
3      2015-04-01
4      2016-08-18
...    ...
Run Code Online (Sandbox Code Playgroud)

我想测试这些日期是否在以下任何范围内:

Event  Date        InRange
1      2014-01-02  TRUE
2      2014-03-20  FALSE
3      2015-04-01  FALSE
4      2016-08-18  TRUE
...
Run Code Online (Sandbox Code Playgroud)

执行此测试的最佳方法是什么?我查看了 lubridate 的betweeninterval函数以及各种 Stackoverflow 问题,但找不到好的解决方案。

r date intervals date-arithmetic

5
推荐指数
1
解决办法
1535
查看次数

使用R从文本字符串中提取字向量数组的更快的解决方案

我正在循环文本以查找和计算各种词典中的特定单词.我使用两个FOR循环,它们非常慢并且需要数天才能完成.下面的可重现代码:

library(stringr)

#Sample data
tweets=data.frame(id=c(1,2,3),text=c("This is a tweet that contains word1",
                                     "And here you can find word1 and word2 word2",
                                     "And here is only one word3 and one word3a"))

words=data.frame(id=c(1,2,3),word=c("word1","word2","word3"))

for(i in 1:nrow(tweets)){
  for(j in 1:nrow(words)){
    term = paste("\\<",words[j,2],"\\>", sep="")
    if (str_count(tweets[i,2], term) != 0) {
     tmp <- data.frame(id=tweets[i,1],termfound=words[j,2],count=str_count(tweets[i,2], term), row.names=NULL)
     message("ID ",tweets[i,1]," - Word '",words[j,2],"' found ",str_count(tweets[i,2], term)," times")
     #sqlSave(myconn, tmp, "DataTable", append=T, rownames=F)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:
我有大约1M行文本和大约25,000个单词.
Message行仅用于调试.
最终值写入SQL - 行注释掉,因为它不可重现.

有什么方法可以改进吗?我在想一个APPLY函数???

干杯B.

string performance full-text-search for-loop r

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