【发布时间】:2016-12-06 23:48:32
【问题描述】:
我尝试根据 7000 个单词的词典进行情绪分析。该代码在 Python 中工作,但它选择所有组合而不是不同的单词。
例如,字典显示enter,文本显示enterprise。如何更改它认为不匹配的代码?
dictfile = sys.argv[1]
textfile = sys.argv[2]
a = open(textfile)
text = string.split( a.read() )
a.close()
a = open(dictfile)
lines = a.readlines()
a.close()
dic = {}
scores = {}
current_category = "Default"
scores[current_category] = 0
for line in lines:
if line[0:2] == '>>':
current_category = string.strip( line[2:] )
scores[current_category] = 0
else:
line = line.strip()
if len(line) > 0:
pattern = re.compile(line, re.IGNORECASE)
dic[pattern] = current_category
for token in text:
for pattern in dic.keys():
if pattern.match( token ):
categ = dic[pattern]
scores[categ] = scores[categ] + 1
for key in scores.keys():
print key, ":", scores[key]
【问题讨论】:
-
如果您的字典包含单词,那为什么还要使用re呢?为什么不
if line == token? -
感谢您的回答 Robin Koch。问题是字典来自一个单独的文件。我们不能在文件中包含单独的术语,因为我们正在测量情绪。我们不计算字数。提前谢谢你
-
我仍然不确定你匹配什么。你能提供一些例子吗?如果你真的做
re.compile('enter').match('entprise')你不需要正则表达式。如果您的字典实际上包含正则表达式,那么您应该将其添加到问题中。 -
我正在做的是,我创建了一个包含情绪的单独文本文件。每种情绪都包含大量与该情绪相关的单词。例如:情绪快乐包含词语;微笑、大笑、小狗、漂亮、阳光等。但也有其他不同的情感包含文字。因此,当 python 脚本被编译时,它会通过文本运行。结果如下;开心:4 伤心:1 生气:2 以此类推。现在的问题是几个单词没有被检测为一个单词。例如:如果在文本中出现阳光这个词,也会计算太阳。
-
所以你做一个字数。只是单词属于类别。你不需要 (7000) 个正则表达式。
标签: python