从Twitter数据中获取单词的频率(按日期)

时间:2017-04-30 03:12:11

标签: python twitter mapreduce nlp

我有我过滤的实时推特流数据。它看起来像这样:

2017-01-26印度RT @bnowalk:我希望民主党人在办公室里有南达科他州国家公园社交媒体实习生的勇气。

2017-01-26印度我没有非侵入性。

2017-01-27 india从零到分布式数据存储区

2017-01-27印度梅赛德斯 - 奔驰乌尼莫克 - 全能选手来自@myvan_com

2017-01-27 india RT @TONewcomer:有兴趣指导新人或难民艺术家吗?联系@Nantoronto @TorontoArts @TOArtsFdn#cdnimm ...

2017-01-28印度我的女王,我的环球小姐2016.女王马克辛,祝你好运#MissUniverse2016 #Philippines#4M4MU

2017-01-28印度2人跟着我,一个人取消了我//自动检查

2017-01-28印度多性伴侣

我希望我的输出看起来像这样:

2017-01-27 2

2017-01-28 3

2017-01-26 3

这是我到现在所写的:

total = 0

with open('pp.txt') as f:
    for line in f:
        finded = line.find('india')
        if finded != -1 and finded != 0:
            total += 1

print (total)

我不知道如何从这里开始获取特定日期“印度”一词的频率。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

你需要有一种方法按日期存储这些,所以我们需要一些容器。我打算用字典

date_dict = dict()

with open(with open('pp.txt') as f:
    for line in f:
        date = line[0:10]
        india_count = line.lower().count('india'):
        if date in date_dict:
            date_dict[date] += india_count
        else:
            date_dict[date] = india_count

这样可以将您的日期和频率转换为数据结构。但为了解决这个问题,你需要根据自己的需要重新组织它

所以我们将数据转换为元组列表,然后按日期排序:

首先将日期和频率放入列表中 - 我们将为字典中的每个键(日期)创建一个元组列表,该值将是单词india的频率。

my_dates = [(k,v) for k,v in date_dict.items()]

然后按日期排序 - 这里我们按每个元组中的第一个(第0个)值进行排序

my_dates.sort(key=lambda tup: tup[0])