-1

Countという名前のクラスがあります。

def __init__(self, caters):
    self.form = collections.defaultdict(collection.Counter)
    self.caters = {caters: Catergory(caters) for caters in cats}

私はいくつかのファイルから情報を読み、それに価値を与えました、

def read_file(file_name, level, counters):
    data = open(file_name).read()
    counters.caters[level].docs.add(file_name)
    for token in blabla:
        counter.form[token][file_name] += 1

どのファイルにあるかに関係なく、各トークンの合計頻度を取得したい場合はどうすればよいですか?

特定のレベルで特定の単語の頻度を取得する方法。トークンの名前はdog、level = 1、freq [dog] [1]を取得したいですか?

4

2 に答える 2

1

他の人のように、私は何かを包括的に与えるのに十分な文脈を持っているかどうかわかりません。しかし、この行:

counter.form[token][file_name] += 1

counter.formトークン/ファイル名の組み合わせごとに個別のカウントが含まれることになります。これは、カウンターの初期化であるとあなたが言ったことによって裏付けられています。

self.form = collections.defaultdict(collections.Counter)

つまり、これはself.formデフォルトの辞書であり、そのデフォルト値はのインスタンスですcollection.Counter(基本的defaultdict(int)に、いくつかの追加メソッド、IIRCがあります)。つまり、基本的には2次元カウンターです。

トークンがどのファイルにあるかに関係なくトークンのカウントが必要な場合は、基本的にカウンターのパラメーターにはなりたくないのでfile_name、カウンターは1次元である必要があります。したがって、カウンターの初期化を次のように変更することを検討します。

self.form = collections.Counter()

そして、カウントの増分を次のように変更します。

counter.form[token] += 1

プログラムの残りの部分の構造に基づいて、さらに変更が必要になる可能性があります。しかし、うまくいけば、これはあなたを正しい方向に導くでしょう。

于 2012-04-23T01:22:41.803 に答える
0

collections.defaultdict(int)を使用して、トークンのインスタンスをカウントします。各ファイル(私の例ではtoken_counts)に同じトークンカウンターコレクションを使用して、関心のあるすべてのファイルにこのようなコードを適用できます。

token_counts = collections.defaultdict(int)
with open('foo.txt') as f:
    for line in f:
        for token in line.split():
            token_counts[token] += 1
for token, count in token_counts.items():
    print token, count

私はあなたの質問が少し曖昧だと思ったことを認めなければなりません。これはあなたが探しているものについての私の最良の推測です。

于 2012-04-23T00:33:33.447 に答える