實現的是通過使用各種azure服務,每天自動獲取資訊、博客,定時推送到公眾號的功能! ...
Azure認知服務的實際應用-資訊採集推送
演示
實現的是通過使用各種azure服務,每天自動獲取資訊、博客,定時推送到公眾號的功能!
微信公眾號搜索TechViews,或直接掃描二維碼關註,每天推送科技資訊。
需求
我個人有瀏覽科技資訊的需求。長期以來,我通過一些新聞客戶端、關註部分公眾號推送、谷歌快訊、搜索引擎關鍵詞搜索等方式去獲取我想要的資訊,比較分散和費時。為了滿足自己的需求,我需要能夠天天獲取到自己感興趣的內容。
背景
從2016年年中接觸.net core開始,陸續瞭解了微軟相關的技術棧,其實包括Azure服務。近年來機器學習、人工智慧等概念很火,但具體的應用,還不是十分廣泛。微信Azure當中就提供了認知服務,其實包括語言、圖片、音頻、視頻等相關的介面服務。自己經過對部分服務的瞭解和使用後,最終應用到現在的服務當中。
參考: Azure認知服務文檔
技術實現
做一個每天自動推送資訊的公眾號都包含哪些部分,我是如何去實現的呢?下麵做簡單說明。
內容來源
內容是最主要的,對於資訊來說,來是要從網路上採集,但網路上的內容眾多,如何採集篩選並不容易。
資訊來源
對於資訊來說,我是直接使用的Azure提供的
Bing News Search
介面,可根據關鍵詞返回結果。
可以通過以下鏈接直接體驗搜索的效果。
當然,搜索過來的新聞,哪些要保存,哪些有問題,怎麼去重篩選,這個不細說了,根據每個人的需求需要自定義。這樣就解決了資訊來源問題。我會進一步對篩選過的網站,對詳細頁再進行採集處理(保留所有版權和來源信息),作為內容顯示在網站TechViews上。點擊線上體驗必應新聞搜索。
技術文章來源
另一方面,對於一些技術類文章,我並沒有選擇直接從國內的博客網站上去獲取,因為這些相對來說比較容易,大家想獲取都可以比較輕鬆的獲取到。所以我會有意找國外的文章。尷尬並且有意思的是,國外雖然也有個別博客平臺有專門的技術分類,但基本沒什麼有用的內容。感覺老外更多的還是通過官方文檔、stackoverflow、github、gitter之類方式學習和解決問題的,不像國內用百度一搜索,就是一堆重覆的文章,散落到csdn、cnblogs等博客平臺。所以,目前我能找到的是通過一些官方的博客rss源獲取內容。這樣原始內容算是有了。只是國外的文章需要翻譯才可閱讀,所以我藉助Azure提供的
Bing Translate Api
介面對英文進行翻譯。不過由於微軟提供的翻譯介面是非神經網路訓練的,有需要的要自己訓練 ,而自己訓練要大量一定格式的訓練數據,並不容易,所以現在我已經更改成Goole雲提供的翻譯介面了,谷歌對大部分語言都支持神經網路翻譯,結果要準確的多。
內容處理
基本處理
數據來源有了,但處理是最花時間和精力的,我們要應對各種數據源缺失、重覆的情況。這一塊不多講,其實沒什麼好辦法,遇到一個處理一個,比如建立自己的過濾列表等內容。
縮略圖處理
我從rss獲取的博客文章,是不帶縮略圖的。但如果要想作為圖文消息推送到微信中,就需要有一個縮略圖,這個時候需要打一個組合拳了。
首先,我會對英文文章的標題處理,使用Azure認知服務中的文本分析服務,對標題進行關鍵詞提取。然後根據關鍵詞使用必應圖片搜索服務,獲取與之相關的圖片地址。當然,但凡使用介面獲取數據,都要根據自己的策略去對結果進行選擇。這就解決了縮略圖的問題。點擊線上體驗文本分析。
點擊線上體驗必應圖像搜索。
基本上,通過使用翻譯、搜索、文本分析等服務,我可以將一篇國外的文章,轉化成可通過微信推送的中文文章。
自動化流程
內容來源和處理大概講了,剩下的就是通過程式實現,並且要自動化整個流程。我只需要尋找好的內容來源,添加採集處理的邏輯就可以。
我們要實現的是:
- 採集自動化:確定好來源,程式應該要自己運行,不斷採集新的內容入庫。
- 內容處理自動化:即翻譯、縮略圖獲取等操作都不需要人為選擇。
- 推送自動化:每天按時推送,不需要人為參與。
架構
- 後臺管理:集成基礎管理功能和API介面。自搭環境,通過Azure devops自動化部署。
- 資訊採集程式:使用
Azure Function
服務,定時採集處理,通過後臺介面更新到資料庫中。 - 博客採集程式:使用
Azure Function
服務,定時採集處理,通過後臺介面更新到資料庫中。 - 推送服務:使用
Azure Function
服務,每天定時調用後臺介面,後臺接收請求後,進行微信推送。
說起來,也沒什麼架構,就是一個網站程式,提供後臺管理的功能,然後提供一些自用介面。而對於需要耗時、定時處理的任務,直接使用 Azure Function
即可,都是一鍵部署,方便省心。
總結
作為從小學就接觸編程教育的人,技術對我來說就是興趣,是展現個人創造力的一種途徑。如果你會樂器,你就可以把自己的想法轉化成音符演奏出來;你會寫作或繪畫,就可以在紙上展現出來你的想法;同樣的,你會寫程式,也可通過編寫軟體提供服務的形式來展現你的想法。
一切的出發點是滿足實際的需求,這樣才能真正發揮技術的價值。像微軟、谷歌等公司,已經為開發者提供了各種開發工具和服務的支持,如何應用這些東西實現我們的需求,是真正的價值所在。
總結使用的技術:
- ASP.Net Core:後臺服務(網站及介面)
- Azure DevOps:Git代碼管理及pipeline自動部署
- Azure Function:新聞採集處理等耗時、定時任務
- Azure認知服務-文本翻譯:翻譯英語
- Azure認知服務-文本分析:提取關鍵詞
- Azure認知服務-必應新聞搜索:獲取新聞資訊
- Azure認知服務-必應圖像搜索:根據關鍵詞獲取圖片
- Google Translate API:谷歌翻譯,效果更好。
最最重要的是,Azure的服務都是免費的,免費的,免費的!。
Azure的註冊用戶可以免費使用以上全部服務,當然有一定的額度限制,但足夠我目前使用的了。
Azure提供了各種功能,都可以免費體驗,有實力不怕你驗證,給你充分的學習和體驗機會,這才是真的雲!
配合優雅的C#,宇宙至強IDE,開發和部署簡單輕鬆!