2

utf-8 形式の英語以外のテキストで構成されるリストがあります。したがって、1 つの単語を印刷しようとすると、次のようになります。

したがって、元の単語として印刷するには、ループする必要があり、元の単語として正しく出力されます。

最も頻繁に使用される5つの単語を見つけたいです。単語を collections.counter() 関数に格納すると、Unicode 形式で入力されます。上位 5 つの最も頻繁な単語を出力するために、counter() 内の単語にアクセスするにはどうすればよいですか。

私は次のコードを実行しました:(txtは私のテキストファイルです)

words = [txt.split() の w の場合は w]

印刷します

[u'\ufeff\u0643\u0627\u0646', u'\u064a\u0627', u'\u0645\u0627', ...u'\u0643\u0627\u0646', u'\u0641\u064a', u'\u0642\u062f\u064a\u0645']

したがって、ループして目的の出力を取得します(理由はわかりません)

 >>> for w in words:
        print w,

印刷します

カンニャーマカン

counter() 関数を使用して、最も頻繁に使用される単語を見つけます

 >>> count = collections.Counter(words)
 >>> print count.most_common(5)

印刷します

 >>> [(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
  (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
(u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
(u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]

私は各単語にアクセスし、それをループして、その頻度で出力したいと考えています。

4

1 に答える 1

1

最初の例では、単語を直接出力して元の文字を取得できます (アラビア語が読めないため、これは間違っている可能性があります)。

>>> print u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'
والأرنب

インタープリターを介してこれを行っていて、明示的に を使用していないprint場合でも、Unicode 表現が表示されます。

>>> u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'
u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628'

printしたがって、呼び出して実際の単語を確認できます。

>>> l
[(u'\u0627\u0644\u0633\u0644\u062d\u0641\u0627\u0629', 5),
 (u'\u0627\u0644\u0645\u063a\u0631\u0648\u0631', 3), 
 (u'\u0627\u0644\u0623\u0631\u0646\u0628', 2), (u'\u060c', 2), 
 (u'\u0648\u0627\u0644\u0623\u0631\u0646\u0628', 2)]
>>> for el in l:
    print el[0], el[1]


السلحفاة 5
المغرور 3
الأرنب 2
، 2
والأرنب 2
于 2012-11-07T07:14:09.860 に答える