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. python之生产者消费者模型

    #Auther Bob #--*--conding:utf-8 --*-- #生产者消费者模型,这里的例子是这样的,有一个厨师在做包子,有一个顾客在吃包子,有一个服务员在储存包子,这个服务员我们就可以 ...

  2. MQ java 基础编程

    MQ java 基础编程 编写人:邬文俊 编写时间 : 2006-2-16 联系邮件 : wenjunwu430@gmail.com 前言 通过 2 个多星期对 MQ 学习,在 partner 丁 & ...

  3. 国内maven仓库地址

    Maven 中央仓库地址: 1.http://mvnrepository.com/ (推荐) 2.http://mirrors.ibiblio.org/maven2/ 3.http://repo1.m ...

  4. DB2事务日志

    1.DB2数据库的日志原理 事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logpr ...

  5. geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql

    package com.geoserver; import java.io.IOException; import java.util.ArrayList; import java.util.Hash ...

  6. [SoapUI] 将科学计数法转化为普通数字,并且只保留小数点后几位

    方案一: import java.text.NumberFormat class CompareHashMap { def regEx_Numeric = '-?[1-9]\\d*$|-?([1-9] ...

  7. 删除pdf文件所有超链接

    最近在读deep learning 书Bengio那本,在Github上面下载的,下载回来全都是超链接, 超级烦,比如点一下梯度下降法,就直接跳转到数后尾的index. 我看书还喜欢老点,所以要把他们 ...

  8. 05 数据库入门学习-正则表达式、用户管理、pymysql模块

    一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活当然绝大多数情况下 like足够使用 #语法 select *from table whe ...

  9. XE7 里面添加自定义View

    经过xe4,xe5,xe6 这么几个版本的磨合,易博龙终于在今年9月推出了统一的多平台开发版本-XE7. 经过最近几天的测试,非常不错.如果各位同学在做移动开发,强烈建议使用XE7. 前面几个版本可以 ...

  10. 十年前,女:“对不起,我不会喜欢你的,你不要再坚持了,就好比让 Linux 和 Windows 同时运行在一台PC机上,可能吗?

    1.十年前,女:“对不起,我不会喜欢你的,你不要再坚持了,就好比让 Linux 和 Windows 同时运行在一台PC机上,可能吗?”男生听后默默走开, 十年后,在一次虚拟技术大会上,我听到一名虚拟技 ...