计算R中字符串中的英语单词数
我想数一数一串文本中的英语单词数计算R中字符串中的英语单词数,r,nlp,R,Nlp,我想数一数一串文本中的英语单词数 df.words <- data.frame(ID = 1:2, text = c(c("frog friend fresh frink foot"), c("get give gint gobble"))) df.words ID text 1 1 frog friend fresh
df.words <- data.frame(ID = 1:2,
text = c(c("frog friend fresh frink foot"),
c("get give gint gobble")))
df.words
ID text
1 1 frog friend fresh frink foot
2 2 get give gint gobble
我猜我必须首先根据空格分隔,然后根据字典引用单词?基于@r2evan使用
strsplit()
和使用随机英文word.txt文件字典的建议,示例如下。如果由于unnest
步骤而进行大量比较,此解决方案可能无法很好地扩展
library(dplyr)
library(tidyr)
# text file with 479k English words ~4MB
dict <- read.table(file = url("https://github.com/dwyl/english-words/raw/master/words_alpha.txt"), col.names = "text2")
df.words <- data.frame(ID = 1:2,
text = c(c("frog friend fresh frink foot"),
c("get give gint gobble")),
stringsAsFactors = FALSE)
df.words %>%
mutate(text2 = strsplit(text, split = "\\s")) %>%
unnest(text2) %>%
semi_join(dict, by = c("text2")) %>%
group_by(ID, text) %>%
summarise(count = length(text2))
库(dplyr)
图书馆(tidyr)
#包含479k英文单词~4MB的文本文件
迪克特%
未测试(文本2)%>%
半连接(dict,by=c(“text2”))%>%
分组依据(ID,文本)%>%
摘要(计数=长度(文本2))
输出
ID text count
<int> <chr> <int>
1 1 frog friend fresh frink foot 4
2 2 get give gint gobble 3
ID文本计数
1青蛙朋友新鲜的frink foot 4
2.让gint大口大口喝3
在@r2evan建议使用strsplit()
和使用随机英文word.txt文件字典的基础上,示例如下。如果由于unnest
步骤而进行大量比较,此解决方案可能无法很好地扩展
library(dplyr)
library(tidyr)
# text file with 479k English words ~4MB
dict <- read.table(file = url("https://github.com/dwyl/english-words/raw/master/words_alpha.txt"), col.names = "text2")
df.words <- data.frame(ID = 1:2,
text = c(c("frog friend fresh frink foot"),
c("get give gint gobble")),
stringsAsFactors = FALSE)
df.words %>%
mutate(text2 = strsplit(text, split = "\\s")) %>%
unnest(text2) %>%
semi_join(dict, by = c("text2")) %>%
group_by(ID, text) %>%
summarise(count = length(text2))
库(dplyr)
图书馆(tidyr)
#包含479k英文单词~4MB的文本文件
迪克特%
未测试(文本2)%>%
半连接(dict,by=c(“text2”))%>%
分组依据(ID,文本)%>%
摘要(计数=长度(文本2))
输出
ID text count
<int> <chr> <int>
1 1 frog friend fresh frink foot 4
2 2 get give gint gobble 3
ID文本计数
1青蛙朋友新鲜的frink foot 4
2.让gint大口大口喝3
基本R备选方案,使用EJJ对dict的推荐:
sapply(strsplit(df.words$text,“\\s+”),
函数(z)和(z%在%dict$text2中)
# [1] 4 3
我原以为这在速度上会是一个明显的赢家,但显然一次做一个sum(.%in%)
会有点贵。(使用此数据时速度较慢。)
更快但不一定更简单:
wordsBase R备选方案,使用EJJ对dict的推荐:
sapply(strsplit(df.words$text,“\\s+”),
函数(z)和(z%在%dict$text2中)
# [1] 4 3
我原以为这在速度上会是一个明显的赢家,但显然一次做一个sum(.%in%)
会有点贵。(使用此数据时速度较慢。)
更快但不一定更简单:
单词Yes,分隔(strsplit(,“\\s+”)
),然后对字典进行引用(可能使用%
)中的%进行引用。Yes,分隔(strsplit(,“\\s+”)
)然后对字典进行引用(可能使用%
中的%进行引用)。使用数组很酷,还感谢您确认我对性能的怀疑使用阵列很酷,也感谢您确认我对性能的怀疑