Удалить стоп-слова из многоязычного текста

Я выполняю текстовый и тональный анализ многоязычных текстовых файлов из сектора здравоохранения и хочу удалить стоп-слова сразу на всех языках. Я не хочу писать название каждого языка в коде, чтобы удалить стоп-слова. Есть ли способ сделать это быстро?

Вот мой код: Общее количество файлов 596

files = list.files(path = getwd(), pattern = "txt", all.files = FALSE,
                   full.names = TRUE, recursive = TRUE)
txt = {}
for (i in 1:596) 
  try( 
    {
      txt[[i]] <- readLines(files[i], warn = FALSE) 
  
  filename <- txt[[i]]
  filename <- trimws(filename)
  corpus <- iconv(filename, to = "utf-8")
  corpus <- Corpus(VectorSource(corpus))
  
  # Clean Text
  corpus <- tm_map(corpus, removePunctuation)
  corpus <- tm_map(corpus, removeNumbers)
  cleanset <- tm_map(corpus, removeWords, stopwords("english"))
  cleanset <- tm_map(cleanset, removeWords, stopwords("spanish"))
  cleanset <- tm_map(cleanset, content_transformer(tolower))
  cleanset <- tm_map(cleanset, stripWhitespace)
  
  # Remove spaces and newlines
  cleanset <- tm_map("\n", " ", cleanset)
  cleanset <- tm_map("^\\s+", "", cleanset)
  cleanset <- tm_map("\\s+$", "", cleanset)
  cleanset <- tm_map("[ |\t]+", " ", cleanset)

  }, silent = TRUE) 

Вы имеете в виду, что просто хотите удалить все стоп-слова со всех языков, независимо от того, есть ли эти языки в вашем корпусе?

JBGruber 23.04.2022 08:55

Вы знаете какие языки? Потому что removeWords вставляет стоп-слова вместе, и использование всех стоп-слов из пакета стоп-слов приведет к ошибкам, потому что там есть нелатинские языки.

phiver 23.04.2022 10:54
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
2
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте просторный, если он содержит более 15 языковых моделей со стоп-словами. Для языка R спацир.

I want to remove stopwords from all the languages at once.

Объедините результаты каждого вызова stopwords(cc) и передайте их одному вызову tm_map(corpus, removeWords, allStopwords).

I don't want to write the name of every language in the code to remove the stopwords

Вы можете использовать stopwords_getlanguages(), чтобы получить список всех поддерживаемых языков и сделать это в виде цикла. См. пример на https://www.rdocumentation.org/packages/stopwords/versions/2.3

Как бы то ни было, я думаю, что это (с использованием стоп-слов всех языков) плохая идея. То, что является стоп-словом в одном языке, может быть словом высокой информации в другом языке. Например. просто бегло просматривая https://github.com/stopwords-iso/stopwords-es/blob/master/stopwords-es.txt я заметил "embargo", "final", "mayor", "salvo", "sea", которых нет в списке английских стоп-слов, и которые могут нести информацию.

Конечно, это зависит от того, что вы делаете с данными после того, как все эти слова были удалены.

Но если что-то вроде поиска названий лекарств или других ключевых слов, просто сделайте это на исходных данных, не удаляя стоп-слова.

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