2017-08-01 27 views
0

我正在嘗試使用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) 
+0

沒錯,沒有定義。目前還不清楚你爲什麼會這麼想;你期望'count'來自哪裏? – jonrsharpe

+1

我認爲變量名是錯誤的。你從來沒有分配過「count」。分配的變量是「wordcount」。計數預計分配在哪裏? – skjoshi

+0

謝謝。我編輯了代碼的最後一部分。 然而,輸出是:{'negative':0,'positive':0}。 爲什麼它仍然是0?文中字典中肯定有負面和正面的詞語......我必須添加什麼來使其數量? @skjoshi –

回答

0

計數變量從未被分配...... 也許你的意思是:

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是一個內置類來表示字典。

+1

你可能想要注意的是,「dict」不是一個好用的名字,因爲它是內置的python的名稱。 – Baldrickk

+0

謝謝,我編輯 – aramaki

+0

謝謝。我編輯了代碼的最後一部分。 然而,輸出是:{'negative':0,'positive':0}。 爲什麼它仍然是0?文中字典中肯定有負面和正面的詞語......我必須添加什麼來使其數量? @Baldrickk –