我有这样的代码,它应该把一个积极的词集和一个主题文本进行比较。一直做得很好,直到我发现重复的文本没有被考虑在内。
文本:这是一部非常好的电影,太好了
肯定列表:好,好,等等。
在以下实现中,脚本只计算一次“很好”:
readFile = open('test.txt','r').read()
readFileList = readFile.split('\n')
counter = 0
for eachNeg in negWords:
if eachNeg in readFile:
counter -= 1
print eachNeg
print counter
for eachPos in posWords:
if eachPos in readFile:
counter +=1
print eachPos
print counter发布于 2014-09-28 14:18:46
密码就像你描述的那样。如果单词在文本中,请告诉python将1添加到计数器中,如:
a in [aaaabbbbccc]
>> True您需要另一个for循环来计数每个单词:
for eachPos in posWords:
for word in readFile:
if eachPos == word:
counter +=1
print eachPos
print counterIam不能100%确定您是否可以在readFile上迭代,但是iam正向,您可以,或者至少可以找到一种方法,使它成为一个列表,正如Bartlomiej提到的使用readfile.split()。这是一种非常天真的做法。
我认为还有另外一个问题,你先数单词,然后看看它们是否在你的列表中。对于这个收集和反击,这对于你的项目来说是惊人的!
发布于 2014-10-08 10:28:49
您可以通过嵌套的for loop来实现这一点,但是这并不是一个简单问题的很好的解决方案:
for posWord in posWords:
for test in readFile:
if i == test:
counter +=1
print i
print(counter)这并不是一种分析情绪的有效方法,相反,你只是在检查文本中是否存在一个没有上下文的肯定词,而这并不能告诉你多少。您处理此任务的方式忽略了日常语言中常见的语义,如双否定句、回文等等。而且,看起来你并不是在过滤文本中的停止词或词干词。见词干算法。
情绪分析应该是统计的产物。基于结构化的方法往往不像语义实现那样有用--然而,这是值得争论的(可能)。在此基础上,提出了一种基于监督学习的[binary or multiclass]文本分类方法,将文本分为正类或负类。一种典型的情感分析方法是实现朴素贝叶斯框架,尽管已经提出了更有效、更强大的方法(支持向量机、隐马尔可夫模型等)。见显著资源2。
最后说明
虽然我并不真正从事情感分析,除非我试图让我的生活变得更简单,或者赞美我已经在做的事情,但我还是研究了自然语言处理中的几个主题。我坚信,学术领域已经远远超过了商业领域的努力,事实上,公司正在产生的一些结果/结论/价格是歇斯底里的--我还没有看到一个像样的实施。如果您想了解更多关于这个领域的知识,我建议您阅读在IEEE & ACM上发表的学术期刊。
显著资源:
发布于 2014-09-28 14:18:03
您正在检查posWords和negWords中的一个单词是否包含在整个文件中。这就是为什么你每一个不同的单词只得到一个。
您要做的是循环遍历文件中的所有单词,看看它们是否包含在好/坏列表中。
要从文件中获取单词列表,可以使用没有任何参数的split()。
所以对于负面的词,它看起来是这样的:
readFile = open('test.txt','r').read()
readFileList = readFile.split()
counter = 0
for word in readFileList:
if word in negWords:
counter -= 1
print word
print counterhttps://stackoverflow.com/questions/26085711
复制相似问题