我使用tm包中的corpus_segment函数将长文档分成几章。
运行模式之后,我仍然会有几个不想要的章节。我想从语料库里取下这些。
我试过在文档中查找这个,但老实说,似乎找不到正确的方法来解决这个问题。
library(dplyr)
library(tm)
library(readtext)
frp2005 <- readtext("http://www.nsd.uib.no/polsys/data/filer/parti/H9368.html", encoding = "LATIN1")
tmp <- corpus(frp2005)
docvars(tmp, c("parti", "2005")) <- c("frp", 1)
frp_2005 <- tmp %>%
corpus_segment(
pattern ="\n[A-Z][a-z].*\\w\n.\\w",
valuetype = "regex",
case_insensitive = FALSE)这段代码导致将文档分成20章,其中5章我想删除。
Text Types Tokens Sentences parti 2005
H9368.html.1 132 231 11 frp 1
H9368.html.2 4 4 2 frp 1
H9368.html.3 639 1421 80 frp 1
H9368.html.4 728 1862 113 frp 1
H9368.html.5 496 1217 71 frp 1我该如何从这个语料库中删除"H9368.html.4“呢?
发布于 2019-04-03 04:49:49
虽然我不确定你的regex是否以你想要的方式分割文本,但这并不是你问题的一部分,所以我会告诉你你问了什么。顺便说一下,这涉及加载quanteda包,并且不需要tm或dplyr。
下面是如何实现的。
library("quanteda")
## Package version: 1.4.3
## Parallel computing: 2 of 12 threads used.
## See https://quanteda.io for tutorials and examples.
##
## Attaching package: 'quanteda'
## The following object is masked from 'package:utils':
##
## View
frp2005 <- readtext::readtext("http://www.nsd.uib.no/polsys/data/filer/parti/H9368.html", encoding = "LATIN1")
tmp <- corpus(frp2005)
docvars(tmp, c("parti", "2005")) <- c("frp", 1)
frp_2005 <- tmp %>%
corpus_segment(
pattern = "\n[A-Z][a-z].*\\w\n.\\w",
valuetype = "regex",
case_insensitive = FALSE
)
head(docnames(frp_2005))
## [1] "H9368.html.1" "H9368.html.2" "H9368.html.3" "H9368.html.4"
## [5] "H9368.html.5" "H9368.html.6"然后,只需在要排除的文档名称上使用corpus_subset()并进行排除。对于更一般的匹配,您可以使用grepl()或其他函数,为corpus_subset()的第二个参数返回逻辑。
corpus_subset(frp_2005, !docnames(frp_2005) %in% c("H9368.html.4")) %>%
docnames() %>%
head()
## [1] "H9368.html.1" "H9368.html.2" "H9368.html.3" "H9368.html.5"
## [5] "H9368.html.6" "H9368.html.7"https://stackoverflow.com/questions/55387991
复制相似问题