作者|KheirieElhariri编译|VK来源|TowardsDataScience原链接:健康护照,又称绿色护照COVID-19流行病的结果。
健康护照在世界各地引起了广泛的争议。当政府认为这是一个限制病毒传播的解决方案时,许多人和团体坚决反对这是一种侵犯人权的行为。因此,我决定在健康护照的推特上训练我的数据分析技能,特别是自然语言处理(NLP)数据可视化。
为了开始这个项目,创建一个项目twitter开发者账户获取密钥和token以通过twitter检索数据非常重要。
本文将不详细介绍推特提取步骤;但值得一提的是,提取的推文仅为英文,搜索查询如下:
此search_query搜索任何包含上述一个或多个关键字的推文,不包括媒体转发和推文。
如下所示:
我对以下三个专栏感兴趣:
user_locationcolumn-检查并可视化每个国家的推文数量date-检查推文的日期text-通过unigram、bigram和trigram对日期列进行文本分析是一项非常简单的任务。使用以下代码行从日期列中删除时间,以验证推文的日期:
然后,使用value_counts()方法显示唯一日期的计数。
位置分析的目的是通过计算每个国家的推文数量来获得推文来源的一般概况。
有必要实现这一点user_location一些预处理列。matplotlib.pyplot和geopandas也用于以图形图表和地理空间地图的形式可视化结果。
预处理user_location列是从列中找到的数据中提取国家名称的重要任务。
“user_location列中的一些数据毫无意义,比如LionelMessi’sTrophyRoom”和“Whereareyou因此,第一步是删除任何不属于位置的内容。这是通过使用的spaCy库进行命名实体识别来实现的。
上述代码用于删除所有在位置上毫无意义的内容;然而,user_location不仅包括国家名称,还包括城市和州,如London”或“NewYork,NY。
所以,我决定用geopy国家名称来自城市和州。
我用它来显示国家名称。np.unique()方法。
正如你能清楚地注意到的,有些结果是用英语以外的语言显示的,有些结果是用/或-分开的各种语言显示的。此外,一些结果仍然没有指明国家名称,如TorontoHargeis”和“DetroitLasVegas”。
我从文本中删除/和-,并使用这些图标背后的姓氏来解决这些问题。我还手动用相关国家名称替换了一些地点名称。最后,我用了googletrans库自动将非英语国家名称翻译成英语。
请注意,我保留了来自不同国家的城市的位置(例如LondonBxlParis)不变。以下是上述步骤的完整代码:
不幸的是,仍然有一些国家的名字没有正确翻译,所以我不得不手动用英文版本取代它。
最后,我创建了两个字典:1)countries_valuesdictionary,它将所有国家的名称存储为每个国家的关键字tweet数字存储为一个值;2)main_countriesdictionary,它将tweet最多的国家存储在一个名为others所有其他国家都在关键词下分组。
在预处理user_location我决定在列以获得国家名称后使用它matplotlib.pyplot和geopandas结果以地图和饼图的形式可视化。
绘制饼图时,只使用之前创建的字典main_countries就够了。然而,创建地理数据帧来显示每个国家的推文数量是非常重要的。
创建GeoDataFrame
创建GeoDataFrame第一步是从countries_values字典创建了存储每个国家的数据框iso_alpha3代码。pycountry库用于获取iso代码。
第二步是使用geopandas库加载worldGeoDataFrame,如下所示:
需要注意的是,有些国家iso_a因此,我必须手动更新代码,如下所示:
为了最终确定地理数据帧,世界地理数据框架和国家数据框架(国家/地区)df)合并到国家/地区代码(即国家/地区代码)(即iso_a3”)中。
绘制地图和饼图
下面的代码显示了绘制地图和饼图的步骤。
最终结果如下:
结果表明,大多数推特来自英语国家(美国、英国、加拿大、澳大利亚和南非)。
这背后的原因可能是收集的推特只有英语。如果选择其他语言,结果可能会有所不同。法国是欧洲申请卫生通行证最严格的国家之一,定期举行反对卫生通行证概念的示威活动,可以解释为什么法国不是英语国家,但仍然是前几名。
文本分析侧重于获取推文unigram,bigram和trigram。unigram在这个云中,通过一个词云可视化,bigram和trigram显示在条形图上。这些是通过应用程序TF_IDF实现的目标是了解推特中最常用的术语,从而帮助我们了解推特的立场。
在获得unigram、bigram和trigram以前,文本预处理非常重要。下面,我列出了预处理文本的步骤,以及本节末尾显示的完整代码
1-转换为小写
2-删除URL
3-将俚语转化为原始形式
4-删除提及
5-删除标点符号
6-词形还原
7-删除停止词
8-删除数字
9-删除国家和城市的名称以避免出现在国家或城市名称之前)n-gram我决定从推特上删除)
完整的文本预处理代码:
从unigrams创建词云
如下图所示,我决定创建一个词云来显示推文中最突出的单词。TfidfVectorizer实现了这一点,其中默认的ngram_range(1,1),表示unigram。
正如所料,'passport','vaccine','vaccination','pass'和*'covid*等词汇丰富。这很正常,因为这些都是推特的主题
另外,提取tweet搜索查询将重点放在这些关键字上。然而,如果我们仔细观察,我们会注意到其他有助于进一步分析的单词,如*'protest','stop','enforce','refuse','right'和'mandate'*。
在Unigram每个单词的出现都被认为是独立于它前面的单词,这并不总是使它成为文本分析的最佳选择。因此,我决定进一步检查它bigram和trigram,看看他们是否能提供更多。
获取和可视化bigram和trigram
获取unigram、bigram和trigram步骤非常相似。唯一需要更新的参数是TfidfVectorizer中的ngram_range,其中对于Unigram,(1,1)(默认值)Bigram,它是(2,2),对Trigram,它是(3,3)。
我用条形图显示前100bigram和trigram。matplotlib.pyplot和seaborn这种可视化对库至关重要。以下是可视化数据的代码示例:
就像词云一样,‘将’vaccinepassport','covidpass'和*'healthpass'*很容易理解。
如果我们进一步研究,我们可以找到其他可能对分析有用的东西bigram和trigram。例如,'herdimmunity','passprotestor','fakevaccine','killpopulation','spreadvirus'和*'fullyvaccinated'*。
有趣的trigram可能是*'realthreatpeople'*和*'antivaccinepassport'*。也就是说,准确的结论需要进一步深入的分析。此外,我建议前100名bigram和trigram进行更深入的研究和情绪分析。
在本文中,我解释了在健康护照推特上进行数据分析的步骤。
为实现该项目,采用命名实体识别、文本预处理、通过命名实体识别、文本预处理等多种自然语言处理技术unigram、bigram和trigram文本分析。此外,以饼图、地理空间图、条形图、词云等形式的数据可视化显示结果。
最近,许多用户正在寻找护照232056Z回答空间,找到43147380张原创护照2320556Z空间设计图片,今天总结几个答案给大家解读!97%的新读者认为(护照232056Z空间:健康护照推文数据分析)值得一读!
毕业证样本网创作《护照2320556Z空间:健康护照推文数据分析》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/249380.html