标签: text-mining

文本挖掘 R 包和正则表达式来处理替换智能卷曲引号

我有一堆像下面这样的文本,带有不同的智能引号 - 用于单引号和双引号。我所知道的软件包最终所能得到的就是删除这些字符,但我希望将它们替换为正常的引号。

\n\n
textclean::replace_non_ascii("You don\xe2\x80\x98t get \xe2\x80\x9cyour\xe2\x80\x9d money\xe2\x80\x99s worth")\n
Run Code Online (Sandbox Code Playgroud)\n\n

收到的输出:"You dont get your moneys worth"

\n\n

预期输出:"You don\'t get "your" money\'s worth"

\n\n

如果有人有正则表达式来一次替换所有这样的引号,我也将不胜感激。

\n\n

谢谢!

\n

regex r text-mining

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

在 R 中使用 LDA 对新文本进行分类

我第一次尝试使用 R 进行主题建模。所以,这可能是一个非常愚蠢的问题,但我被困住了,谷歌搜索也没有给出明确的答案。

给定一个文档语料库,我使用 LDA 函数来识别语料库中的不同主题。一旦模型拟合完毕,我如何将该模型应用到一批新文档上,以将它们分类到迄今为止发现的主题中?

示例代码:

data("AssociatedPress", package = "topicmodels")

n <- nrow(AssociatedPress)
train_data <- sample(1:n,0.75*n,replace = FALSE)
AssociatedPress_train <- AssociatedPress[(train_data),]
AssociatedPress_test <- AssociatedPress[!(train_data),]

ap_lda <- LDA(AssociatedPress_train, k = 5, control = list(seed = 1234))
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用拟合模型 ap_lda 对 AssociatedPress_test 中的文档进行分类吗?如果是,怎么办?如果没有,为未来的分类创建模型的最佳方法是什么?

r text-mining lda topic-modeling

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

删除 R 中的德语停用词

我有带有评论栏的调查数据。我正在寻找对回复的情绪分析。问题是数据中有很多语言,我不知道如何从集合中消除多种语言停用词

'nps' 是我的数据源,nps$customer.feedback 是评论栏。

首先我对数据进行标记

#TOKENISE
comments <- nps %>% 
  filter(!is.na(cusotmer.feedback)) %>% 
  select(cat, Comment) %>% 
  group_by(row_number(), cat) 

  comments <- comments %>% ungroup()
Run Code Online (Sandbox Code Playgroud)

摆脱停用词

nps_words <-  nps_words %>% anti_join(stop_words, by = c('word'))
Run Code Online (Sandbox Code Playgroud)

然后使用 Stemming 和 get_sentimets("bing") 按情绪显示字数。

 #stemgraph
  nps_words %>% 
  mutate(word = wordStem(word)) %>% 
  inner_join(get_sentiments("bing") %>% mutate(word = wordStem(word)), by = 
  c('word')) %>%
  count(cat, word, sentiment) %>%
  group_by(cat, sentiment) %>%
  top_n(7) %>%
  ungroup() %>%
  ggplot(aes(x=reorder(word, n), y = n, fill = sentiment)) +
  geom_col() +
  coord_flip() +
  facet_wrap( ~cat, scales = …
Run Code Online (Sandbox Code Playgroud)

text r text-analysis text-mining

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

读取txt中文时出错:corpus()仅适用于字符、语料库、语料库、data.frame、kwic对象

我尝试使用R、jiebaR和语料库生成一个词云并获取中文语音的词频,但无法制作语料库。这是我的代码:

library(jiebaR)
library(stringr)
library(corpus)

cutter <- worker()

v36 <- readLines('v36.txt', encoding = 'UTF-8')

seg_x <- function(x) {str_c(cutter[x], collapse = '')}

x.out <- sapply(v36, seg_x, USE.NAMES = FALSE)

v36.seg <- x.out
v36.seg

library(quanteda)

corpus <- corpus(v36.seg)  #Error begins here.
summary(corpus, showmeta = TRUE, 1)
texts(corpus)[1]

tokens(corpus, what = 'fasterword')[1]

tokens <- tokens(v36.seg, what = 'fasterword')
dfm <- dfm(tokens)
dfm


Run Code Online (Sandbox Code Playgroud)

我的文本文件包含以下段落:

在此输入图像描述

当我创建语料库时出现错误。R 返回:

Error in corpus.default(v36.seg) : 
  corpus() only works on character, corpus, Corpus, data.frame, kwic objects.
Run Code Online (Sandbox Code Playgroud)

我不明白为什么文本有问题。如果您能帮我解决问题,我将不胜感激。谢谢。

r corpus text-mining stringr quanteda

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

将单词分类为"好"和"坏"

我有一个域名列表,并希望确定域名的名称,看起来像是色情网站.有什么更好的方法呢?色情域名列表如http://dumpz.org/56957/.此域名可用于教授系统色域应该如何显示.另外我还有其他列表 - http://dumpz.org/56960/ - 此列表的许多域名也是色情片,我想通过名称来确定它们.

python algorithm scala classification text-mining

4
推荐指数
2
解决办法
1346
查看次数

R文本挖掘:计算特定单词在语料库中出现的次数?

我已经看到这个问题用其他语言回答但在R.

[特别是对于R文本挖掘]我有一组从语料库中获得的常用短语.现在我想搜索这些短语出现在另一个语料库中的次数.

有没有办法在TM包中做到这一点?(或另一个相关的包)

例如,假设我有一系列短语,"标签"从CorpusA获得.而另一个语料库,CorpusB,有几千个子文本.我想知道在CorpusB中标签中的每个短语出现了多少次.

一如既往,感谢您的帮助!

r count text-mining phrase

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

在R tm包中,构建语料库FROM Document-Term-Matrix

使用tm包从语料库构建文档术语矩阵很简单.我想从文档术语矩阵构建语料库.

设M是文档集中的文档数.设V是该文档集的词汇表中的术语数.然后,文档 - 术语 - 矩阵是M*V矩阵.

我还有一个长度为V的词汇量向量.词汇量向量中是由文档 - 术语 - 矩阵中的索引表示的词.

从dtm和词汇向量,我想构建一个"语料库"对象.这是因为我想要阻止我的文档集.我手动构建了我的dtm和词汇 - 即从来没有一个tm"语料库"对象代表我的数据集,所以我不能使用该功能,

tm_map(corpus, stemDocument, language="english")
Run Code Online (Sandbox Code Playgroud)

我一直在努力构建一个解决方法,在这里我可以阻止词汇,只保留独特的单词,但是在尝试保持dtm和词汇矢量之间的对应关系时会有些复杂.

理想情况下,最终结果是我的词汇矢量被阻止并且仅包含唯一条目,并且dtm索引对应于词干词汇矢量.如果你能想到其他一些方法,我也会很感激.

如果我可以简单地从我的dtm和词汇矢量构建一个"语料库",干掉语料库,然后转换回dtm和词汇矢量(我已经知道如何进行这些转换),我的麻烦就会得到解决.

如果我能进一步澄清问题,请告诉我.

r corpus text-mining lda tm

4
推荐指数
1
解决办法
4500
查看次数

wget给出'ERROR 403:Forbidden'的替代方案

我正在尝试使用wget从多个Pubmed论文中获取文本,但似乎NCBI网站不允许这样做.任何替代品?

Bernardos-MacBook-Pro:pangenome_papers_pubmed_result bernardo$ wget -i ./url.txt
--2016-05-04 10:49:34--  http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4560400/
Resolving www.ncbi.nlm.nih.gov... 130.14.29.110, 2607:f220:41e:4290::110
Connecting to www.ncbi.nlm.nih.gov|130.14.29.110|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.

--2016-05-04 10:49:34--  http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4547177/
Reusing existing connection to www.ncbi.nlm.nih.gov:80.
HTTP request sent, awaiting response... 403 Forbidden
2016-05-04 10:49:34 ERROR 403: Forbidden.
Run Code Online (Sandbox Code Playgroud)

wget text-mining web-scraping

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

R tm使用gsub替换语料库中的单词

我有一个包含200多个文档的大型文档语料库.正如你可以从这么大的语料库中看到的那样,一些单词拼写错误,以不同的格式使用,依此类推.我已经完成了标准的文本处理,如转换为小写,删除标点符号,词干.在进行分析之前,我试图用一些单词替换正确的拼写并将其标准化.我使用与下面相同的语法完成了100次替换,对于大多数替换,它按预期工作.但是,有些(约5%)不起作用.例如,以下替换似乎只有有限的影响:

docs <- tm_map(docs, content_transformer(gsub), pattern = "medecin|medicil|medicin|medicinee", replacement = "medicine")
docs <- tm_map(docs, content_transformer(gsub), pattern = "eephant|eleph|elephabnt|elleph|elephanyt|elephantant|elephantant", replacement = "elephant")
docs <- tm_map(docs, content_transformer(gsub), pattern = "firehood|firewod|firewoo|firewoodloc|firewoog|firewoodd|firewoodd", replacement = "firewood") 
Run Code Online (Sandbox Code Playgroud)

由于效果有限,我的意思是即使某些替代品正在运作,但有些则不然.例如,尽管尝试替换" elephantant "," medicinee "," firewoodd ",但在我创建DTM(文档术语矩阵)时它们仍然存在.

我不知道为什么会出现这种混合效应.

另外,以下一行是用一些collect的组合替换语料库中的每个单词:

docs <- tm_map(docs, content_transformer(gsub), pattern = "colect|colleci|collectin|collectiong|collectng|colllect|", replacement = "collect")
Run Code Online (Sandbox Code Playgroud)

仅供参考,当我只替换一个单词时,我使用的是语法(注意fixed = TRUE):

docs <- tm_map(docs, content_transformer(gsub), pattern = "charcola", replacement = "charcoal", fixed=TRUE)
Run Code Online (Sandbox Code Playgroud)

单一替换和失败的是:

docs <- tm_map(docs, content_transformer(gsub), pattern = "dogmonkeycat", replacement = "dog monkey cat", fixed=TRUE)
Run Code Online (Sandbox Code Playgroud)

regex r text-mining tm

4
推荐指数
1
解决办法
4998
查看次数

比较数据框中的单词,并计算每对最大单词长度的矩阵

我有一个包含许多唯一单词的数据框。我想在R中创建代码,其中每个单词都将与所有单词进行比较,并创建一个矩阵,其中每个单词对的最大单词的长度。

为了更全面,请考虑以下示例。

test <- c("hello", "hi", "play", "kid") 
Run Code Online (Sandbox Code Playgroud)

我想创建一个矩阵来比较测试中的每个单词,并给出最大单词的长度。

对于前面的示例,我想采用以下矩阵:

       hello  hi play kid
 hello  5     5   5    5

  hi    5     2   4    3

 play   5     4   4    4

  kid   5     3   4    3
Run Code Online (Sandbox Code Playgroud)

我如何在R中做到这一点?

r distance matrix text-mining dataframe

4
推荐指数
1
解决办法
46
查看次数