저는 스페인어로 된 문서에서 R로 텍스트 마이닝을하고 있습니다. 인코딩 문제와 그 문제를 해결하기 위해 생각한 여러 가지 문제가 있습니다. 나는 다른 주제를 찾고 있지만 명확한 해결책을 찾을 수는 없습니다. 그리고 상황이 매번 다르게 작동한다는 사실은 아마 내가 그 문제를 정말로 이해하지 못한다는 것을 의미합니다.R : 텍스트 인코딩 문제 R
pdf_text
(패키지 pdftools
)을 사용하여 PDF에서 텍스트 데이터를 추출했으며, 틸드가있는 문자는 유니 코드로 변환됩니다. "<U+00ED>"
. 그러나 이것을 gsub
(또는 grepl
으로 찾음)을 사용하여 일반 문자로 대체하려고하면 R이 아무 것도 찾지 않습니다. 당신이 수동으로 stringrs을 소개하는 경우
> txt
[1] "Comunidad Aut<U+00F3>noma: Pa<U+00ED>s Vasco"
[2] "Provincia: <U+00C1>lava"
[3] "Alda se extingue y su territorio se incorpora a Valle de Arana. Censo 1950"
> str(txt)
chr [1:3] "Comunidad Aut<U+00F3>noma: Pa<U+00ED>s Vasco" ...
> grepl("<U\\+00F3>", txt)
[1] FALSE FALSE FALSE
> grepl("<U+00F3>", txt)
[1] FALSE FALSE FALSE
> gsub("<U\\+00F3>", "o", txt)
[1] "Comunidad Aut<U+00F3>noma: Pa<U+00ED>s Vasco"
[2] "Provincia: <U+00C1>lava"
[3] "Alda se extingue y su territorio se incorpora a Valle de Arana. Censo 1950"
그러나, R 그들을 찾을 않고 대체가 가능합니다 :
> txt = c("Comunidad Aut<U+00F3>noma: Pa<U+00ED>s Vasco", "Provincia: <U+00C1>lava")
> str(txt)
chr [1:2] "Comunidad Aut<U+00F3>noma: Pa<U+00ED>s Vasco" ...
> grepl("<U\\+00F3>", txt)
[1] TRUE FALSE
> gsub("<U\\+00F3>", "o", txt)
[1] "Comunidad Autonoma: Pa<U+00ED>s Vasco"
[2] "Provincia: <U+00C1>lava"
왜 이런 일이 출력은 다음과 같이 보입니다? 실제로 R을 읽으면 두 점이 다르게 보입니다.
이전에는 정상적인 문자로 대체 할 수있는 adapt 함수를 만들었지 만, 어떤 경우에는 작동하지 않는 것으로 나타났습니다. 왜 그런지 이해하지 못합니다. 또한 이러한 데이터가 OCR에서 왔을 때 혼란은 더욱 커지고 UTF-8 로의 변환은 끊임없이 달라집니다.
누구나이 문제를 해결하는 일반적인 방법을 알고 있습니까? 나는 이것을 앞으로 광범위하게 연구 할 것입니다.
고마워요.
P.S :
> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] pdftools_1.4 stringr_1.2.0
loaded via a namespace (and not attached):
[1] compiler_3.4.1 magrittr_1.5 tools_3.4.1 Rcpp_0.12.12
[5] stringi_1.1.5
당신이 대신 ""의 \ "의 u00f3"를 사용하면 어떻게됩니까? 또한,'dput (txt)'의 결과를 제공 할 수 있습니까? 여기서'txt'는 추출 된 것입니까? –
실제로 작동합니다 : ''''> grepl ("\ u00f3", txt) [1] TRUE FALSE FALSE'''' 왜 그렇게됩니까? –
dput 출력 : 또한 dput 출력 상 : ''> dput (TXT) C ("욱 AUT 노마 : 파 의 바스", "Provincia : 용암" "알다 SE extingue Y SU 테리토리오 (Territorio se)는 발레 드 아라나 (Valle de Arana)입니다. 센소 1950 " )"''' –