我是 R 的新手,我正在尝试使用它的功能在葡萄牙语文本中进行语料库分析。我正在使用 koRpus 包。我正在编写一个闪亮的应用程序,它显示出现搜索词的所有句子。为此,我需要列出语料库中的所有句子。首先,我使用了“tokenize”函数,它创建了一个包含所有单词和标点符号的数据框,这对我来说非常有用:
TokenizedText <- tokenize(txt = "textfile.txt",
fileEncoding = "UTF-8",
lang = "pt")
TokenizedTextDF <- TokenizedText@tokens
(也许有一种更简单的方法,但这对我有用。)这个数据框列出了文本中的所有单词(在“token”列中),并且在“sntc”列中,它列出了一个数字,即出现这个词的句子。现在我需要一个文本中所有句子的列表,用“sntc”列中的相同数字编号。我设法使用“for”循环来实现这一点:
ListOfSentences <- NULL
for (val in TokenizedTextDF$sntc) {
ListOfSentences[val] <- list(paste(c(TokenizedTextDF$token[TokenizedTextDF$sntc == val]), collapse = " "))
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " ,", ",")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " \\.", "\\.")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], "\\[ ", "\\[")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " \\]", "\\]")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " ;", ";")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], "\\( ", "\\(")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " :", ":")
ListOfSentences[val] <- str_replace_all(ListOfSentences[val], " \\)", "\\)")
}
str_replace_all
正确间隔标点字符是必要的。这对我有用,但我想知道是否有更简单的方法;毕竟,如果“tokenize”功能可以拆分句子并将每个单词与一个句子编号匹配,那么我写的这个编码显然是在做一个“反向”操作。但是,由于我是一个计算背景较差的语言学家,我无法理解“标记化”是如何做到这一点的。如果有人可以帮助我展示一种更简单的方法来获取句子列表,或者可能为我指出另一个更适合我需要的 R 库,我将不胜感激。谢谢!