分析一个文件中的单词并检查它们是否在另一个文件的每一行中并且在...中的问题

时间:2016-11-15 12:33:21

标签: python python-3.x sentiment-analysis

所以,我试图搜索一下file2.txt中的每一行是否包含file1.txt中的任何单词1.所以如果例如:

文件1:

love,10
like,5
best,10
hate,1
lol,10
better,10
worst,1

文件2:我想看的一堆句子,如果它包含任何file1(超过200行)

我有一种方法可以在我的程序中使用我自己的文件来实现这一点,并且它可以工作,但它将总值添加到一个大列表中(如果整个文件说爱43次,那么爱:43,但我'我正在为每一行寻找单独的列表..所以如果一行包含爱4次而另外5次,那么程序将指示这个... **具体来说,我要做的是总计每行中的关键字数量该文件的行(如果一行包含4个关键字,则该行的总数为4,以及与关键字关联的值(因此您在我的示例文件中看到如何与关键字关联的值?如果一行中的一行)文件是:Hi I love my boyfriend but I like my bestfriend lol然后就像{Love: 1, like: , lol:1}(keywords = 3, Total = 25一样(总数来自列表中与它们相关的值)

如果第二行只是

I hate my life. It is the worst day ever!

那么这将是{hate: 1, worst: 1}(keywords = 2, total = 2

我有这个,它有效,但有没有办法修改它,而不是打印一个大的行,如:

{'please': 24, 'worst': 40, 'regrets': 1, 'hate': 70,... etc,} it simply adds the total number of keywords per line and the values associated with them?

wordcount = {}
with open('mainWords.txt', 'r') as f1, open('sentences.txt', 'r') as f2:
    words = f1.read().split()
    wordcount = { word.split(',')[0] : 0 for word in words}

    for line in f2:
        line_split = line.split()
        for word in line_split:
          if word in wordcount: 
            wordcount[word] += 1

print(wordcount)

1 个答案:

答案 0 :(得分:1)

像往常一样,collections拯救了这一天:

from collections import Counter

with open('mainWords.txt') as f:
    sentiments = {word: int(value)
                 for word, value in
                 (line.split(",") for line in f)
                 }

with open('sentences.txt') as f:
    for line in f:
        values = Counter(word for word in line.split() if word in sentiments)
        print(values)
        print(sum(values[word]*sentiments[word] for word in values))  # total
        print(len(values))  # keywords

您在字典sentiments中有情感极性供以后使用。