2017-06-05 10 views
0

日本語のPython2でテキストクラスタリングを始めました。しかし、これらの日本語単語/用語に基づいて辞書を作成した場合、辞書キーは日本語ではなくユニコードになります。次のようにコードは次のとおりです。日本語の辞書キーにUnicodeをエンコードする

# load data 
allWrdMat10 = pd.read_csv("../../data/allWrdMat10.csv.gz", 
encoding='CP932') 


## Set X as CSR Sparse Matrix 
X = np.array(allWrdMat10) 
X = sp.csr_matrix(X) 

## create dictionary 
dict_index = {t:i for i,t in enumerate(allWrdMat10.columns)} 

freqrank = np.array(dict_index.values()).argsort() 
X_transform = X[:, freqrank < 1000].transpose().toarray() 

次のようにallWrdMat10.columnsの結果はまだ日本のとおりです。

[u'\u77ed\u9283', 
u'\u5efa\u3066', 
u'\u4f0a', 
u'\u5e73\u5b89', 
u'\u6025\u9a30', 
u'\u897f\u65e5\u672c', 
u'\u5e03\u9663', 
...] 

は、どのような方法があります:として

Index([u'?', u'.', u'・', u'%', u'0', u'1', u'10月', u'11月', u'12 
月', u'1つ', 
... 
u'瀋陽', u'疆', u'盧', u'籠', u'絆', u'胚', u'諫早', u'趙', u'鉉', u'鎔 
基'],dtype='object', length=8655) 

はしかし、dict_index.keys()の結果があります日本語の言葉や言葉を辞書のキーに入れておくことができますか?または、ユニコードを日本語の単語/用語に戻すことができる方法はありますか?ありがとう。

答えて

0

あなたは、さらに良いのPython 2で必要とされ、Uとこの説明のため unicode_literals import unicode_literals

+0

ありがとうございます。 @KHELILI Hamza、あなたはそのプロセスに関する詳細を教えていただけますか? – tzu

+0

@tzuこのヘルプhttps://stackoverflow.com/questions/809796/any-gotchas-using-unicode-literals-in-python-2-6 –

+0

@tzuあなたのコードがうまくいけば、あなたは忘れないでください私の答えを受け入れてください –

1

式の値をインタープリタに問い合わせると、値が計算され、repr()が出力されます。 printステートメント(v2)または関数(v3)は、値のstr()を使用します。ですから問題のあるキーを取って通訳に尋ねると、その価値は何ですか?私はそれをprint場合は、しかし、私は必要な日本語の文字を参照してください。あなたが必要な値を持っているので、あなたは、あなただけのインタプリタが異なる表現を使用していたことを理解していなかったん

>>> u'\u77ed\u9283' 
u'\u77ed\u9283' 
>>> print u'\u77ed\u9283' 
短銃 

、で表現することが保証しましたASCII。

+0

おかげで、文字列の前に付けていませんでした。しかし、 'plot_dendrogram'関数に' labels = dict_index.keys() 'を設定すると、プロットは単語を表示できません。これが、私が辞書を作成するときに、ユニコードを日本語の用語に変換しようとしているか、それをそのまま維持しようとしている理由です。 – tzu

関連する問題