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

Python 尝试读取文本文件并计算定义组中的单词数,python,csv,text,sentiment-analysis,Python,Csv,Text,Sentiment Analysis,我是一个Python新手。我正在尝试创建一个程序来读取文本文件,并在该文本中搜索分组的特定单词(我通过从csv读取预定义的单词)。例如,如果我想为包含“兴奋”、“快乐”和“乐观”等词的“积极”创建自己的定义,csv将包含这些术语。我知道下面的内容很混乱-我正在读取的txt文件包含我从csv读取的三个“肯定”测试词的7次出现,但结果打印出来是25次。我认为这是返回字符数,而不是字数。代码: import csv import string import re from collections im

我是一个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))

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

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

另外,这个链接,忽略JSON内容,在开始时,文章讨论了情绪分析:

同样适用于此链接:


祝你好运

我查看了您的代码,并将自己的一些代码作为示例进行了介绍。 根据我认为你可能想要的,我有两个想法给你

第一个假设:你想要一个基本的情绪计数? 获得“文本结果”是很好的。然后你对“积极词汇”也做了同样的事——对[积极主义者],我认为这是一个完美的行动?然后你把[积极主义者]变成了一个重要的句子。 你不只是: 1.通过[textresult]传递“停止词”列表 2.合并普通字的两个数据帧[textresult(更少的停止字)和positivelist]——如“内部联接” 3.然后基本上做你的术语频率 4.那么,汇总分数就容易多了

第二个假设:你专注于“兴奋”、“快乐”和“乐观” 你想把文本主题分为这三类? 1.再次停留在[textresult] 2.下载“nrc”和/或“syuzhet”情感配价词典 他们将情绪词分为8组 所以,如果你只想要8个情绪组中的3个(子集) 3.像对待[积极列表]一样处理它 4.再加入一个

抱歉,这有点混乱,但如果我接近你的想法,请告诉我,我们可以联系。
第二个抱歉,我也是一个python新手,我正在将我在R中使用的东西改编成上面提到的python(这也不是很微妙:)

一些示例文本可能会有帮助……谢谢!基本上,我正在尝试创建自己的可自定义情绪类别。所以,我并不真正关心这三个词(兴奋、快乐、乐观)——这些只是构成一个类别的例子。例如,如果我想定义积极的含义,我可能会将这些词加上其他词包含在一个列表中,组成一个组。然后我想将文本与该组进行比较,并计算文本与该组中任何单词的匹配数。