尝试读取文本文件并计算已定义组中的单词

时间:2018-02-07 04:31:53

标签: python csv text sentiment-analysis

我是Python新手。我正在尝试创建一个程序来读取文本文件并在文本中搜索某些分组的单词(我通过从csv读取来预定义)。例如,如果我想创建自己的“正面”定义,其中包含“兴奋”,“快乐”和“乐观”等字样,则csv将包含这些术语。我知道下面是凌乱的 - 我正在读取的txt文件包含我从csv读取的三个“正面”测试词的7次出现,但结果打印出来是25。我认为它返回字符数,而不是字数。代码:

import csv
import string
import re
from collections import Counter

remove = dict.fromkeys(map(ord, '\n' + string.punctuation))

# Read the .txt file to analyze.
with open("test.txt", "r") as f:
    textanalysis = f.read()
    textresult = textanalysis.lower().translate(remove).split()

# Read the CSV list of terms.
with open("positivetest.csv", "r") as senti_file:
    reader = csv.reader(senti_file)
    positivelist = list(reader)

# Convert term list into flat chain.
from itertools import chain
newposlist = list(chain.from_iterable(positivelist))

# Convert chain list into string.
posstring = ' '.join(str(e) for e in newposlist)
posstring2 = posstring.split(' ')
posstring3 = ', '.join('"{}"'.format(word) for word in posstring2)

# Count number of words as defined in list category
def positive(str):
  counts = dict()

  for word in posstring3:
    if word in counts:
      counts[word] += 1
    else:
      counts[word] = 1

  total = sum (counts.values())
  return total


# Print result; will write to CSV eventually
print ("Positive: ", positive(textresult))

2 个答案:

答案 0 :(得分:0)

我也是初学者,但我偶然发现了一个可能有帮助的过程。读入文件后,在每个空格,制表符和换行符处拆分文本。在您的情况下,我会将所有单词保持为小写,并在拆分调用中包含标点符号。将其保存为数组,然后使用某种循环对其进行解析,以获取每个“正”或其他单词的实例数。

看看这个,特别是“火车”功能:

https://github.com/G3Kappa/Adjustable-Markov-Chains/blob/master/markovchain.py

此外,这篇链接在开头忽略了JSON的内容,文章讨论了情绪分析:

https://dev.to/rodolfoferro/sentiment-analysis-on-trumpss-tweets-using-python-

同样适用于此链接:

http://adilmoujahid.com/posts/2014/07/twitter-analytics/

祝你好运!

答案 1 :(得分:0)

我查看了你的代码并通过我自己的一些作为样本。 根据我的想法,我有两个想法。

第一个假设:你想要一个基本的情绪计数? 获得'textresult'很棒。然后你对'积极词典' - [积极列表]做了同样的事情,我认为这将是完美的行动?然后你将[肯定列表]转换为基本上一个大句子。 你不只是: 1.通过[textresult]传递'stop_words'列表 2.合并常用词的两个数据帧[textresult(less stopwords)和positivelist] - 如'inner join' 那么基本上你的学期频率 4.然后将分数汇总起来要容易得多

第二个假设:你专注于“兴奋”,“快乐”和“乐观” 你试图将文本主题分成这3个类别? 1.再次停在[textresult] 2.下载'nrc'和/或'syuzhet'情感价词词典        他们打破了8个情绪群体的情绪化词汇        所以如果你只想要8个情绪组中的3个(子集) 3.按照你的方式进行处理[肯定列表] 4.做另一次加入

对不起,这有点匆匆,但如果我在附近的任何地方让我知道,我们可以联系。 第二次道歉,我也是一个新手python用户,我正在调整我在R中使用的内容到上面的python(它也不是微妙的:))