标签: tidytext

整洁的文本格式内的单词替换

嗨,我正在使用tidy_text格式,我试图将字符串"电子邮件"和"电子邮件"替换为"电子邮件".

set.seed(123)
terms <- c("emails are nice", "emailing is fun", "computer freaks", "broken modem")
df <- data.frame(sentence = sample(terms, 100, replace = TRUE))
df
str(df)
df$sentence <- as.character(df$sentence)
tidy_df <- df %>% 
unnest_tokens(word, sentence)

tidy_df %>% 
count(word, sort = TRUE) %>% 
filter( n > 20) %>% 
mutate(word = reorder(word, n)) %>% 
ggplot(aes(word, n)) +
geom_col() +
xlab(NULL) + 
coord_flip()
Run Code Online (Sandbox Code Playgroud)

这工作正常,但当我使用:

 tidy_df <- gsub("emailing", "email", tidy_df)
Run Code Online (Sandbox Code Playgroud)

替换单词并再次运行条形图我收到以下错误消息:

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

有没有人知道如何在不改变tidy_text的结构/类的情况下,在整洁的文本格式中轻松替换单词?

r text-mining tidytext

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

从数据框中删除停用词

我的数据已经在一个数据框中,每行一个令牌。我想过滤掉包含停用词的行。

数据框看起来像:

docID <- c(1,2,2)
token <- c('the', 'cat', 'sat')
count <- c(10,20,30)
df <- data.frame(docID, token, count)
Run Code Online (Sandbox Code Playgroud)

我试过下面的,但得到一个错误:

library(tidyverse)
library(tidytext)
library(topicmodels)
library(stringr)
data('stop_words')
clean_df <- df %>%
  anti_join(stop_words, by=df$token)
Run Code Online (Sandbox Code Playgroud)

错误:

Error: `by` can't contain join column `the`, `cat`, `sat` which is missing from LHS
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

r tidyr tidyverse tidytext

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

使用tidytext和扫帚,但没有找到LDA_VEM整洁

tidytext书中有一些示例,主题模型更加整洁:

library(tidyverse)
library(tidytext)
library(topicmodels)
library(broom)

year_word_counts <- tibble(year = c("2007", "2008", "2009"),
+                            word = c("dog", "cat", "chicken"),
+                            n = c(1753L, 1157L, 1057L))

animal_dtm <- cast_dtm(data = year_word_counts, document = year, term = word, value = n)

animal_lda <- LDA(animal_dtm, k = 5, control = list( seed = 1234))

animal_lda <- tidy(animal_lda, matrix = "beta")

# Console output
Error in as.data.frame.default(x) : 
  cannot coerce class "structure("LDA_VEM", package = "topicmodels")" to a data.frame
In addition: Warning message:
In tidy.default(animal_lda, matrix …
Run Code Online (Sandbox Code Playgroud)

r broom tidytext

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

安装软件包tidytext-R时出错

我尝试安装软件包tidytext,但出现以下错误:

install.packages("tidytext")
Installing package into ‘\\dcn4pfsh404/home_8/TUT/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.3/tidytext_0.1.2.zip'
Content type 'application/zip' length 2755455 bytes (2.6 MB)
downloaded 2.6 MB

Error in install.packages : missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

谁能帮助我了解我所缺少的吗?谢谢

r tidytext

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

使用 Tidytext 进行文本挖掘:pairwise_count 和 pairwise_cor 问题

我正在试验 Tidytext(使用 R 进行文本挖掘),我想使用 widyr 库中的 pairwise_count 和 pairwise_cor 函数。我的语料库来自一个经过处理的文本文件。

library(readr)
library(dplyr)
library(tidytext)
library(widyr)

set.seed(2017)

Korpus <- read_file("/home/knecht/korpus.res")
print(Korpus)

Korpus_DF <-data_frame(document= 1, text=Korpus)

spon_words <- Korpus_DF %>%
  unnest_tokens(word, text)
print(spon_words)

spon_words %>%
  count(word, sort=TRUE)

word_cors <- spon_words %>%
  group_by(word) %>%
 filter(n()>= 10) %>%
  pairwise_cor(word, document, sort = TRUE, upper= FALSE)
word_cors

pair_test <- spon_words %>%
  pairwise_count(word, document)
print(pair_test)
Run Code Online (Sandbox Code Playgroud)

我想,我没有得到正确的结果,因为语料库包含多个短语,如“spiegel online”或“spiegel plus”短语,但这些短语没有出现在结果表中:

> library(readr)

> library(dplyr)

> library(tidytext)

> library(widyr)

> set.seed(2017)

> Korpus <- read_file("/home/knecht/korpus.res")

> print(Korpus)
[1] "29.12.2017 17:24:57 …
Run Code Online (Sandbox Code Playgroud)

r text-mining tidytext

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

仅计算字符串中的字母数字字符

给定字符串,"This has 4 words!"我只想计算字母和数字。我想排除空格和标点符号。因此,上面的字符串应该返回13

我不知道为什么,但我无法为 R 得到这个。

text r tidytext

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

从公式中提取所有唯一变量

我将lm()模型的公式存储为chr变量,并尝试将公式中的所有变量提取到向量中。

为了使其可复制,使用mtcars变量:mpg, cyl, 和drat(并且我的公式在示例中具有转换等)

model_string <- "mpg ~ cyl + I(abs(0.5-drat)) + I((0.5 - drat)^2)"
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

vars_used <- c("mpg", "cyl", "drat")
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所做的是:

library(tidyverse)
vars_used <- model_string %>% 
  str_extract_all(pattern = "\\w+") %>% 
  pluck(1) %>% 
  str_remove_all(pattern = "[0-9]")

vars_used

Run Code Online (Sandbox Code Playgroud)
[1] "mpg"  "cyl"  "I"    "abs"  ""     ""     "drat" "I"    ""     ""     "drat" ""    
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来完成我想要做的事情,特别是使用 tidytext?

我仍然需要删除向量中的空字符串,并删除重复项。

regex r tidyverse tidytext

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

用tidytext删除停用词

使用tidytext,我有这个代码:

data(stop_words)
tidy_documents <- tidy_documents %>%
      anti_join(stop_words)
Run Code Online (Sandbox Code Playgroud)

我希望它使用包中内置的停用词将名为tidy_documents的数据帧写入同名的数据帧中,但如果它们在stop_words中,则删除单词.

我收到此错误:

错误:没有常见变量.请指定by参数.追溯:

1. tidy_documents %>% anti_join(stop_words)
2. withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
3. eval(quote(`_fseq`(`_lhs`)), env, env)
4. eval(expr, envir, enclos)
5. `_fseq`(`_lhs`)
6. freduce(value, `_function_list`)
7. withVisible(function_list[[k]](value))
8. function_list[[k]](value)
9. anti_join(., stop_words)
10. anti_join.tbl_df(., stop_words)
11. common_by(by, x, y)
12. stop("No common variables. Please specify `by` param.", call. = FALSE)
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse tidytext

0
推荐指数
2
解决办法
7175
查看次数

使用 unnest_tokens() 按特定字符拆分列?

我正在处理一列格式为字符串的 url 向量,每个 url 用逗号分隔:

column_with_urls

["url.a, url.b, url.c"]

["url.d, url.e, url.f"]

我想使用tidytext::unnest_tokens()R 函数将它们分成每行一个 url(尽管我对其他基于 R 的解决方案持开放态度)。我已经阅读了此处的文档但我不知道是否可以/建议输入单个字符进行拆分。

我的想法是这样的unnest_tokens(url, column_with_urls, by = ',')。有没有办法指定那种论点和/或解决这个问题的更好方法?

我想要的输出是一个数据框,每行一个 url,像这样(以及复制到每一行的原始行的所有其他数据):

网址

网址.a

网址.b

网址.c

...

提前致谢。

r tidytext

0
推荐指数
1
解决办法
1515
查看次数

如何修复“没有名为textdata的程序包”错误?

我正在尝试在R中运行情感分析。我已经安装了tidytext,它与所有其他软件包一起位于正确的库中。

但是,当我跑步时

get_sentiments("afinn") 

Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in loadNamespace(name) : there is no package called ‘textdata’
Run Code Online (Sandbox Code Playgroud)

有关如何修复的任何建议?

r sentiment-analysis tidytext

0
推荐指数
1
解决办法
90
查看次数

标签 统计

r ×10

tidytext ×10

tidyverse ×3

text-mining ×2

broom ×1

dplyr ×1

regex ×1

sentiment-analysis ×1

text ×1

tidyr ×1