如何使用R删除.txt文件中包含的一半单词?



我的目的是将文本的前半部分与完整的文本进行比较。我已经使用全文进行了多次分析,我只是在readtext -函数的帮助下将全文加载到r中(以及一些附加变量(如会话号)的函数)。同样,我使用相同的函数再次加载文本,现在想要删除所述文本的后半部分。

我的想法是首先计算每个字符串中的单词数,我使用:

dataframe$numwords <- str_count (dataframe$text, "\w+")

下一步是,使用for循环删除一半的"numwords"从文本列中的每一行获取。然而,我不知道该怎么做。还有更好的办法吗?

我的数据帧看起来像这样(注意:我的数据帧中的文本平均每行包含大约6000个单词)

<表类>文本session_nopatient_codenumwordstbody><<tr>我今天感觉不舒服。052006 x6我的焦虑越来越严重了。为什么?052007 x6我总是做错事102006X8

下面,我们使用strsplit()将文本列拆分为单词。

然后我们使用lapply()来计算每个文本的一半有多少个单词。

最后,我们只返回每个文本的前半部分,但在此过程中我们丢失了所有标点符号。

lapply(strsplit(dataframe$text, split = "\W+"), function(words) {
half <-  round(length(words) / 2, 0)
paste(words[1:half], collapse = " ")
})

编辑

如果我们想保留标点符号,那么我们需要做一些调整。

我们的regex没有保留分隔符,但是次要的作用是保留一些空格作为"单词",所以我们必须删除它们。我们还使用trim_ws()来删除尾随空格。

lapply(strsplit(dataframe$text, split = "(?<=\W)", perl = TRUE), function(words) {
words <- words[words != " "]
half <-  round(length(words) / 2, 0)
new_text <- paste(words[1:half], collapse = "")
trimws(new_text)
})

相关内容

最新更新