Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计数器()是嵌套列表中项目的三倍计数_Python_Nested_Nltk_Counter - Fatal编程技术网

Python 计数器()是嵌套列表中项目的三倍计数

Python 计数器()是嵌套列表中项目的三倍计数,python,nested,nltk,counter,Python,Nested,Nltk,Counter,我想搜索特定的关键字,然后创建一个字典,其中包含每个关键字的绝对计数和相对频率。我在嵌套循环中使用Counter(),该循环应该查找列表中的每个关键字,然后计算每个关键字在文档中出现的频率。但是,虽然计数器正确计算每个关键字的数量,但它会将此计数乘以关键字总数。我认为我的嵌套循环设置不正确 from nltk.tokenize import word_tokenize from nltk.corpus import stopwords from nltk import FreqDist impo

我想搜索特定的关键字,然后创建一个字典,其中包含每个关键字的绝对计数和相对频率。我在嵌套循环中使用Counter(),该循环应该查找列表中的每个关键字,然后计算每个关键字在文档中出现的频率。但是,虽然计数器正确计算每个关键字的数量,但它会将此计数乘以关键字总数。我认为我的嵌套循环设置不正确

from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk import FreqDist
import io
from collections import Counter


with io.open('copy.txt','r', encoding='utf-8') as tempFile:
    rawText =  tempFile.read()
    rawText = rawText.lower()

cnt = Counter()

tokens = word_tokenize(rawText)

keywords = ['kingdom', 'phylum', 'class', 'status']

for keyword in keywords:
    for keyword in tokens:
        cnt[keyword] += 1

for keyword in keywords:
    d = {'Keyword': keyword, 'Count': cnt[keyword], 'Frequency':cnt[keyword]/float(len(tokens))}
    print(d)
我应该看到:

{'Count': 2, 'Frequency': 0.000882223202470225, 'Keyword': 'kingdom'}
{'Count': 6, 'Frequency': 0.002646669607410675, 'Keyword': 'phylum'}
{'Count': 14, 'Frequency': 0.0061755624172915745, 'Keyword': 'class'}
{'Count': 2, 'Frequency': 0.000882223202470225, 'Keyword': 'status'}
但我看到的是:

{'Count': 8, 'Frequency': 0.000882223202470225, 'Keyword': 'kingdom'}
{'Count': 24, 'Frequency': 0.002646669607410675, 'Keyword': 'phylum'}
{'Count': 56, 'Frequency': 0.0061755624172915745, 'Keyword': 'class'}
{'Count': 8, 'Frequency': 0.000882223202470225, 'Keyword': 'status'}
问题就在这里

for keyword in keywords:
    for keyword in tokens:
        cnt[keyword] += 1
您正在一次又一次地计算关键字的长度


如果您可以发布您的
原始文本
,我可能能够提供完整的解决方案。

我想我的for循环顺序颠倒了。这似乎有效:

for token in tokens:
    if token in keywords:
        cnt[token] += 1

关键字中的第一个外部“for关键字:”循环对我来说没有意义。我上传了我正在分析的文件(只是维基百科的一个样本副本/粘贴)。谢谢你的帮助。