标签: tm

R DocumentTermMatrix控件列表不起作用,默默地忽略未知参数

我有两个以下DTM-s:

dtm <- DocumentTermMatrix(t)

dtmImproved <- DocumentTermMatrix(t, 
               control=list(minWordLength = 4, minDocFreq=5))
Run Code Online (Sandbox Code Playgroud)

当我实现这个时,我看到两个相同的DTM-s,如果我打开它dtmImproved,就会有3个符号的单词.为什么minWordLength参数不起作用?谢谢!

> dtm
A document-term matrix (591 documents, 10533 terms)

Non-/sparse entries: 43058/6181945
Sparsity           : 99%
Maximal term length: 135 
Weighting          : term frequency (tf)
> dtmImproved
A document-term matrix (591 documents, 10533 terms)

Non-/sparse entries: 43058/6181945
Sparsity           : 99%
Maximal term length: 135 
Weighting          : term frequency (tf)
Run Code Online (Sandbox Code Playgroud)

controls r matrix term tm

8
推荐指数
1
解决办法
5827
查看次数

使用R - "逆"拼写检查器搜索字符向量中单词的拼写错误

我正在对一个大型数据库进行文本挖掘,以创建指示变量,指示观察的注释字段中某些短语的出现.评论由技术人员输入,因此使用的术语始终保持一致.

但是,在某些情况下,技术人员拼错了一个单词,因此我的grepl()函数没有发现观察中发生的短语(尽管是错误的).理想情况下,我希望能够将短语中的每个单词提交给一个函数,这将返回几个常见的拼写错误或所述单词的拼写错误.这样的R函数是否存在?

有了这个,我可以在注释字段中搜索短语的这些拼写错误的所有可能组合,并将其输出到另一个数据帧.这样,我可以根据具体情况查看每个出现的情况,以确定我感兴趣的现象是否实际上由技术人员描述.

我已经用Google搜索了,但只找到了对R.的实际拼写检查包的引用.我要找的是一个"反向"拼写检查器.由于我所寻找的短语数量相对较少,我实际上可以手工检查拼写错误; 我只是认为将这种能力内置到R包中以便将来进行文本挖掘工作会很不错.

感谢您的时间!

spell-checking r text-mining tm

8
推荐指数
1
解决办法
2598
查看次数

stemCompletion无效

我使用tm包进行修复数据的文本分析,将数据读入数据框,转换为Corpus对象,应用各种方法使用lower,stipWhitespace,removestopwords等清理数据.

取回Corpus对象为stemCompletion.

使用tm_map函数执行了stemDocument,我的对象词被阻止了

得到了预期的结果.

当我使用tm_map函数运行stemCompletion操作时,它不起作用并得到以下错误

UseMethod("words")中的错误:没有适用于"字"的方法应用于"字符"类的对象

执行trackback()以显示并获得如下步骤

> traceback()
9: FUN(X[[1L]], ...)
8: lapply(dictionary, words)
7: unlist(lapply(dictionary, words))
6: unique(unlist(lapply(dictionary, words)))
5: FUN(X[[1L]], ...)
4: lapply(X, FUN, ...)
3: mclapply(content(x), FUN, ...)
2: tm_map.VCorpus(c, stemCompletion, dictionary = c_orig)
1: tm_map(c, stemCompletion, dictionary = c_orig)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

tm

8
推荐指数
3
解决办法
8484
查看次数

清洁语料库时,tm包函数未删除引号和连字符

我正在尝试清理语料库,我使用了典型的步骤,如下面的代码:

docs<-Corpus(DirSource(path))
docs<-tm_map(docs,content_transformer(tolower))
docs<-tm_map(docs,content_transformer(removeNumbers))
docs<-tm_map(docs,content_transformer(removePunctuation))
docs<-tm_map(docs,removeWords,stopwords('en'))
docs<-tm_map(docs,stripWhitespace)
docs<-tm_map(docs,stemDocument)
dtm<-DocumentTermMatrix(docs)
Run Code Online (Sandbox Code Playgroud)

然而,当我检查矩阵时,几乎没有带引号的单词,例如:"我们""公司""代码指南" - 已知 - 加速

似乎单词本身在引号内,但当我尝试再次运行removePunctuation代码时,它不起作用.前面还有一些带子弹的话我也无法删除.

任何帮助将不胜感激.

r text-mining tm

8
推荐指数
1
解决办法
4305
查看次数

转换删除 R 中的文档错误

每当我运行此代码时,tm_map 行都会给我警告消息作为警告消息:在 tm_map.SimpleCorpus(docs, toSpace, "/") 中:转换丢弃文档

texts <- read.csv("./Data/fast food/Domino's/Domino's veg pizza.csv",stringsAsFactors = FALSE)
        docs <- Corpus(VectorSource(texts))
        toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
        docs <- tm_map(docs, toSpace, "/")
        docs <- tm_map(docs, toSpace, "@")
        docs <- tm_map(docs, toSpace, "\\|")
        docs <- tm_map(docs, content_transformer(tolower))
        docs <- tm_map(docs, removeNumbers)
        docs <- tm_map(docs, removeWords, stopwords("english"))
        docs <- tm_map(docs, removeWords, c("blabla1", "blabla2")) 
        docs <- tm_map(docs, removePunctuation)
        docs <- tm_map(docs, stripWhitespace)
Run Code Online (Sandbox Code Playgroud)

r tm

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

R tm包创建了几乎常用术语的矩阵

我在R中termDocumentMatrix创建了一个tm包.

我正在尝试创建一个具有50个最常出现的术语的矩阵/数据帧.

当我尝试转换为矩阵时,我收到此错误:

> ap.m <- as.matrix(mydata.dtm)
Error: cannot allocate vector of size 2.0 Gb
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用Matrix包转换为稀疏矩阵:

> A <- as(mydata.dtm, "sparseMatrix") 
Error in as(from, "CsparseMatrix") : 
  no method or default for coercing "TermDocumentMatrix" to "CsparseMatrix"
> B <- Matrix(mydata.dtm, sparse = TRUE)
Error in asMethod(object) : invalid class 'NA' to dup_mMatrix_as_geMatrix
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法访问tdm的不同部分:

> freqy1 <- data.frame(term1 = findFreqTerms(mydata.dtm, lowfreq=165))
> mydata.dtm[mydata.dtm$ Terms %in% freqy1$term1,]
Error in seq_len(nr) : argument must be coercible to non-negative integer
Run Code Online (Sandbox Code Playgroud)

这是其他一些信息: …

r text-mining tm term-document-matrix

7
推荐指数
1
解决办法
5285
查看次数

如何编写自定义removePunctuation()函数来更好地处理Unicode字符?

在tm文本挖掘R包的源代码中,在文件transform.R中,有一个removePunctuation()函数,当前定义为:

function(x, preserve_intra_word_dashes = FALSE)
{
    if (!preserve_intra_word_dashes)
        gsub("[[:punct:]]+", "", x)
    else {
        # Assume there are no ASCII 1 characters.
        x <- gsub("(\\w)-(\\w)", "\\1\1\\2", x)
        x <- gsub("[[:punct:]]+", "", x)
        gsub("\1", "-", x, fixed = TRUE)
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要从科学会议中解析并挖掘一些摘要(从他们的网站上获取为UTF-8).摘要包含一些需要删除的unicode字符,特别是在字边界处.有通常的ASCII标点字符,但也有一些Unicode破折号,Unicode引号,数学符号......

文本中还有URL,标点符号中需要保留字符标点符号.tm的内置removePunctuation()功能太激进了.

所以我需要一个自定义removePunctuation()功能来根据我的要求进行删除.

我的自定义Unicode函数现在看起来像这样,但它不能按预期工作.我很少使用R,因此在R中完成任务需要一些时间,即使对于最简单的任务也是如此.

我的功能:

corpus <- tm_map(corpus, rmPunc =  function(x){ 
# lookbehinds 
# need to be careful to specify fixed-width conditions 
# so that it can be used in lookbehind

x <- …
Run Code Online (Sandbox Code Playgroud)

unicode r text-mining tm

7
推荐指数
1
解决办法
5092
查看次数

如何从R中的tm包将DocumentTermMatrix函数的字符向量转换为语料库输入?

我是新来的tm包装.我想使用DocumentTermMatrix函数来创建DT-Matrix以进行进一步的文本挖掘分析,但我能够为该函数创建propoer输入.

到目前为止,我的数据输入是以这样的字符向量的格式,并尝试使用as.VCorpus函数,但它看起来像它不起作用.代码如下:

> x <- as.VCorpus(sekcja_link$slowa_kluczowe_2)
Error in UseMethod("as.VCorpus") : 
  no applicable method for 'as.VCorpus' applied to an object of class "character"
> head(sekcja_link$slowa_kluczowe_2)
[1] "mandat policja zima kara"                                                                                 
[2] "sprzeda? samochodów w 2014 rok wzrost sprzeda?y utrata prawa jazda wyprzedzać trzeci poduszka powietrzny"
[3] "kobieta 40stce powinien rusza? walczyć ?ycie ewa minge kasia czaplejewicz fitness"                       
[4] "e booki ksi??ka elektroniczny papierowy czytnik amazon kindle ksi??ki rynek booków handel i us?ugi"       
[5] "gra monopoly …
Run Code Online (Sandbox Code Playgroud)

r tm

7
推荐指数
1
解决办法
8645
查看次数

如何使用R提取包含特定人名的句子

我使用R 从文本中提取包含特定人名的句子,这里是一个示例段落:

作为蒂宾根的改革者,他接受了由他的叔叔Johann Reuchlin推荐的Martin Luther对维滕贝格大学的电话.Melanchthon在21岁时成为维滕贝格的希腊语教授.他研究了圣经,特别是保罗和福音派教义.他作为旁观者出席了莱比锡(1519)的辩论,但参与了他的评论.约翰·埃克(Johann Eck)攻击了他的观点,梅兰克顿(Melanchthon)在他的Defensio对手Johannem Eckium的基础上回复了圣经的权威.

在这个短段中,有几个人的名字,如: Johann Reuchlin,Melanchthon,Johann Eck.在openNLP软件包的帮助下,可以正确地提取和识别Martin Luther,PaulMelanchthon三个人的名字.然后我有两个问题:

  1. 我怎么能提取包含这些名字的句子
  2. 由于命名实体识别器的输出不是那么有希望,如果我为每个名称添加"[[]]",如[[Johann Reuchlin]],[[Melanchthon]],我怎样才能提取包含这些名称表达式的句子 [[ A]],[[B]] ......?

regex r opennlp tm

7
推荐指数
1
解决办法
2113
查看次数

从文本字符串中获取唯一的字符串数

我想知道如何从文本字符串中获取唯一的字符数.假设我正在寻找重复单词中的苹果,香蕉,菠萝,葡萄的重复计数.

 A<- c('I have a lot of pineapples, apples and grapes. One day the pineapples person gave the apples person two baskets of grapes')

 df<- data.frame(A) 
Run Code Online (Sandbox Code Playgroud)

假设我想获得文本中列出的所有水果的独特计数.

  library(stringr)
  df$fruituniquecount<- str_count(df$A, "apples|pineapples|grapes|bananas")
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但我得到了所有的计数.我希望答案为'3'.请提出您的想法.

r stringr tm dplyr

7
推荐指数
1
解决办法
170
查看次数