不幸的人各有不幸吗?文本分析流浪汉乞讨标语牌后发现的套路(附代码)

简介:


流浪者惯用一张手写标语牌来表达自己,我们对数百名纽约街头流浪者手中的标语做了文本分析,想看看他们希望传达的声音。


纽约的无家可归者普遍使用两种乞讨方式:一种是在十字路口的角落或地铁站与站之间的车厢里反复唠叨他们的困境,这种方式在要到一点小钱的同时也会招致周围游客的厌恶。另一种方式是举一个纸质标语牌,在上面写上他们要说的话。


标语牌显然更具优势。因为相比于口头表述,文字扫一眼更快,增减更灵活并允许他人自由选择看或不看。不幸的是,我们大多数人路过乞讨者时都会选择忽视那些标语牌。这种行为是最方便的,也是最现实的。毕竟在纽约有超过6万名乞讨者,关注他们每一个似乎不是很现实。


所以,假设你平时并没有注意这些标语牌,你觉得他们一般都写了些什么?

 

上图:在谷歌上输入词条“纽约无家可归者的标牌”后给出的搜索结果

 

弄明白纽约无家可归者标语牌上

文字内容的第1步

 

事实上,搜集和转录这些数据就够写一篇博客了,这里只做一些概括性的描述。首先在google、推特和Instagram (一個免费提供在线图片及影片分享的社交应用)上搜索“New York City homeless sign”或类似的词条,你会得到几百张来自新闻报道、社交媒体的贴文和个人摄影的可用照片。


但是这些标语牌往往难以转录。因为这些照片一般质量较差,没有聚焦,或是拍摄角度太偏。即使一个标语牌的文字完全清晰可见,也会存在一些其他问题。如乞讨者可能会使用一些特殊(经常是错误)的拼写、标点符号、换行符和手写字体。有时他们所表达的信息并非简单一句话,而是几乎没有任何线索连接成句的各种想法。

 

#nychomeless#homeless#heraldsquare

上图:例举纽约无家可归者写的一句有语病的句子


些标语可能有凌乱、想法模糊的特点,这些会造成转录困难。


我们可以使用一些修正标准来规整文本内容,以方便进一步描述和分析,例如纠正一些简单的书写错误和使用完整拼写代替符号表述(“4” 换成 “for”, “+” 换成 “and”)。我们再使用R语言提供的文本挖掘包忽略掉大小写、换行符和其他标点符号之间的不一致,最终得到标准化的数据。


汇集了244条标语用于文本分析

流浪者们的声音


最后,我们汇集了244条标语用于文本分析(数据集链接:https://github.com/PerplexCity/Sign_From_Below/blob/master/transcribed_signs.csv)对于文本挖掘而言,244条文本的语料库相对来说较小。通常,《战争与和平》这样大块头的书或推特上百万条的文本才会以下面的方式进行分析。然而,我们还是找到了合理可信的规律。


幸福的人都是相似的,不幸的人则各有各的不幸。尽管如此,通过对这几百条标语进行筛选,我们还是可以发现,乞讨者想要通过标志牌说服他人所采用的几种固定套路:大部分情况下他们会把自己描述成更值得同情的对象,例如怀孕的母亲,退伍的军人,或抢劫受害者。有些人会尝试一些小聪明(我打赌你看了这句话会留下1美元),其他的则比较典型(我和老虎伍兹有一段绯闻,看看我现在的下场)。


通常他们会先一步回答你的疑惑。如:为什么他们没有家?(丈夫去世、没有保险、丢失一切、无家可归、你能帮帮我吗、上帝保佑你、感恩节快乐)。为什么他们不去其他地方?(需要一张车票、赚得35美元去新泽西州大西洋城、那里我有地方住并且有一个工作机会)。


虽然有很多奇闻轶事,但这是一个数据博客,所以我们需要数据来说明问题。


前25个出现频率最高的单词


上图:纽约无家可归者的标牌上使用频率最高的25个单词


如上述词频表所示,无家可归者的优先表述是寻求帮助(“help”)和表明自己无家可归(“homeless”),并始终保持礼貌(“please”)。


在文本挖掘中,像“and”或 “the”一类的常见词经常会被去掉,因为他们会稀释整个高频词汇表。有趣的是,在这个样本中这些词并没有被去掉,但竟也没有排到我们词频表的最前面。这说明两个问题:首先,无家可归者不太可能会去使用这些如此容易被预测到的词,可能是为了节省空间和提高浏览速度;其次,这也表明无家可归者使用“help” 和 “homeless”这些词的频率非常高,正如一般的文本使用“the”(4%)这类普遍的术语一样。


你可能会把上图的y轴看作是独立的一些单词,但是也可以把他们看作是一元语法(unigrams,比如大数据的unigram形式为:大/数/据),或者是N元语法(n-gram,语言学专业术语,表示n个单词组成的序列)的最简单形式。我们可以对二元词(bigram,两个单词组成的短语)的频率进行排序,如下:


【由于我们不能使用bigrams(双单词)的频率除以单词数量得到相对频率,所以x轴向左对齐表示绝对频率】


可以看到,第一个图表中一些单词的搭配在了上图中聚集到了一起。比如,“Please” 和“help”使用很频繁,它们联合在一起使用也很频繁,类似的还有“God” 和 “bless”。


需要注意到是,这种创建二元词(bigrams)、三元词(trigrams)和其他多元词的方式是根据原有文本来模拟产生新文本的基础。我们也可以尝试随机选择一些词来伪造一个自然的句子,通过这种方式得到的句子读起来跛脚可笑。但是如果你知道哪些序列是合理的,你就可以拼凑出短语和句子,就像拼火车一样。


一个简单的例子,假如你使用“please”作为开头,二元词(bigrams)频率表能预测下一个单词“help”,然后你可以连接到“thank,” “you,” “God,” 和 “bless”,即马尔可夫文本生成链,它是网络机器模仿人类写作的原理。


多元词(n-gram)的单词数越多,模拟的写作看起来就越接近于人类,因为你使用的基于真实文本的片段单元更长。下图是在无家可归者标语样本上使用trigrams生成短句的示例。其中一些结果看起来毫无意义,但其他的你能想象到或许是来自某个真实的标语:


上图:无家可归者标语模拟结果的截图


呃,这里我们使用这些标语生成假文本似乎玩笑开得有点过了,毕竟现在纽约及其他城市无家可归还是一个很严重的问题。我们的分析就到这里了。如果你对文本挖掘很感兴趣,并且想要进一步了解Andrey Kotov的这个项目或者其中使用的R语言知识,两者都提到了本文。你也可以查看博客使用的分析数据和程序,链接在文章的最后。


最后,如果你想要帮助这些无家可归的人,可以捐款给Bowery Mission,它为纽约的流浪者提供住所、食物和衣服。

原文发布时间为:2017-02-05

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
13天前
|
存储 算法 决策智能
《C 语言下模拟退火算法于组合优化的应用要点全解析》
组合优化问题是计算机科学与数学的交叉领域中的研究热点。模拟退火算法作为一种基于概率的随机搜索方法,通过模拟固体退火过程,能够在解空间中高效寻找全局最优或近似最优解。本文探讨了用C语言实现模拟退火算法的关键步骤,包括算法原理、数据结构设计、温度参数控制、邻域生成与搜索策略、接受准则、终止条件及性能评估与调优,旨在为解决组合优化问题提供有效途径。
59 11
|
7月前
|
机器学习/深度学习 存储 算法
【模式识别】探秘分类奥秘:K-近邻算法解密与实战
【模式识别】探秘分类奥秘:K-近邻算法解密与实战
77 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
【模式识别】探秘分类奥秘:最近邻算法解密与实战
【模式识别】探秘分类奥秘:最近邻算法解密与实战
75 0
|
机器学习/深度学习 数据采集 算法
乳腺癌预测的黑科技!一起探索 R 语言和随机森林算法的奇妙之处!
本文旨在综述R语言和随机森林算法在乳腺癌研究中的应用,探讨其在乳腺癌预测、诊断和个性化治疗中的作用。通过对相关文献和实例的分析,该研究将提供关于使用R语言和随机森林算法改进乳腺癌研究的新见解,并对未来的发展方向和挑战进行讨论。
242 0
|
存储 自然语言处理 算法
【基础算法Ⅰ】算法入门篇
【基础算法Ⅰ】算法入门篇
|
机器学习/深度学习 搜索推荐 算法
|
机器学习/深度学习 搜索推荐 算法
|
算法
重温算法,加深理解
算法在开发中的地位我们都很清楚,但是呢实际上项目里用到的算法并不是很多,虽然不是必须但是我们还是要懂算法,理解算法,运用算法。前几年肝了很多算法,但是这玩意不经常练习就会忘记,今天就重新把算法捡起来吧。
99 0
重温算法,加深理解
|
机器学习/深度学习 人工智能 算法
畅快!5000字通俗讲透决策树基本原理
在当今这个人工智能时代,似乎人人都或多或少听过机器学习算法;而在众多机器学习算法中,决策树则无疑是最重要的经典算法之一。这里,称其最重要的经典算法是因为以此为基础,诞生了一大批集成算法,包括Random Forest、Adaboost、GBDT、xgboost,lightgbm,其中xgboost和lightgbm更是当先炙手可热的大赛算法;而又称其为之一,则是出于严谨和低调。实际上,决策树算法也是个人最喜爱的算法之一(另一个是Naive Bayes),不仅出于其算法思想直观易懂(相较于SVM而言,简直好太多),更在于其较好的效果和巧妙的设计。似乎每个算法从业人员都会开一讲决策树专题,那么今天
315 0
畅快!5000字通俗讲透决策树基本原理
|
存储 人工智能 搜索推荐
重温前端10大排序算法(长文建议收藏)
本文主要讲前端10大排序算法
161 0