作者|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空間:健康護照推文數據分析》發布不易,請尊重! 轉轉請注明出處:http://www.fangrui88.com.cn/249380.html