0

我是 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 库,我将不胜感激。谢谢!

4

0 回答 0