zoukankan      html  css  js  c++  java
  • 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,开发和部署简单轻松!

  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/msdeveloper/p/9930264.html
Copyright © 2011-2022 走看看