Подобные проблемы обсуждались на этом форуме (например, здесь и здесь ), но я не нашел ту, которая решает мою проблему, поэтому я прошу прощения за, казалось бы, похожий вопрос .
У меня есть набор .txt файлов с кодировкой UTF-8 (см. Скриншот). Я пытаюсь запустить модель topi c в R, используя пакет tm. Однако, несмотря на использование encoding = "UTF-8" при создании корпуса, у меня возникают очевидные проблемы с кодированием. Например, я получаю масштаб вместо фискальный , в uen c вместо влияния , не все знаки препинания удалены, а некоторые буквы не распознаются (например, кавычки все еще присутствуют в некоторых случаях, например view ” или plan ' или ændring или потерянные кавычки, такие как «и» или zit или лет - таким образом с отметкой da sh, которая должна была быть удалена). Эти термины также отображаются в топи c распределении по терминам. Раньше у меня были некоторые проблемы с кодированием, но я использовал "encoding = "UTF-8"
для создания корпуса, используемого для решения проблемы. Кажется, в этот раз это не помогает.
Я на Windows 10 x64, версия R 3.6.0 (2019-04-26), версия пакета 0.7-7 для версии 0.7-7 (все в актуальном состоянии) ). Я был бы очень признателен за любые советы о том, как решить эту проблему.
library(tm)
library(beepr)
library(ggplot2)
library(topicmodels)
library(wordcloud)
library(reshape2)
library(dplyr)
library(tidytext)
library(scales)
library(ggthemes)
library(ggrepel)
library(tidyr)
inputdir<-"c:/txtfiles/"
docs<- VCorpus(DirSource(directory = inputdir, encoding ="UTF-8"))
#Preprocessing
docs <-tm_map(docs,content_transformer(tolower))
removeURL <- function(x) gsub("http[^[:space:]]*", "", x)
docs <- tm_map(docs, content_transformer(removeURL))
toSpace <- content_transformer(function(x, pattern) (gsub(pattern, " ", x)))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "-")
docs <- tm_map(docs, toSpace, "\\.")
docs <- tm_map(docs, toSpace, "\\-")
docs <- tm_map(docs, removePunctuation)
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, removeWords, stopwords("english"))
docs <- tm_map(docs, stripWhitespace)
docs <- tm_map(docs,stemDocument)
dtm <- DocumentTermMatrix(docs)
freq <- colSums(as.matrix(dtm))
ord <- order(freq, decreasing=TRUE)
write.csv(freq[ord],file=paste("word_freq.csv"))
#Topic model
ldaOut <-LDA(dtm,k, method="Gibbs",
control=list(nstart=nstart, seed = seed, best=best,
burnin = burnin, iter = iter, thin=thin))
Редактировать: я должен добавить, что в cse оказывается уместным, что текстовые файлы были созданы из PDF-файлов с использованием следующего кода R:
inputdir <-"c:/pdf/"
myfiles <- list.files(path = inputdir, pattern = "pdf", full.names = TRUE)
lapply(myfiles, function(i) system(paste('"C:/Users/Delt/AppData/Local/Programs/MiKTeX 2.9/miktex/bin/x64/pdftotext.exe"',
paste0('"', i, '"')), wait = FALSE) )
Два образца текстовых файлов можно загрузить здесь .