2016-09-05 7 views
0

NLTKを使用してN個のテキストを分析するタスクがあります。コンピュータは非常に多くのデータを処理することが困難であるように、各テキストは、長い100kの言葉よりも、私はこのようなサブリストにトークン化した後、それぞれのテキストを分割することを決めた理由です:Pythonを使用したN個のリストの特定の項目の合計

chunks = [tokens_words[x:x+1000] for x in range (0,len(tokens_words), 1000)]

おそらく、それはうまく動作します。

次に、たとえば各テキストの名詞の数を数える必要があります。私はこれが好きです:

for chunk in chunks: 
    for key in tagged.keys(): 
     for noun_tag in noun_tags: 
      if tagged[key] == noun_tag: 
       noun += 1 
    totalNoun.append(noun) 

私はsum()を使用し、パーセンテージを見つけます。私もtotalNoun += nounを試しましたが、両方の方法で私は3500%または2498%のようなsmthを受け取ります。

どうすればいいですか?

+1

詳細が必要です。あなたは 'sum()'を何使っていますか?どのようにパーセントを見つけるのですか?これはPythonよりも算術的なエラーのように思えますが、実際のところ詳細がないと確信する方法はありません。 –

+0

あなたはあなたの 'print()'や 'write()'に**%の書式**( '{:.2%}'のようなもの)を使っていますが、計算。したがって、100 *を削除してください。 –

+0

1つのチャンクに対して正しい名詞の数が得られますか? –

答えて

0

チャンクが2つあるとします.1つは13の名詞で、もう1つは30の名詞であるとします。あなたのコードは次の操作を行います:

noun: 0 
totalNoun: [] 

# processing chunk 1 with 13 nouns... 

noun : 13 
totalNoun : [13] 

# processing chunk 2 with 30 nouns... 

noun : 43 
totalNoun : [13,43] 

私の知る限り見ることができるように、各チャンクの後に0に等しいnounを設定しないでください。それは次のとおりです。あなたのfor chunk in chunksループでnoun = 0を使用して

for chunk in chunks: 
    ## HERE ## 
    noun = 0 
    ## HERE ## 

    for key in tagged.keys(): 
     for noun_tag in noun_tags: 
      if tagged[key] == noun_tag: 
       noun += 1 
    totalNoun.append(noun) 

は、トリックを行う必要があります。

+1

お手伝い、ありがとうございました!何らかの理由で、すべてのチャンクの前に 'noun = 0'を置き、それを忘れてしまった。 – Katherine

関連する問題