最初產生這個專案的想法應該是在2018年10月份,當時正在學習python中,就萌生了這樣一個想法:從一個使用者這一年釋出的微博資料中,提取最有意義的top50個關鍵詞。很明顯涉及到了資料採集和自然語言處理的一些知識。
前期準備:
-
需要到微博開發平臺認證開發者;
-
在微博開發平臺建立應用;
-
域名1個,伺服器1臺;
微博應用建立和稽核
建立應用的目的就是你的網站可以接入微博,使用微博登入授權,呼叫微博開放的一些api;質量高,使用者多的應用還會被推薦到微博應用廣場等等。
建立應用需要我們填寫一些資訊,應用名稱,描述之類的。把準備好的文案直接貼上進去就可以;需要不同規格的應用圖示和三張以上應用介紹的宣傳圖。這個裡面有一個關鍵點就是應用地址,需要提供一個可訪問到的,並且包含微博元件的一個地址。這些東西提交完就可以提交稽核了,微博應用稽核的速度還算比較快的,一兩天基本差不多會稽核完。
等應用稽核完,你就可以拿著appkey和appsecret繼續往下開發了。
微博資料採集
因為微博開放的api介面裡並不提供使用者微博資料,所以才使用了資料採集的方案。第一個版本的工具是用nodejs寫的,後來換成了python的版本。
提取關鍵詞
這裡還是使用python進行處理:
-
預處理(去掉微博裡的表情、標籤等);
-
分詞(將整句分割為詞彙);
-
載入詞庫(包括通用詞庫和使用者自定義詞庫);
-
去停用詞(去除一些無意義的詞彙);
-
計算TFIDF,按權重排序;
-
取前50個詞生成詞雲圖片。
串聯專案
專案的基礎架構使用nodejs搭建,整個應用的路由訪問控制,檢視渲染,異常處理, 日誌收集,程式管理,都是使用nodejs來完成。
大致流程:
-
使用者訪問應用;
-
引導使用者到微博授權頁;
-
授權成功後,後臺拿到uid,開啟一個新的子程式進行微博詞雲圖片的生成;
-
這個時候給使用者返回一個grant頁面(此時微博詞雲的程式可能還沒結束);
-
使用者點選到下一個頁面,如果圖片已經生成了,就展示該展示的資料,如果還沒有,就給使用者等待的處理。
對,基本流程差不多就這些,比較簡單。下面看下最終的效果。
重要的知識點
- 在nodejs中呼叫python指令碼,大致思路就是生成一個shell命令,然後nodejs開啟一個子程式,在子程式中執行這個shell即可。
- h5頁面,長按儲存成圖片,這裡的大致思路如下:
我們將html轉為canvas,然後取出canvas資料放入一個img標籤裡。將這個img放到頁面最頂層,並且將不透明度設為0就可以了。然後在微信、微博等app裡面,長按就可以儲存到手機了,具體實現程式碼請看下圖。
總結
更多的是一些互動上的細化處理,讓使用者有更好的操作體驗,和視覺上的衝擊。這個應用視覺衝擊倒是沒有多少,哈哈。
最後,歡迎大家一起交流。
專案地址:yk.mcust.cn/wb