Azure認知服務的實際應用-資訊採集推送

Azure認知服務的實際應用-資訊採集推送

演示

實現的是經過使用各類azure服務,天天自動獲取資訊、博客,定時推送到公衆號的功能!git

微信公衆號搜索TechViews,或直接掃描二維碼關注,天天推送科技資訊。github

圖片

需求

我我的有瀏覽科技資訊的需求。長期以來,我經過一些新聞客戶端、關注部分公衆號推送、谷歌快訊、搜索引擎關鍵詞搜索等方式去獲取我想要的資訊,比較分散和費時。爲了知足本身的需求,我須要可以每天獲取到本身感興趣的內容。數據庫

背景

從2016年年中接觸.net core開始,陸續瞭解了微軟相關的技術棧,其實包括Azure服務。近年來機器學習、人工智能等概念很火,但具體的應用,還不是十分普遍。微信Azure當中就提供了認知服務,其實包括語言、圖片、音頻、視頻等相關的接口服務。本身通過對部分服務的瞭解和使用後,最終應用到如今的服務當中。編程

參考: Azure認知服務文檔api

技術實現

作一個天天自動推送資訊的公衆號都包含哪些部分,我是如何去實現的呢?下面作簡單說明。微信

內容來源

內容是最主要的,對於資訊來講,來是要從網絡上採集,但網絡上的內容衆多,如何採集篩選並不容易。網絡

  • 資訊來源架構

    對於資訊來講,我是直接使用的Azure提供的 Bing News Search 接口,可根據關鍵詞返回結果。
    能夠經過如下連接直接體驗搜索的效果。
    固然,搜索過來的新聞,哪些要保存,哪些有問題,怎麼去重篩選,這個不細說了,根據每一個人的需求須要自定義。這樣就解決了資訊來源問題。我會進一步對篩選過的網站,對詳細頁再進行採集處理(保留全部版權和來源信息),做爲內容顯示在網站TechViews上。機器學習

    點擊在線體驗必應新聞搜索工具

  • 技術文章來源

    另外一方面,對於一些技術類文章,我並無選擇直接從國內的博客網站上去獲取,由於這些相對來講比較容易,你們想獲取均可以比較輕鬆的獲取到。因此我會有意找國外的文章。尷尬而且有意思的是,國外雖然也有個別博客平臺有專門的技術分類,但基本沒什麼有用的內容。感受老外更多的仍是經過官方文檔、stackoverflow、github、gitter之類方式學習和解決問題的,不像國內用百度一搜索,就是一堆重複的文章,散落到csdn、cnblogs等博客平臺。因此,目前我能找到的是經過一些官方的博客rss源獲取內容。這樣原始內容算是有了。只是國外的文章須要翻譯纔可閱讀,因此我藉助Azure提供的 Bing Translate Api 接口對英文進行翻譯。不過因爲微軟提供的翻譯接口是非神經網絡訓練的,有須要的要本身訓練 ,而本身訓練要大量必定格式的訓練數據,並不容易,因此如今我已經更改爲Goole雲提供的翻譯接口了,谷歌對大部分語言都支持神經網絡翻譯,結果要準確的多。

內容處理

  • 基本處理

    數據來源有了,但處理是最花時間和精力的,咱們要應對各類數據源缺失、重複的狀況。這一塊很少講,其實沒什麼好辦法,遇到一個處理一個,好比創建本身的過濾列表等內容。

  • 縮略圖處理

    我從rss獲取的博客文章,是不帶縮略圖的。但若是要想做爲圖文消息推送到微信中,就須要有一個縮略圖,這個時候須要打一個組合拳了。
    首先,我會對英文文章的標題處理,使用Azure認知服務中的文本分析服務,對標題進行關鍵詞提取。而後根據關鍵詞使用必應圖片搜索服務,獲取與之相關的圖片地址。固然,但凡使用接口獲取數據,都要根據本身的策略去對結果進行選擇。這就解決了縮略圖的問題。

    點擊在線體驗文本分析

    點擊在線體驗必應圖像搜索

基本上,經過使用翻譯、搜索、文本分析等服務,我能夠將一篇國外的文章,轉化成可經過微信推送的中文文章。

自動化流程

內容來源和處理大概講了,剩下的就是經過程序實現,而且要自動化整個流程。我只須要尋找好的內容來源,添加採集處理的邏輯就能夠。
咱們要實現的是:

  1. 採集自動化:肯定好來源,程序應該要本身運行,不斷採集新的內容入庫。
  2. 內容處理自動化:即翻譯、縮略圖獲取等操做都不須要人爲選擇。
  3. 推送自動化:天天按時推送,不須要人爲參與。

架構

  • 後臺管理:集成基礎管理功能和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,開發和部署簡單輕鬆!

相關文章
相關標籤/搜索