スペイン語のドキュメントでRのテキストマイニングを行っています。私は、エンコーディングとそれらを解決するために思いついたさまざまな解決策に絶え間ない問題が発生しています。私はさまざまなトピックを探していますが、本当に明確な解決策を見つけることはできません。そして、事が毎回違うという事実は、おそらく私が実際に問題を理解していないことを意味します。R:テキストのエンコーディングの問題R
pdf_text
(パッケージpdftools
)を使用してPDFからテキストデータを抽出し、チルダ付きの文字をUnicodeに変換しました。 "<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のouputを: ''> dput(TXT) C( "コムニダードAUT 野間:Paの Sバスコ"、 "Provincia:溶岩" 「アルダSE extingue Y SU territorio se incorpora a Valle de Arana。Censo 1950 " )' '' ' –