本文档展示了计算文章的无聊程度过程,其基本思路是,首先列举一些在无聊文章中经常出现的词;将文章拆分成\(n\)个句子;查看这\(n\)个句子中,有多大比例的句子包含那些无聊的词。
。
或者;
为标识将文档句子进行分割bullshit.txt
)bullshit.txt
)进行对照这里使用的待识别文档来自知乎:https://www.zhihu.com/question/476429482/answer/2098470755
bullshit.txt
是我自己总结的一些词汇,每行一个。
library(chinese.misc)
library(tidyverse)
mytxt <- "mytext.txt" # 文档未知
# 读取文档(按段落读取)
mytext <- readLines(mytxt) %>%
as_tibble() %>%
# 分割字符向量,按照句号和叹号
mutate(value = str_split(value, "。|!")) %>%
unnest(value)
head(mytext)
## # A tibble: 6 × 1
## value
## <chr>
## 1 ""
## 2 "刚才,李总、张总的发言,高屋建瓴,很透彻,很深刻,对我有极大的启发,我记了满…
## 3 "希望大家下去之后,深刻领会,认真落实,全力推动XXX这项工作的深入开展,努力开…
## 4 "下面,围绕XXX工作,我再简单的讲几句:第一,大家要充分提高认识,站在全局和战…
## 5 "万事开头难,好的开端是成功的一半"
## 6 "但同时,我们也要清醒的认识到,XXX工作在XXX等几个方面还有进一步提升的空间,还…
# 剔除掉那些过短的句子,也就是一个逗号都没有的句子
mytext <- mytext %>%
mutate(comma = str_detect(value, pattern = ",")) %>%
filter(comma == T) %>%
select(-comma) %>%
# 然后给句子编号
mutate(sentence = 1:nrow(.)) %>%
select(sentence, value)
head(mytext)
## # A tibble: 6 × 2
## sentence value
## <int> <chr>
## 1 1 刚才,李总、张总的发言,高屋建瓴,很透彻,很深刻,对我有极大的启发,…
## 2 2 希望大家下去之后,深刻领会,认真落实,全力推动XXX这项工作的深入开展…
## 3 3 下面,围绕XXX工作,我再简单的讲几句:第一,大家要充分提高认识,站在…
## 4 4 万事开头难,好的开端是成功的一半
## 5 5 但同时,我们也要清醒的认识到,XXX工作在XXX等几个方面还有进一步提升的…
## 6 6 公司各级员工,要切实提高自己的站位,克服本位主义思想,不要打小算盘,…
library(jiebaR)
# 我们自己追加的分词
mycutter <- worker(user = "bullshit.txt`")
# 进行分词作业
myresult <- mytext %>%
mutate(
# 先分词
value = seg_file(value, from = "v", mycutter = mycutter),
# 然后再拆成向量
value = str_split(value, pattern = " ")
) %>%
unnest(value)
head(myresult)
## # A tibble: 6 × 2
## sentence value
## <int> <chr>
## 1 1 刚才
## 2 1 李总
## 3 1 张
## 4 1 总
## 5 1 的
## 6 1 发言
# 读取垃圾词
bullshit_words <- readLines("bullshit.txt")
## Warning in readLines("bullshit.txt"): 读'bullshit.txt'时最后一行未遂
# 识别垃圾词
myresult <- myresult %>%
mutate(bullshit = value %in% bullshit_words) %>%
group_by(sentence) %>%
summarise(n_word = n(),
bull_word = sum(bullshit))
head(myresult)
## # A tibble: 6 × 3
## sentence n_word bull_word
## <int> <int> <int>
## 1 1 22 0
## 2 2 20 1
## 3 3 45 2
## 4 4 8 0
## 5 5 33 2
## 6 6 21 0
# 查看含有垃圾词的句子所含的比例
prop <- (sum((myresult$bull_word != 0)) * 100 / length(myresult$bull_word)) %>% round(2) # 百分比
nr <- nrow(mytext) # 句子总数
nl <- length(bullshit_words) # 设定的垃圾词数
str_glue("所提供文章{mytxt}:\n共识别出{nr}个有效句子,其中{prop}%的句子包含无聊词 \n提示:您一共设定了{nl}个无聊词!")
## 所提供文章mytext.txt:
## 共识别出26个有效句子,其中61.54%的句子包含无聊词
## 提示:您一共设定了264个无聊词!