R Испанский термин-матрица частот с символами испанского языка TD и Quanteda - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь научиться анализировать текст с помощью данных Твиттера.Я сталкиваюсь с проблемой при создании Term Frequency Matrix.Я создаю корпус из испанского текста (со специальными символами), без проблем.

Однако, когда я создаю матрицу терминов частоты (с библиотеками quanteda или tm), испанские символы не отображаются должным образом (вместо просмотра canción я вижу canción).

Любые предложения о том, как я могу получить матрицу терминов частоты для хранения текста с правильными символами?

Спасибо за любую помощь.

В качестве примечания: я предпочитаю использовать библиотеку quanteda, поскольку в конечном итоге я буду создавать облако слов и думаю, что лучше пойму подход этой библиотеки.Я также использую компьютер с Windows.

Я попробовал кодирование (tw2) <- "UTF-8", но безуспешно. </p>

library(dplyr)
library(tm)
library(quanteda)

#' Creating a character with special Spanish characters:
tw2 <- "RT @None: Enmascarados, si masduro chingán a tarek. Si quieres ahora, la aguantas canción  . https://t."


#Cleaning the tweet, removing special punctuation, numbers http links, 
extra spaces:
clean_tw2 <- tolower(tw2)
clean_tw2 = gsub("&amp", "", clean_tw2)
clean_tw2 = gsub("(rt|via)((?:\\b\\W*@\\w+)+)", "", clean_tw2)
clean_tw2 = gsub("@\\w+", "", clean_tw2)
clean_tw2 = gsub("[[:punct:]]", "", clean_tw2)
clean_tw2 = gsub("http\\w+", "", clean_tw2)
clean_tw2 = gsub("[ \t]{2,}", "", clean_tw2)
clean_tw2 = gsub("^\\s+|\\s+$", "", clean_tw2) 

# creates a vector with common stopwords, and other words which I want removed.
myStopwords <- c(stopwords("spanish"),"tarek","vez","ser","ahora")
clean_tw2 <- (removeWords(clean_tw2,myStopwords))

# If we print clean_tw2 we see that all the characters are displayed as expected.
clean_tw2

#'Create Corpus Using quanteda library
corp_quan<-corpus(clean_tw2)
# The corpus created via quanteda, displays the characters as expected.
corp_quan$documents$texts

#'Create Corpus Using TD library
corp_td<-Corpus(VectorSource(clean_tw2))
#' Remove common words from spanish from the Corpus.
#' If we inspect the corp_td, we see that the characters and words are displayed correctly
inspect(corp_td)

# Create the DFM with quanteda library.
tdm_quan<-dfm(corp_quan)
# Here we see that the spanish characters are displayed incorrectly for Example: canción = canción
tdm_quan

# Create the TDM with TD library
tdm_td<-TermDocumentMatrix(corp_td)

# Here we see that the Spanish characters are displayed incorrectly (e.g. canción = canciÃ), and "si" is missing.
tdm_td$dimnames$Terms

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Похоже, что quanteda (и tm) теряет кодировку при создании DFM на платформе Windows.В этом вопросе tidytext та же проблема возникает с токенами unnesting.Который отлично работает сейчас, а также quanteda tokens отлично работает.Если я использую кодировку UTF-8 или latin1 для @Dimnames$features из dfm, вы получите правильные результаты.

....
previous code
.....
tdm_quan<-dfm(corp_quan)
# Here we see that the spanish characters are displayed incorrectly for Example: canción = canción
tdm_quan
Document-feature matrix of: 1 document, 8 features (0% sparse).
1 x 8 sparse Matrix of class "dfm"
       features
docs    enmascarados si masduro chingán quieres aguantas canción t
  text1            1  2       1        1       1        1        1 1

Если вы делаете следующее:

Encoding(tdm_quan@Dimnames$features) <- "UTF-8"
tdm_quan
Document-feature matrix of: 1 document, 8 features (0% sparse).
1 x 8 sparse Matrix of class "dfm"
       features
docs    enmascarados si masduro chingán quieres aguantas canción t
  text1            1  2       1       1       1        1       1 1
0 голосов
/ 26 апреля 2018

Дайте угадаю ... вы используете Windows?На macOS все работает нормально:

clean_tw2
## [1] "enmascarados si masduro chingán   si quieres   aguantas canción"
Encoding(clean_tw2)
## [1] "UTF-8"
dfm(clean_tw2)
## Document-feature matrix of: 1 document, 7 features (0% sparse).
## 1 x 7 sparse Matrix of class "dfm"
##        features
## docs    enmascarados si masduro chingán quieres aguantas canción
##   text1            1  2       1       1       1        1       1

Информация о моей системе:

sessionInfo()
# R version 3.4.4 (2018-03-15)
# Platform: x86_64-apple-darwin15.6.0 (64-bit)
# Running under: macOS High Sierra 10.13.4
# 
# Matrix products: default
# BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
# LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
# 
# locale:
# [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
# 
# attached base packages:
# [1] stats     graphics  grDevices utils     datasets  methods   base     
# 
# other attached packages:
# [1] tm_0.7-3       NLP_0.1-11     dplyr_0.7.4    quanteda_1.1.6
...