拿 NLP 来分析我自己的 Facebook 数据,会发生什么?

本文为 AI 研习社编译的技术博客,原标题 Mapping My Facebook Data — Part 1: Simple NLP,作者为 Hunter Heidenreich。 翻译 | 老赵 莫青悠 校对 | 付腾 整理 | MY

当一个 NLP(自然语言处理)在观察我的写作风格(也是如何处理我自己的 Facebook 数据!)

概述

就在不久之前,我还十分痴迷于思考我在一天之内产生的文本数据总量的问题上。如果你像我一样,做大量的书写工作,这无疑是一个机会,邮件,短信,Facebook。当然,你也可能还有其他的更有创造性的输出。可能你写日记,写音乐等等。如果你是个学生,那么你可能还有一些需要书写的作用。对于我本人来说,我真的很希望可以从我产生的这些文本数据中得到一些启示,使用 NLP 来分析这些数据真的是一件非常酷的事情。

本系列将会记录我是如何去实现这一想法的,如果你也感兴趣的话,你也可以参照本系列,自己去尝试一下。

找到你的数据

在考虑过我所有的数据之后,我决定聚焦于以下几个数据源:

  • 我写的学校作业
  • 我的日记
  • 我创作的歌曲集
  • 我的 Facebook 数据(包括我的评论,帖子和聊天内容)

在我整个工程中我使用了以上所有的数据源,但是在本系列中,我将仅仅使用我的 Facebook 数据。

对大多数数据来说,我只需要将它放入一个文本文件中,然后调用这个文本文件。但是对于 Facebook 的数据,我需要做一些额外的预处理。

如何得到你的 Facebook 数据

我们要如何能够获取到 Facebook 的数据呢?事实上要你想象的简单很多。现在(2018.8.20),你可以通过以下步骤获得你的数据:

  • 登入 Facebook
  • 点击右上角的倒三角符号
  • 点击设置
  • 点击左上第三个选项“你的 Facebook 信息(Your Facebook Information)”
  • 下一级菜单中就有“下载你的信息(Download Your Information)”

接下来,你就可以选择你的所需要的数据,可以选择某时间段内的,也可以选择以哪种格式存储你的数据。

我选择以 JSON 格式下载了所有的数据。当我全部下载完毕后,我就得到了如下图的文件结构:

每个文件夹中的文件都是我要求的 JSON 格式的。

预处理你的 Facebook 数据

我打算下载所有的 Facebook 数据,但是我并不希望在这个课题中使用所有的 Facebook 数据。对这个课题而言,我只关心我的帖子,评论和聊天历史。为了做到这些,我为每个种类的数据写了一个预处理脚本来下载所需要的内容到文本文件。

首先,处理信息:

你在这里会看到的是我正在遍历我的 messages 文件夹中的所有子文件夹。我从那里做的是我在信息 JSON 中读到的。对于每个可用的信息,我会检查它是否是我发送的信息。如果它不是 Facebook 默认的“You are now connected on Messenger”。接着我会使用它。我给信息添加时间戳,然后将其添加到采用 year.month.day.txt 格式的文件中,这是我标记所有文本文件的格式,以便我可以记录词汇随时间的变化。

如果某些情况下,JSON 的关键字不工作,我会忽略它。

对我写的帖子我做了非常类似的事情:

我的评论:

从那里开始,我已准备好使用我的 Facebook 数据。

载入数据

首先,我们将编写一个简单的函数来获取特定类别中所有文件的列表。这将使我们能够轻松跟踪哪个是哪个,并且我们将在操作和分析数据时保留这些命名方案。

在我们实际读入数据之前,我们将编写一个函数,我们将用它以几种不同的方式预处理数据。

我们在这里做的是制作我们文本的 4 种变体。我们正在生产:

  • 我们的原始数据删除了标点符号和小写
  • 删除了停止词的数据
  • 我们的数据源于此
  • 我们的数据被推崇

考虑到这一点,我们现在可以创建一个基本对象,该对象将保存我们的文件数据,并允许用于在同一天集合来自 Facebook 的不同写作源:

现在让我们加载我们的数据并对其进行预处理。 我将在集合数据上演示代码,但它也适用于其他输入文件列表:

这可能需要一小段时间,但是当我们完成后,我们将能够开始查看有关我们文本的一些基本内容!

我最喜欢的词是什么?

让我们从基础开始吧。我们将这些单词列表加载到各种来源中。让我们来算一下,看看我们最常用的词是什么。让我们看看我们的前 20 名。

我们可以这样写:

我们可以得到一个整齐的输出:

我喜欢只看我的词汇,所以这就是为什么我只记录我的个人来源。我觉得有趣的是我经常在聊天中使用“哈哈”的变体。我的大多数评论都是某人的名字。

我的个人用词看起来像什么?

那么,如果我们想要绘制单个单词以查看我们的用法如何从顶部单词到底部单词衰减,该怎么办?我们可以编写一个通用的柱状图函数,如下所示:

从那里,我们可以修改我们的前 20 个函数,并可以将我们的注释列表直接输入到图中:

我们得到两个漂亮的图像:

我的数据的一些基本统计是什么?

让我们为我们的数据生成一些基本统计数据。让我们设置一个函数来创建一个列表:

然后生成要存储到此函数的数据:

这些只是我认为有趣的一些统计数据。我这次保存了所有数据,因为我觉得这将是最有趣的。

可以看到我在 Facebook 上有 2,147 天的文字活动。

我的首要词是“哈哈”(在那里并不奇怪)。

总词汇大小为 19,508 个单词:o

而且我已经使用了近 400 万个字符。

那是很多文字数据!

随着时间的推移,我的词汇用法是什么样的?

我想知道我的词汇用法随着时间的推移而变化。我们怎样才能产生呢?好吧,幸运的是我们给所有文件留了时间戳!

首先,让我们创建我们的绘图函数:

现在让我们编写一些函数来描绘我们的单词使用情况:

我们得到:

我觉得有趣的是,在 2013 年中期,我使用了很多单词。我不太确定我要做什么,但是当你把它删除到独特的单词时,那天我使用的 20,000 个单词,并不是很多很独特......

更不用说,你绝对可以看到 2017 年后我的 Facebook 使用率下降。

我觉得这真的很酷!

打包起来

我们终于得到它了!我们对一些 Facebook 数据的基本分析。希望你从 Facebook 数据中学到一两招,也许是你自己的一些东西!我知道当我开始分析我的时候,我确实做到了。如果你想要分享很酷的视觉效果或事物,请给我发表评论!我很想知道其他人在自己的数据中找到了什么。

下一次,我想我们会对我们的 Facebook 数据进行一些情绪分析,看看我们是否能找到任何有趣的花絮。

原文链接:https://towardsdatascience.com/mapping-my-facebook-data-part-1-simple-nlp-98ce41f7f27d

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏about云

Kafka +深度学习+ MQTT搭建可扩展的物联网平台【附源码】

物联网+大数据+机器学习将会是以后的趋势,这里介绍一篇这方面的文章包含源码。 混合机器学习基础架构构建了一个场景,利用Apache Kafka作为可扩展的中...

3433
来自专栏九彩拼盘的叨叨叨

通过分类来管理

在工作的过程中,发现很多人都没有分类的习惯:电脑桌面放着各种各样一大堆的文件;一个原型图文件夹下无序的放着很多原型图;图标文件下放着一堆文件;写的技术类的长文,...

824
来自专栏大数据和云计算技术

Automatic Management of Data and Computation in Datacenters

image.png 最近在研究数据中心的数据管理和性能优化,看了一篇2010的论文Nectar:Automatic Management of Data and...

33810
来自专栏1001482的专栏

从 0 到 1 打造轻量级图像识别服务框架

在这个AI时代,图像识别技术作为其基础能力之一,也在快速发展中,今天来聊聊图像识别的服务运行框架。

3.4K2
来自专栏专知

【观点】漫谈推荐系统及数据库技术

点击上方“专知”关注获取更多AI知识! 【导读】推荐系统和数据库技术,一个是偏机器学习数据挖掘相关的应用,一个是偏系统存储相关的技术,这两者在实际中有很大的应用...

4299
来自专栏编程

机器学习之环境搭建

读书的时候,很喜欢数学,然则,发现生活中很少用到稍微深点的数学知识,毕业后发现工作里真心也很少用到数学,因为算法都基本用不上。再也没有接触到数学。但是我知道数学...

2996
来自专栏马洪彪

eml文件解析实例,简历信息抓取工具

先上工具效果图,如下图所示: ? 背景 某公司使用58同城进行人员招聘,当有应聘人员通过58同城给该公司投简历后,58同城会发送一份邮件到该公司的注册邮箱,邮件...

3967
来自专栏老九学堂

谷歌最新开源酷炫项目集,前端、算法、机器学习都有了

2017年,Google 在 GitHub 上大约有 900 名活跃用户,共推送约 1100 个顶级库。 ? Google 开源了许多非常有价值的项目比如十分流...

5425
来自专栏大数据挖掘DT机器学习

机器学习数据采集入门经验分享

在新的一年里,很多人都在思考如何利用机器学习(ML)算法来提高产品或服务的质量。 PredictionIO公司与许多公司合作,部署他们的第一个ML系统和大数据基...

4108
来自专栏GA小站

GA中机器流量的产生原理

是不是有時候会在Google Analyitcs报告中的语言报告和主机名报告中看到很多奇形怪状字段的数据,这些数据是不应该出现在这里的,这些都是机器流量,比如:...

782

扫码关注云+社区