文本分类 - 错误:未定义'count'
问题描述:
我正在尝试使用Loughran/McDonald字典来分类财务文本的基调。文本分类 - 错误:未定义'count'
这是我在网上找到一个代码:
# Get tone dictionary
import re
with open('lmdict.txt') as list:
lines = list.readlines()
dict = {}
for l in lines:
if l[0:2] == '>>':
cat = l[2:].strip()
dict[cat] = []
else:
l = l.strip()
if l:
dict[cat].append(l)
# Set up regular expressions
regex = {}
for cat in dict.keys():
pattern = '\\b(?:' + '|'.join(dict[cat]) + ')\\b'
regex[cat] = re.compile(pattern, re.IGNORECASE)
# Get tone count
text = "Bsp.text"
wordcount = len(text.split())
for cat in count.keys():
count[cat] = len(regex[cat].findall(text))
print(count)
很少有错误发生前,所以我加了进口重新和文本=“Bsp.text”到我想将文件分配归类为变量文本(我希望我做对了吗?)。 不幸的是,另一个错误现在:
Traceback (most recent call last):
File "C:\Users\M\Desktop\Python34\xWordlist.py", line 25, in <module>
for cat in count.keys():
NameError: name 'count' is not defined
我怎样才能解决这个问题?我是Python新手,如果代码中有任何其他错误,请告诉我。我真的很感激它!
更新:我改变了代码的最后一部分,现在的工作:
# Get tone count
with open('Bsp.txt', 'r') as content_file:
content = content_file.read()
count = {}
wordcount = len(content.split())
for cat in dict.keys():
count[cat] = len(regex[cat].findall(content))
print(count)
答
你计数变量从未被分配...... 也许你的意思是:
count = {}
for cat in dict.keys():
...
此外,我没有看到你的计数变量的任何增量。 也许:
count[cat] = len(regex[cat].findall(text))
应该是:
if cat not in count:
count[cat] = 0
count[cat] += len(regex[cat].findall(text))
我的 '=' 号前加 '+' ...
注意:在使用dict
作为变量的名称是不是最好的事情,因为它可能会导致意想不到的后果,最多它会混淆读者。 dict
是一个内置类来表示字典。
没错,没有定义。目前还不清楚你为什么会这么想;你期望'count'来自哪里? – jonrsharpe
我认为变量名是错误的。你从来没有分配过“count”。分配的变量是“wordcount”。计数预计分配在哪里? – skjoshi
谢谢。我编辑了代码的最后一部分。 然而,输出是:{'negative':0,'positive':0}。 为什么它仍然是0?文中字典中肯定有负面和正面的词语......我必须添加什么来使其数量? @skjoshi –