用于解析facebook messenger数据的Python库

zucked的Python项目详细描述



扎克:分析你的Facebook Messenger数据

这是什么?在

zucked是查看facebook messenger数据的一种快速简便的方法。在

主要特点

  • 在Facebook Messenger上轻松查看您最常用的单词
  • 查看其他facebook用户发送给你最多的文字
  • 检查您向个人或组发送的消息量
  • 搜索您可能已发送或接收的单词或短语以查看:该单词或短语所在的邮件,以及发件人和发送时间

安装

源代码当前托管在GitHub上:https://github.com/Jordan-Milne/zucked

最新发布的版本可在Python package index (PyPI)

pip install zucked

教程

  • download您的Facebook Messenger数据(How to

    • 选择文件类型时,请确保它是JSON而不是HTML
  • 目录中创建一个python文件,该文件与您下载的“收件箱”文件夹相同-不在收件箱文件夹内

导入

要导入zucked,请键入:

import zucked as zd

阅读消息

read_messages另存为变量,稍后我们将调用该变量的方法。在

示例:

^{pr2}$

顶部单词()

调用ms上的top_words(facebook_name, stop_words=True, period='all time')返回用户发送的最常见单词及其发送次数的有序列表: 此方法适用于您发送的从某个用户收到的热门词 示例:

ms.top_words('Jordan Milne')

退货:

[('I', 3), ('love', 2), ('data', 1)]

如果你想过滤掉停止词,(what are stop words)并且只是某一年的最上面的单词,那么方法就是:

ms.top_words('Jordan Milne', stop_words=False, period='2016')

顶级护航队

调用ms上的top_convos(facebook_name)以返回一个有序的列表,列出该个人或组的名称以及您发送给该个人或组的消息量:

示例:

ms.top_convos('Jordan Milne')

退货:

[('User 1', 33),
 ('User 2', 21)]

如果你想在某一年里获得最热门的对话,那么方法就是:

ms.top_words('Jordan Milne', period='2016')

搜索_messages()

调用ms上的search_messages(facebook_name, value)返回一个列表,该列表包含作为value输入的单词或短语的完整消息,消息发送给谁,以及消息发送的日期和时间。在

示例:

ms.search_messages('Jordan Milne', 'hello')

退货:

[{'Message': 'I'm sorry but, hello world',
  'Sent to': 'Auston Matthews',
  'Date': '2019-06-09 11:46:54'}]

此方法适用于您发送的和从某个用户收到的消息

格式化\u top_words()

ms上调用format_top_words(facebook_name, input_list, year)返回一个嵌套字典,其中包含用户输入的单词列表的年份和计数,这些单词是为绘制而专门设置的格式。在

示例:

ms.format_top_words('Jordan Milne', ['Matthews','Tavares','Marner','Andersen'], '2019')

退货:

{'2019': {'Matthews': 75, 'Andersen': 70, 'Marner': 17, 'Tavares': 10}}

现在是有趣的部分。如果你想知道你每年使用前5个单词的频率,可以通过几个简单的步骤来完成。在

使用以下for循环将所有年份输入同一字典:

example={}
for i in range(2010,2021):
    example.update(ms.format_top_words('Jordan Milne',['Matthews','Tavares','Marner','Andersen'], str(i)))

现在我们已经收集并整理了数据,我们准备绘制:

import matplotlib.pyplot as plt

# get inner keys
inner_keys = list(example.values())[0].keys()

# x-axis is the outer keys
x_axis_values = list(example.keys())

# loop through inner_keys
plt.title("Facebook Messenger Word Count")
plt.xlabel("Year")
plt.ylabel("Count");
for x in inner_keys:

    # create a list of values for inner key
    y_axis_values = [v[x] for v in example.values()]

    # plot each inner key
    plt.plot(x_axis_values, y_axis_values, label=x)
    plt.legend()

输出应该如下:example

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用多个参数的枚举   从Oracle到Redis的java复制表   java如何保护tomcat服务器中的db用户名和密码。xml   java如何使用注册密钥保护移动应用程序?   java在什么情况下超类不应该是抽象的?   java Backspace键在macOS上的Scala REPL中不起作用   arduino Java+Uno+RFID:调用方法读取Java中的RFID   带有where语句中集合的java JPA查询   java如何向基于Tyrus注释的客户端添加请求头   java对我的二进制搜索算法的反馈   java重新访问数据库时文件的内容不正确   用户在字符串中输入值后退出While循环(Java)   java如何在Maven中的多个项目之间共享项目依赖关系?   java Close从未在数据库上被明确调用   在java中从文件读入布尔矩阵   Java:如何使用父节点将XML流拆分为小型XML文档。VTDXML