NCspider项目总结
下午就要答辯了,想把項目經歷再總結一下。
項目分三個階段。
?
第一階段,是信息搜集整理階段
要想法設法從各個門戶網站上抓取到新聞和對應的評論數據。首先要分析網站結構。
1. 從哪里找到網站每日發布的所有新聞呢?
每個門戶網站都提供了一個滾動新聞播報的網站。
以新浪為例:http://roll.news.sina.com.cn/s/channel.php?ch=01
這里能及時而全面地得到網站發布的新聞,而且可以看出有的新聞經過簡單的修改重新發布過。
讓人開心的是,控制臺查看瀏覽器后臺找到了提供原始數據的 API,可以用JSON直接解析了。
http://roll.news.sina.com.cn/interface/rollnews_ch_out_interface.php?col=89&spec=&type=&date=2015-10-31&ch=01&k=&offset_page=0&offset_num=0&num=1000
?
2. 針對每個新聞進行處理
從新聞頁面開始看:首先,要對頁面HTML進行解析提取出新聞文本。并嘗試得到更多的數據。
然后就是抓取對應評論了,我從評論界面后臺找到了提供評論內容的API,弄明白參數后,修改參數盡可能多地抓取評論。對返回的json進行分析,數據還是很豐富的,包括評論有多少人參與,具體包括點贊還有發言,但是并沒有數據指出評論的情感傾向,這導致以后難以對其進行感情傾向分析。
抓取階段雖然看起來邏輯簡單,不過具體操作上還是遇到了很多問題,比如怎樣設計數據庫,在沒有指導和前車之鑒的情況下只能自己摸索,保證新聞和評論的正確關聯,怎樣面對更新過的新聞,設置數據之間的約束,選取什么字段作為 primarykey等等。又比如,在進行數據抓取時,遇到了不同編碼帶來的問題,要根據不同的網站選取合適的解碼方式,同時對于新出現的emoji表情也要采取一定的措施。也要考慮怎樣降低計算強度,提高抓取速度。盡量減少使用效率相對低下的三方庫,直接用re解析HTML文本,寬度優先搜索高效率地展開多線程。
?
第二階段,進行網站搭建,展示熱門新聞。
怎樣找出熱門新聞并排序呢?
提出思路:根據新聞參與互動的人數來進行排序。后來證明達到了理想的效果,比如今年王寶強先生連讀多日用多條新聞占據各大網站頭條。
發現,為數不多的幾條熱門新聞占據了絕大多數讀者的注意力。頭條的力量很強大!
再將新聞評論展示出來,其實除了熱門新聞,大多數新聞的評論數量寥寥無幾。
?
第三階段,進行情感分析
一開始我打算從簡單的兩個維度來判斷評論的感情,即積極和消極。這就涉及到自然語言處理了。
對于新聞評論,有一些比較突出的特點,比如用詞廣泛,語法不嚴格,而且錯別字出現比較多。
想要針對性地建立語言分析模型,就得有可以用來參考的模式。
如果要用機器學習的方法進行建模的話,得有一個經過標記的訓練集。考慮到時間和人手,我們難以抽出經歷對每條新聞進行標記。分詞的工具Github已經有了,比如結巴分詞。
在網上查過一些論文,閱讀了一些機器學習方面書籍,想要把情感分析做好還是有一定難度的。
總之,這一點目前更多地停留在理論階段。
我自己嘗試過Github上的SnowNLP,一個中文自然語言處理三方庫,它本身帶有感情傾向分析,但是從結果上來看,并不能有效地分析出新聞評論的感情傾向。
?
總結:
學海無涯,處處留心皆學問,親歷之,更覺如此。
大問題需要團隊合作,如果團隊里各司其職,各盡其力,我想項目會好很多。
????
最后:
有的人劃得一手好水。人各有志亦或是各有所長,不想再對團隊里的其他成員做太多評論。
轉載于:https://www.cnblogs.com/learn-to-rock/p/5952685.html
總結
以上是生活随笔為你收集整理的NCspider项目总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ActiveReports中如何在后台导
- 下一篇: 40款用于简洁网页设计的光滑英文字体【下