Как я могу получить список предложений из корпуса с помощью R (и, возможно, пакета koRpus)?

Я новичок в R и пытаюсь использовать его функции для анализа корпуса в португальских текстах. Я использую пакет koRPus. Я пишу приложение Shiny, которое показывает все предложения, в которых встречается искомое слово. Для этого мне нужно составить список всех предложений в корпусе. Прежде всего, я использовал функцию «tokenize», которая создает кадр данных со всеми словами и знаками препинания, что очень полезно для меня:

      TokenizedText <- tokenize(txt = "textfile.txt",
                          fileEncoding = "UTF-8",
                          lang = "pt")
TokenizedTextDF <- TokenizedText@tokens

(Возможно, есть более простой способ, но это сработало для меня.) В этом фрейме данных перечислены все слова в тексте (в столбце «токен»), а в столбце «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], " \\)", "\\)")
}

The str_replace_allнеобходимо правильно расставлять знаки препинания. Это сработало для меня, но мне было интересно, есть ли более простой способ; в конце концов, если функция «токенизации» может разделить предложения и сопоставить каждое слово с номером предложения, это кодирование, которое я написал, очевидно, выполняет «обратную» операцию. Но, поскольку я лингвист с плохой компьютерной подготовкой, я не смог понять, как это делает «токенизация». Я был бы признателен, если бы кто-нибудь помог мне показать более простой способ получения списка предложений или, может быть, указал мне другую библиотеку R, которая лучше соответствовала бы моим потребностям. Благодарю вас!

0 ответов

Другие вопросы по тегам