2017-06-04 2 views
1

日本語でUTF8エンコードファイルを処理しようとしています。UTF-8でエンコードされた日本語コーパスのR処理

私はPythonで前処理をした、すべてがOKに行った(トークン化/コロケーション/ストップワード)と私は、文字列の次のようなものを得た:

リカーショップ 寄っ たら サントリー 山崎 響が 入荷_し て た 

しかし、私は前処理ファイル(Aを読みしようとしていたときには、 UTF-8でエンコードされたCSV)RでSTMを実行するために、私はこのフォーマットを取得しています:

<U+30AB><U+30F4><U+30A1> <U+4E00><U+676F> <U+767D> <U+8D64> <U+4E00><U+676F> <U+89D2>_<U+30CF><U+30A4><U+30DC><U+30FC><U+30EB> <U+5C71><U+5D0E> <U+30CF><U+30A4><U+30DC><U+30FC><U+30EB> <U+591A><U+304B><U+3063> <U+305F> <U+304B> 

私が最初に別のインポート機能を試してみましたが、同じ結果:

df <- read.xlsx2(corpus_filename,sheetIndex=1,header=TRUE) 
df <-read_csv(corpus_filename,locale = locale(encoding = "UTF-8")) 

私はstmを実行して、結果のファイルを再エンコードするためにPythonに戻ることができると考えましたが、エンコード/デコード機能を試して半日後、私は完全に立ち往生したことを認めなければなりません。

誰もがこれを手伝ってくれますか? ありがとうございました。

EDIT:ここ は(UTF8でエンコード)私のpythonの前処理=>のCSV出力の最初の20行は、それは私が下で働く私のRプログラム

865781289361604609;コークハイ 山崎 年 酔っ払い なう 
856448528331161600;リカーショップ 寄っ たら サントリー 山崎 響が 入荷_し て た 
815926577556897792;おと なしく 山崎 んどき ます w まあ 竹鶴 結局 手 にいれ まし_た しよし ます w 
769384649143361536;再 来週 山崎_蒸留 所 行く アド しか_ない 
860119818296414208;非売 品 山崎 仕込_み 水 水割り 最高 です_ね 
759768684457975809;ゴースト 観 た 面白 かっ_た ラスト 個人_的 驚い た 最高 だろ_う こういう 時期っ て 絶対 ある よね ラスト 切り 口 俺 好き 山崎 ハイボール うまし 
807576715203444736;山崎 ロック う まいわぁ 
833936664938500098;ある お店 飲み_放題 ウイスキー 以前 山崎 白州 ブラックニッカ 角 変わっ てる 大人 事情っ て やつ か 
744757755177664512;父 日 サントリー 山崎 プレゼント しよ_う として 円 しか なかっ_た 竹鶴 あげ た 
744850084580384768;今度 山崎 か 響買 おう 
742576211759628288;i サントリー 山崎_蒸溜 所 島本_町 大阪府 
862666125909278720;山崎 年 だねー 杯 ご_馳走 する_よ 
865932271169159172;山崎 年 神々しい 
788394825494175745;山崎 年 よき て 
833282834412376064;山崎_蒸留 所見 学ツアー 千円 部 大阪 ダメダメ 団 向け テイスティング 
823471399289253888;おと とい 山崎 年 ごち そう なっ たん_だけ どめっっっちゃ 美味_しく て 家 帰っ_て 調べ たら 定価 でも く らい する 知っ て ヒェッ て なっ た いつも 穏やか な 愛する あまり 相手 薬漬け 快楽 漬け て 全裸 首輪 つけ て 自室 監禁 て 泣き ながら 犯す 攻め 見 た 時 よう 
775381740160299008;次買う ウイスキー 山崎 しよ_う とり_あえ ず 山崎 美味い だ 
862137645895262209;山崎 シェリーカスク 一 回 飲ん_でみ たいけど 値段 ぶっ 飛ん て ヤヴァイ 年 万く らい とか な 
741984119035334660;山崎 ハイボール なう 
768400284754190337;久々_に 自覚 する くらい 酔っ ぱらっちゃっ た ぬ 山崎 ボトル 一本 飲ませ て 頂い た よ あり たい ね 
839372940374237184;ウイスキー ある_けど 家 やつ 美味_しく ない ー 山崎 響き 好き 
744138456025042944;山崎 ロック 飲み_ながら 妹ちょ 見る 
779968612224217089;無駄 いい ホテル 笑知っ てる と_思う けど 山崎 響飲ん だ 翌日 体臭 おじ_さん なる ね 気 をつけ て 
822126367584043008;山崎 でも いい ウイスキー 蒸留_所行 き たい 
753358847352246272;山崎 年 のうえ 年 

に与えているファイルでありますSublimeTextの行をコピー/貼り付けすることで、Windows 7をRconsole上に直接作成できます。

EDIT 2:

私はマルコの提案を試してみました:

> rm(list=ls(all=TRUE)) 
> library(readr) 
> parselmouth.windows <- 
+ read_delim(
+  parselmouth.csv, 
+  ";", 
+  escape_double = FALSE, 
+  col_names = FALSE, 
+  trim_ws = TRUE 
+ ) 
Parsed with column specification: 
cols(
    X1 = col_double(), 
    X2 = col_character() 
) 
> names(parselmouth.windows) <- c('document', 'content') 
> parselmouth.windows$document <- as.character(parselmouth.windows$document) 
> 
> print.listof(head(parselmouth.windows)) 
document : 
[1] "865781289361604608" "856448528331161600" "815926577556897792" 
[4] "769384649143361536" "860119818296414208" "759768684457975808" 

content : 
[1] "<U+30B3><U+30FC><U+30AF><U+30CF><U+30A4> <U+5C71><U+5D0E> <U+5E74> <U+9154> 
<U+3063><U+6255><U+3044> <U+306A><U+3046>" 
[2] "<U+30EA><U+30AB><U+30FC><U+30B7><U+30E7><U+30C3><U+30D7> <U+5BC4><U+3063> < 
U+305F><U+3089> <U+30B5><U+30F3><U+30C8><U+30EA><U+30FC> <U+5C71><U+5D0E> <U+97F 
F><U+304C> <U+5165><U+8377>_<U+3057> <U+3066> <U+305F>" 
[3] "<U+304A><U+3068> <U+306A><U+3057><U+304F> <U+5C71><U+5D0E> <U+3093><U+3069> 
<U+304D> <U+307E><U+3059> w <U+307E><U+3042> <U+7AF9><U+9DB4> <U+7D50><U+5C40> < 
U+624B> <U+306B><U+3044><U+308C> <U+307E><U+3057>_<U+305F> <U+3057><U+3088><U+30 
57> <U+307E><U+3059> w" 
[4] "<U+518D> <U+6765><U+9031> <U+5C71><U+5D0E>_<U+84B8><U+7559> <U+6240> <U+884 
C><U+304F> <U+30A2><U+30C9> <U+3057><U+304B>_<U+306A><U+3044>" 
[5] "<U+975E><U+58F2> <U+54C1> <U+5C71><U+5D0E> <U+4ED5><U+8FBC>_<U+307F> <U+6C3 
4> <U+6C34><U+5272><U+308A> <U+6700><U+9AD8> <U+3067><U+3059>_<U+306D>" 
[6] "<U+30B4><U+30FC><U+30B9><U+30C8> <U+89B3> <U+305F> <U+9762><U+767D> <U+304B 
><U+3063>_<U+305F> <U+30E9><U+30B9><U+30C8> <U+500B><U+4EBA>_<U+7684> <U+9A5A><U 
+3044> <U+305F> <U+6700><U+9AD8> <U+3060><U+308D>_<U+3046> <U+3053><U+3046><U+30 
44><U+3046> <U+6642><U+671F><U+3063> <U+3066> <U+7D76><U+5BFE> <U+3042><U+308B> 
<U+3088><U+306D> <U+30E9><U+30B9><U+30C8> <U+5207><U+308A> <U+53E3> <U+4FFA> <U+ 
597D><U+304D> <U+5C71><U+5D0E> <U+30CF><U+30A4><U+30DC><U+30FC><U+30EB> <U+3046> 
<U+307E><U+3057>" 
+0

エンコーディングはR.でイライラすることができます1)ロードしようとしているデータの一例を提供することはできますか? 3)使用しているオペレーティングシステムを教えてください。 3)使用しているRインターフェースを教えてください。たとえば、RStudioは通常、(常に** **ではないが)有用/適切なエンコーディング設定を静かに作成します。 –

+0

ありがとうございました。私は私の質問を編集しました。それが助けてくれることを願っています... –

+0

'content'には、カットアンドペースト中に導入されたような、いくつかの' w'と '_'があります。彼らは本当にデータに入っていますか? – G5W

答えて

2

右を、私はWindowsを使用していた疑いがあります。 Linux(Ubuntu 16.04.2、RStudio 0.99.879、R 3.3.2)では、の読み取りと印刷はで動作します。

parselmouth.ubuntu <- 
    read.csv('parselmouth.csv', header = FALSE, sep = ";") 

> head(parselmouth.ubuntu) 
      V1 
1 8.657813e+17 
2 8.564485e+17 
3 8.159266e+17 
4 7.693846e+17 
5 8.601198e+17 
6 7.597687e+17 
                                       V2 
1                            コークハイ 山崎 年 酔っ払い なう 
2                      リカーショップ 寄っ たら サントリー 山崎 響が 入荷_し て た 
3                 おと なしく 山崎 んどき ます w まあ 竹鶴 結局 手 にいれ まし_た しよし ます w 
4                          再 来週 山崎_蒸留 所 行く アド しか_ない 
5                          非売 品 山崎 仕込_み 水 水割り 最高 です_ね 
6 ゴースト 観 た 面白 かっ_た ラスト 個人_的 驚い た 最高 だろ_う こういう 時期っ て 絶対 ある よね ラスト 切り 口 俺 好き 山崎 ハイボール うまし 
> 

は、私はあなたのデータの正しいエンコードを「知っている」んWindowsののために、その内部でR を見つけると思います。それは単に私たちが期待する、あるいは望む方法で印刷されていないだけです。

私はhttp://people.fas.harvard.edu/~izahn/posts/reading-data-with-non-native-encoding-in-r/

parselmouth.csvとしてあなたの例のデータを保存readrライブラリをインストールした後、

library(readr) 
parselmouth.windows <- 
    read_delim(
    "parselmouth.csv", 
    ";", 
    escape_double = FALSE, 
    col_names = FALSE, 
    trim_ws = TRUE 
) 

names(parselmouth.windows) <- c('document', 'content') 
parselmouth.windows$document <- as.character(parselmouth.windows$document) 

print.listof(head(parselmouth.windows)) 

を実行しているそして、あなたが表示されます試し読みをお勧めします:

document : 
[1] "865781289361604608" "856448528331161600" "815926577556897792" 
[4] "769384649143361536" "860119818296414208" "759768684457975808" 

content : 
[1] "コークハイ 山崎 年 酔っ払い なう"                            
[2] "リカーショップ 寄っ たら サントリー 山崎 響が 入荷_し て た"                      
[3] "おと なしく 山崎 んどき ます w まあ 竹鶴 結局 手 にいれ まし_た しよし ます w"                 
[4] "再 来週 山崎_蒸留 所 行く アド しか_ない"                          
[5] "非売 品 山崎 仕込_み 水 水割り 最高 です_ね"                          
[6] "ゴースト 観 た 面白 かっ_た ラスト 個人_的 驚い た 最高 だろ_う こういう 時期っ て 絶対 ある よね ラスト 切り 口 俺 好き 山崎 ハイボール うまし" 

まだがある場合を現在のロケールを決定または設定すると役立ちます。

Sys.getlocale(category = "LC_ALL") 
[1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252" 

しかし、私はそれをあなたはまた、あなたの入力は私と同じであることを確認するために、バイナリエディタを使用することができ

Sys.setlocale(category = "LC_ALL", locale = "English_United States.932") 
[1] "LC_COLLATE=English_United States.932;LC_CTYPE=English_United States.932;LC_MONETARY=English_United States.932;LC_NUMERIC=C;LC_TIME=English_United States.932" 

を変更することができます:私のWindowsの例では、私は、デフォルトのWindowsコードページを使用しています:

enter image description hereenter image description here

+0

あなたの答えをありがとう。私は研究中にあなたのリンクを見つけましたが、それを適用することはできませんでした。あなたのコードの場合、私はそれを実行しましたが、結果は同じです。私は端末の画面は気にしませんが、本当にきれいな輸出が好きです。処理後に変換ステップを使用できると思いますか? –

+0

これは良いウェブリンクですが、「私のもの」ではありません。 **同じ**結果を得るための詳細を教えていただけますか? Windows 10のR 3.2.2コンソールにコードを貼り付けて、日本語の文字として出力しました。私の提案したコマンドを正確に貼り付けましたか?たぶん入力ファイルを保存/コード化する方法が違いになるかもしれません。私はあなたのポストから切って、メモ帳++に貼り付け、保存しました。私はメモ帳++のカスタマイズはしていないと思います。昇華しても同じように動作します。 –

+1

@ Parselmouthintrainingあなたは「きれいな輸出」をしたいと言います。あなたはただそれをテキストファイルなどに書きたいのですか? – G5W

関連する問題