用于解析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第三方库


热门话题
java如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信