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,开发和部署简单轻松!

Azure认知服务的实际应用-资讯采集推送的更多相关文章

  1. Azure 认知服务概述

    背景知识 近些年随着机器学习.深度学习等技术的不断发展,人工智能在越来越多的场景得到了应用,如人脸识别.图像识别.语音识别.语音生成.自然语言处理.决策分析等等,让机器拥有了听.说.看和思考的能力,很 ...

  2. Azure 认知服务 (2) 计算机视觉API - 分析图像

    <Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了微软认知服务的概览. 在本节中,笔者将详细介绍微软认知服务中的一种:计算机视觉 (Computer ...

  3. Azure 认知服务 (5) 计算机视觉API - 使用C#代码实现读取图片中的文字(OCR)功能

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章:Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR) 介绍了使用用户界面,在海 ...

  4. Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)

    <Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...

  5. Azure认知服务之Face API上手体验

    Azure认知服务:Face API Face API是Azure认知服务之一,Face API有两个主要功能: 人脸检测 Face API可在图像中以高精度人脸位置检测多达64个人脸.图像可以通过文 ...

  6. Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码

    <Windows Azure Platform 系列文章目录> 在上一节中Azure 认知服务 (2) 计算机视觉API - 分析图像,笔者介绍了如何使用API测试控制台进行调试. 本章将 ...

  7. Azure 认知服务--计算机视觉 API - 分析图像

    在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API. 我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈. ...

  8. Azure认知服务之表格识别器

    认知服务 Azure 认知服务的目标是帮助开发人员创建可以看.听.说.理解甚至开始推理的应用程序. Azure 认知服务中的服务目录可分为五大主要支柱类别:视觉.语音.语言.Web 搜索和决策.开发人 ...

  9. 技术博客:Azure 认知服务

    Azure 认知服务 1.概述 ​ 微软认知服务(Microsoft Cognitive Services)集合了多种智能API以及知识API,使每个开发人员无需具备机器学习的专业知识就能接触到 AI ...

随机推荐

  1. 【校招面试 之 剑指offer】第10-2题 青蛙跳台阶问题

    题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级台阶共有多少种跳法? 题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶...也可以一次跳n级台阶.求该青蛙跳上一个 ...

  2. 关于jni调用报UnsatisfiedLinkError的可能

    一.说明 最近在做一个项目,需要使用java去调本地动态连接库,之前做测试的时候直接用pojo进行测试,是能够正常调用的.后面项目需要将接口封装为REST api,所以在spring boot上面开发 ...

  3. linux系统命令笔记

    一.linux系统目录 /bin 系统命令目录 /dev 设备目录 /home 每个系统用户在home下都有一个目录, 每个用户登录到系统后会自动登录到这个目录下, root用户会在/root文件夹下 ...

  4. How to Check if Linux (Ubuntu, Fedora Redhat, CentOS) is 32-bit or 64-bit

    The number of CPU instruction sets has kept growing, and likewise for the operating systems which ar ...

  5. [Eclipse]Eclipse里对XML进行注释的快捷键

    eclipse中编辑java或C/C++文件时,注释的快捷键均为 "CTRL + / ",编辑xml文件时,该快捷键无效. eclipse 针对 XML 注释:CTRL + SHI ...

  6. Spring Boot 集成 Mybatis(druid 数据库连接池 以及 分页配置)

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射,目前很大一部分互联网.软件公司都在使用这套框架 关于Mybatis-Generator的下载可以到这个地址:http ...

  7. 2018.10.20 bzoj1079: [SCOI2008]着色方案(多维dp)

    传送门 dp妙题. f[a][b][c][d][e][last]f[a][b][c][d][e][last]f[a][b][c][d][e][last]表示还剩下aaa个可以用一次的,还剩下bbb个可 ...

  8. 2018.09.25 poj3070 Fibonacci(矩阵快速幂)

    传送门 矩阵快速幂板题,写一道来练练手. 这一次在poj做题总算没忘了改万能库. 代码: #include<iostream> #include<cstdio> #define ...

  9. 2018.09.06 警卫安排(树形dp)

    描述 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边直接相连的宫殿可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全 ...

  10. Django介绍(3)

    https://www.cnblogs.com/yuanchenqi/articles/5786089.html