Python 想要一个整数,得到元组吗?
我试图使用一个简单的价值体系(非常简单,不期望有好的结果)来衡量文档上的“情绪” 我使用defaultdict(int)构建了一个for循环,但我只是在代码中挥舞手臂,它以元组而不是整数弹出,为找到的每个单词赋予值,而不是像我预期的那样逐行汇总。(我对这一切都很陌生,很迷茫。请不要恨我?) 我原本希望所有线路都能增值,但最终还是得到了以下几点:Python 想要一个整数,得到元组吗?,python,nltk,Python,Nltk,我试图使用一个简单的价值体系(非常简单,不期望有好的结果)来衡量文档上的“情绪” 我使用defaultdict(int)构建了一个for循环,但我只是在代码中挥舞手臂,它以元组而不是整数弹出,为找到的每个单词赋予值,而不是像我预期的那样逐行汇总。(我对这一切都很陌生,很迷茫。请不要恨我?) 我原本希望所有线路都能增值,但最终还是得到了以下几点: defaultdict(int, {'I': 75, ';': 179, '
defaultdict(int,
{'I': 75,
';': 179,
'But': 13,
'With': 0,
'Tolkien': 3,
'And': 9,
'even': 1,
'no': 0,
'“': 1,
'You': 5,
'They': 9,
'Sure': 5,
'it': 7,
'He': 16,
'Like': 2,
'Why': 0,
'Totally': 0,
'Looks': 3,
'Instead-': 0})
但时间要长得多。我不知道您想要的结果字典中的键是什么,但假设您想要行号,我想您可能会这么想:
def value_eval(doc):
value = defaultdict(int)
for lineNumber, line in enumerate(doc):
value = 0
for word in line:
if word in positive:
value += 1
if word in negative:
value -= 1
if word in intensifiers:
value *= 1.25
if word in shifters:
value *= -1.25
value[lineNumber] = value
return value
如果您希望结果中的键不是行号,那么您只需要在第二行到最后一行执行其他操作
我想知道你的意见是什么。为了实现这一点,
doc
必须是某种类型的iterable(行),其中的每个值也是iterable(words)。例如,如果doc
是一个输入文件句柄,这将不起作用。经过编辑,以包含我在看到另一篇文章之前遗漏的行的值。我认为他的理解力要好一点,但我不得不用空格分隔行,以正确地找到单词,而不是重复字符
def value_eval():
value = 0
line_values = defaultdict(int)
with open('doc.txt', 'r') as f:
lines = f.readlines()
for lineNumber, line in enumerate(lines):
words = line.split()
for word in words:
if word in positive:
print(line)
value += 1
if word in negative:
value -= 1
if word in intensifiers:
value *= 1.25
if word in shifters:
value *= -1.25
line_values[lineNumber] = value
return line_values
defaultdict(int)将创建一个字典,其中每次出现键时的值都是整数
value[line[0]]+=1
将每行的第一个单词作为键添加到词典中,并将递增赋值部分作为该键的值
我开始玩了…我的数学是正确的…有点累了,你可以添加以下内容来获得页面值
def get_avg_page_value(doc_values, total_lines, pages ):
values = 0
for x in range(total_lines):
values += doc_values[x]
print("average: {}".format(values/pages))
doc_values = value_eval()
lines_per_page = 20
total_lines = len(doc_values.values())
pages = int(total_lines/lines_per_page)
get_avg_page_value(doc_values, total_lines, pages)
用于将内容放入dict的键是
行[0]
。那似乎不对另外,我认为你想要-=和*=在一些你分别有-,和*的地方但我看不到元组。我想你的意思是别的。我不知道你所说的“逐行总结”是什么意思。你能给我们举个例子说明你想要什么吗?另外,显示您的输入“doc”。您所说的“获取元组”是什么意思?您发布的代码和输出中没有元组。另外,请注意语句value[line[0]]-1
没有任何作用-您计算一个值,然后将其丢弃。你需要-=
(在接下来的两种情况下,*=
),我想我知道你想做什么了。您希望结果字典中的键是什么?它们是字典对而不是元组。
def get_avg_page_value(doc_values, total_lines, pages ):
values = 0
for x in range(total_lines):
values += doc_values[x]
print("average: {}".format(values/pages))
doc_values = value_eval()
lines_per_page = 20
total_lines = len(doc_values.values())
pages = int(total_lines/lines_per_page)
get_avg_page_value(doc_values, total_lines, pages)