トークンごとに正または負の文書頻度の出現を数えたいと思います。しかし、私のpythonのスクリプトが実行され、午前中に実行されます。あなたは何かが間違っていることを教えてください?事前に感謝します。ディクショナリのリスト内の各キーの出現を効率的に数える方法は?
import numpy as np
positive_feature=[[{'a':2,'b':1},1],
[{'b':2,'c':1},1]
]
negative_feature=[[{'e':2,'b':1},0]
]
alltokens=['a','b','c','e']
dic=dict((t,i) for i,t in enumerate(alltokens))
vacabulary_size=len(dic)
positive_doc_frequency,negative_doc_frequency=np.zeros(vacabulary_size), np.zeros(vacabulary_size)
for t in alltokens:
for x in positive_feature:
if t in x[0].keys():
positive_doc_frequency[dic[t]]+=1
for x in negative_feature:
if t in x[0].keys():
negative_doc_frequency[dic[t]]+=1
alltokensリストの要素の順序によると、私はpositive_doc_frequency/negative_doc_frequencyしたいのようにのようなものです:
alltokens=['a','b','c','e']
positive_doc_frequency=[1,2,1,0]
negative_doc_frequency=[0,1,0,1]
が、Pythonスクリプトは、まだ午前8時から4まで(今、実行されています:00PM)、私のスクリプトの最適化?再度、感謝します。
更新日: サンプルデータが不十分なため質問に誤解を招きます。私はそれを修正させてください。
入力:私がしたい
alltokens=['a','b','c','e']
positive_feature=[[{'a':aa,'b':bb},1],
[{'b':vv,'c':cc},1]
]
negative_feature=[[{'e':ee,'b':bb},0]
]
出力は次のとおりです。positive_doc_frequencyリストで
positive_doc_frequency=[1,2,1,0]
negative_doc_frequency=[0,1,0,1]
1,2,1,0 ''「は、positive_featureリストに1回発生し、Bの略'が2回発生し、' c 'が1回発生し、' e 'がpositive_featureリストで0回発生する。
どのようにこのコードはおそらく8時間稼動しています?あなたのコードで
collections.Counter
を使用しては、次のようになりますか –
あなたはそれがその長さの間走っていたのですか?私は印刷文をいくつか入れて、あなたがどこにいるかを監視することができます。 @EliSadoff私の賭けは、OPはサンプルデータを提供しているだけで、実際の情報は設定されていないということです。 – Fallenreaper
それは長い間実行されておらず、スクリプトを完成させて終了しました。単にprintステートメントを追加すると、 'print(positive_doc_frequency)' print(negative_doc_frequency) ' – user2728397