2016-07-07 9 views
-1

Pythonでこのデコードの問題に対処する方法を教えてもらえますか? 私はPythonでヒンディー語のテキストのトピックモデリングからこの出力を持っている、今私はPythonを使用したDevanagari(ヒンディー語)テキストのトピックモデリング

[(0, u'0.573*"\u0915" + 0.360*"\u0930" + 0.304*"\u092e" + 0.270*"\u0928" + 0.246*"\u0938" + 0.217*"\u0932" + 0.189*"\u0926" + 0.189*"\u0924" + 0.184*"\u0939" + 0.182*"\u092f"'), 
(1, u'-0.485*"\u092e" + 0.381*"\u0924" + -0.359*"\u091f" + 0.307*"\u0935" + 0.260*"\u092c" + 0.229*"\u0926" + 0.202*"\u0939" + -0.147*"\u0938" + 0.133*"\u0926\u0930" + -0.126*"\u092a"'), 
(2, u'-0.378*"\u0938" + -0.343*"\u0932" + -0.295*"\u0935" + 0.276*"\u0930" + 0.272*"\u0915" + 0.268*"\u0926" + -0.253*"\u0939" + -0.192*"\u091f" + -0.163*"\u0926\u0930" + -0.148*"\u091c"'), 
(3, u'-0.508*"\u0930" + 0.392*"\u0924" + -0.323*"\u0938" + 0.296*"\u092e" + 0.179*"\u0939" + 0.178*"\u091a" + 0.169*"\u092f" + -0.166*"\u091c" + -0.133*"\u090f" + -0.125*"\u092a"'), 
(4, u'0.514*"\u0938" + -0.308*"\u0917" + -0.280*"\u091c" + -0.256*"\u0930" + 0.229*"\u0939" + -0.227*"\u092f" + 0.208*"\u0915" + -0.201*"\u0928" + -0.175*"\u0932" + 0.173*"\u0926"')] 
+0

コードポイント。あなたはPython 2を使用していますか? FWIW、あなたは1番目の文字列が 'u'0.573 * u "+ 0.360 * u" + "0.304 * u" "0.270 * u" + 0.246 * u "+" 0.217 * u " "+ 0.189 * u"訳 "+ 0.189 *" "+ 0.184 * u"← "0.182 * u"κ "'' –

+0

あなたは私のようなものに変換するのに役立つpythonコードを共有することはできますか? + 0.270 * u "+ 0.270 * u" + 0.270 * u "+" 0.277 * u "" + 0.189 * u " + 0.189 * u "✓" + 0.184 * u "←" + 0.182 * u "κ" ' –

+0

あなたはまだ使用しているPythonのバージョンを教えてくれませんでした。これはPython 2のUnicode処理がPython 3でどのように動作するかとはかなり異なるため、Unicodeに関する重要な質問です。FWIW、Python 3を使用して変換を行いました。 Python 2のコードをすぐに投稿して、役立つはずです。 –

答えて

3

文字列など"\u0915"など(ヒンディー語)言語デーヴァナーガリーで出力を得るためのpythonでそれをデコードすることはできませんよというあなたのデータに埋め込まれていますです。デナガガリグリフのUnicodeエスケープシーケンスです。これらのエスケープシーケンスは、データの移植性を最大化するために使用されます。

正規表現パターンを使用してそのデータから数字とグリフを抽出するPython 2のコードです。

Row 0 
0.573 क 
0.36 र 
0.304 म 
0.27 न 
0.246 स 
0.217 ल 
0.189 द 
0.189 त 
0.184 ह 
0.182 य 

Row 1 
-0.485 म 
0.381 त 
-0.359 ट 
0.307 व 
0.26 ब 
0.229 द 
0.202 ह 
-0.147 स 
0.133 दर 
-0.126 प 

Row 2 
-0.378 स 
-0.343 ल 
-0.295 व 
0.276 र 
0.272 क 
0.268 द 
-0.253 ह 
-0.192 ट 
-0.163 दर 
-0.148 ज 

Row 3 
-0.508 र 
0.392 त 
-0.323 स 
0.296 म 
0.179 ह 
0.178 च 
0.169 य 
-0.166 ज 
-0.133 ए 
-0.125 प 

Row 4 
0.514 स 
-0.308 ग 
-0.28 ज 
-0.256 र 
0.229 ह 
-0.227 य 
0.208 क 
-0.201 न 
-0.175 ल 
0.173 द 

import re 

data = [ 
    (0, u'0.573*"\u0915" + 0.360*"\u0930" + 0.304*"\u092e" + 0.270*"\u0928" + 0.246*"\u0938" + 0.217*"\u0932" + 0.189*"\u0926" + 0.189*"\u0924" + 0.184*"\u0939" + 0.182*"\u092f"'), 
    (1, u'-0.485*"\u092e" + 0.381*"\u0924" + -0.359*"\u091f" + 0.307*"\u0935" + 0.260*"\u092c" + 0.229*"\u0926" + 0.202*"\u0939" + -0.147*"\u0938" + 0.133*"\u0926\u0930" + -0.126*"\u092a"'), 
    (2, u'-0.378*"\u0938" + -0.343*"\u0932" + -0.295*"\u0935" + 0.276*"\u0930" + 0.272*"\u0915" + 0.268*"\u0926" + -0.253*"\u0939" + -0.192*"\u091f" + -0.163*"\u0926\u0930" + -0.148*"\u091c"'), 
    (3, u'-0.508*"\u0930" + 0.392*"\u0924" + -0.323*"\u0938" + 0.296*"\u092e" + 0.179*"\u0939" + 0.178*"\u091a" + 0.169*"\u092f" + -0.166*"\u091c" + -0.133*"\u090f" + -0.125*"\u092a"'), 
    (4, u'0.514*"\u0938" + -0.308*"\u0917" + -0.280*"\u091c" + -0.256*"\u0930" + 0.229*"\u0939" + -0.227*"\u092f" + 0.208*"\u0915" + -0.201*"\u0928" + -0.175*"\u0932" + 0.173*"\u0926"') 
] 

pat = re.compile(r'(.*?)\*"(.*?)"\s*\+?\s*') 

for i, row in data: 
    print "\nRow", i 
    t = [(float(w), s) for w, s in pat.findall(row)] 
    for w, s in t: 
     print w, s 

出力は、この出力を取得するには、UTF-8エンコーディングを使用するように、端末を設定する必要があります。


FWIWは、より使いやすい形式のデータです。それを使用するには、UTF-8エンコーディングを使用してスクリプトを保存するために、あなたのエディタを伝える必要があり、そしてあなた必見は_are_デーヴァナーガリーそれらを、スクリプトの開始時に有効なUTF-8エンコーディング宣言を持っ例えば

# -*- coding: utf-8 -*- 

data = [ 
    (0, u'0.573*"क" + 0.360*"र" + 0.304*"म" + 0.270*"न" + 0.246*"स" + 0.217*"ल" + 0.189*"द" + 0.189*"त" + 0.184*"ह" + 0.182*"य"'), 
    (1, u'-0.485*"म" + 0.381*"त" + -0.359*"ट" + 0.307*"व" + 0.260*"ब" + 0.229*"द" + 0.202*"ह" + -0.147*"स" + 0.133*"दर" + -0.126*"प"'), 
    (2, u'-0.378*"स" + -0.343*"ल" + -0.295*"व" + 0.276*"र" + 0.272*"क" + 0.268*"द" + -0.253*"ह" + -0.192*"ट" + -0.163*"दर" + -0.148*"ज"'), 
    (3, u'-0.508*"र" + 0.392*"त" + -0.323*"स" + 0.296*"म" + 0.179*"ह" + 0.178*"च" + 0.169*"य" + -0.166*"ज" + -0.133*"ए" + -0.125*"प"'), 
    (4, u'0.514*"स" + -0.308*"ग" + -0.280*"ज" + -0.256*"र" + 0.229*"ह" + -0.227*"य" + 0.208*"क" + -0.201*"न" + -0.175*"ल" + 0.173*"द"') 
] 
+0

ありがとう、私はPython2を使用していますが、これらの出力はトピックについての結論には意味をなさない。だから、Devaragari(ヒンディー語)テキストでトピックモデリングを行う方法を教えてください。私はLDAを使用しようとしましたが、これらの出力にこだわってしまった –

+0

@VishalKumarSingh:申し訳ありませんが、トピックモデリングや自然言語処理については何も分かりません。だから私はそのデータが何を意味するのか分からないが、私はそれらの数字が何らかの種類の重みや確率であると思う。しかし、これはUnicodeの問題とは別の問題です。スタックオーバーフローの話題になっていることを明らかにする方法が見つかったら、新鮮な質問をする必要があります。 –

+1

私の答えがあなたを助けてくれたなら、[accepting](http://meta.stackexchange.com/a/5235)と考えてください。 –

関連する問題