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

来源:https://www.cnblogs.com/msdeveloper/archive/2018/11/08/9930264.html
-Advertisement-
Play Games

實現的是通過使用各種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認知服務中的文本分析服務,對標題進行關鍵詞提取。然後根據關鍵詞使用必應圖片搜索服務,獲取與之相關的圖片地址。當然,但凡使用介面獲取數據,都要根據自己的策略去對結果進行選擇。這就解決了縮略圖的問題。

    點擊線上體驗文本分析

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

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

自動化流程

內容來源和處理大概講了,剩下的就是通過程式實現,並且要自動化整個流程。我只需要尋找好的內容來源,添加採集處理的邏輯就可以。
我們要實現的是:

  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,開發和部署簡單輕鬆!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.主要技術以及軟體 SSM、Redis、Solr、Mysql、Nginx、Intellij、Maven、Tomcat、SVN 2.MAVEN MAVEN中有三種工程類型: 3.後臺管理系統工程搭建 後臺管理系統的工程結構如下,其中parent為父工程,common,manager,pojo,map ...
  • 網上許多教程比較晦澀難懂,本教程按照筆者(新手)自己的視角記錄,希望給大家一些幫助 1、安裝anaconda 目前比較推薦的機器學習環境為anaconda。 Anaconda指的是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。 通過anaconda中的 ...
  • servlet生命周期 被創建:預設情況下,當servlet第一次被訪問時,由伺服器創建該對象,調用init()初始化方法,一個servlet只會被創建一次。 可以配置servlet讓其他伺服器啟動時,就被創建。 <load-on-startup>3<load-on-startup> 負數:預設值- ...
  • web緩存: 1.可以自動保存常見文檔副本的HTTP設備,當web請求抵達緩存時,如果存在緩存副本,就直接從本地存儲設備返回,而不是去源伺服器獲取 2.緩存命中和未命中 3.HTTP再驗證,檢測伺服器上的內容是否發生了變化,新鮮度檢測規則。緩存對副本進行再驗證時,會向伺服器發送一個小的再驗證請求,如... ...
  • 冒泡排序是一個經典的案例 實現原理就數與數前後兩兩比較,如果前面比後面大則交換位置。最終達到從小到大的順序,這樣的排序方式就是冒泡排序。 ...
  • 在優化C#代碼或對比某些API的效率時,通常需要測試某個方法的運行時間,可以通過DateTime來統計指定方法的執行時間,也可以使用命名空間System.Diagnostics中封裝了高精度計時器QueryPerformanceCounter方法的Stopwatch類來統計指定方法的執行時間: 1. ...
  • 問題: 如何實現一個具有非同步簽名的同步方法。 從非同步介面或基類繼承代碼,但希望用同步方式實現方法。 解釋一下所謂的非同步介面和非同步基類。例如如下代碼 即,介面和基類中包含了以Task為返回結果的方法,此介面或基類,即為非同步介面或非同步基類。 同步方式實現Task方法 或者 ...
  • 一、反射概念: 1、概念: 反射,通俗的講就是我們在只知道一個對象的內部而不瞭解內部結構的情況下,通過反射這個技術可以使我們明確這個對象的內部實現。 在.NET中,反射是重要的機制,它可以動態的分析程式集Assembly,模塊Module,類型Type等等,我們在不需要使用new關鍵的情況下,就可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...