首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除R语料库中的文本?

问如何删除R语料库中的文本?
EN

Stack Overflow用户
提问于 2019-03-27 23:23:34
回答 1查看 820关注 0票数 0

我使用tm包中的corpus_segment函数将长文档分成几章。

运行模式之后,我仍然会有几个不想要的章节。我想从语料库里取下这些。

我试过在文档中查找这个,但老实说,似乎找不到正确的方法来解决这个问题。

代码语言:javascript
复制
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章我想删除。

代码语言:javascript
复制
          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“呢?

EN

回答 1

Stack Overflow用户

发布于 2019-04-03 04:49:49

虽然我不确定你的regex是否以你想要的方式分割文本,但这并不是你问题的一部分,所以我会告诉你你问了什么。顺便说一下,这涉及加载quanteda包,并且不需要tm或dplyr。

下面是如何实现的。

代码语言:javascript
复制
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()的第二个参数返回逻辑。

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55387991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档