技术_技术方案 - CSDN
精华内容
参与话题
  • java web技术开发大全(最全最新)

    千次下载 热门讨论 2020-07-25 23:33:35
    提供典型应用案例,剖析JSP/Servret技术与Struts 2技术在Web开发中的不同 提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术发展的趋势 提供230个实例和4...
  • 每个产品经理都应该懂点技术。当技术人员认为你提出的需求不能实现而怼你的时候,你可以从技术的角度将他正面击倒。而且熟悉一定的技术后,产品经理提出的需求将会更加合理,技术人员实现起来更容易。达到产品和技术...

    每个产品经理都应该懂点技术。当技术人员认为你提出的需求不能实现而怼你的时候,你可以从技术的角度将他正面击倒。而且熟悉一定的技术后,产品经理提出的需求将会更加合理,技术人员实现起来更容易。达到产品和技术和谐共处的美好社会。此篇文章是该系列的第一篇。


    产品经理每天需要跟技术人员打交道。有时候我们想知道,我提出的需求技术人员究竟能不能实现?要搞清楚这个问题,我们需要知道技术人员是怎么工作的,他们不同的分工又分别做了什么工作。我们假定团队中只有两类技术人员:前端和后端。虽然测试和运维也同样重要。为了简化思考,我们暂时不考虑他们的工作内容,而只看前后端的工作。

    在Web开发中,前端去做界面模板,后端负责数据。这样可以把后端的数据放到前端的模板里。此称为前后端分离。

    在前后端分离的开发模式中,前端和后端可以同时进行工作。具体的方式是通过前后端在事先约定好的文档规范。前端人员依据文档写页面模板,后端人员根据文档写API接口。前端可以调用后端的API接口为界面模板填充数据。

    如果是纯技术人员,我们大概到这里就介绍完毕了。不过,考虑到这篇文章是为非技术人员写的,所以我有必要更透彻的展开一下。

    通过刚才介绍我们发现前后端的依赖关系只在API上。如果API的概念不容易理解,我们可以看看API的定义。

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    以上内容来自百度百科

    如果觉得难以理解我们可以划下关键词,函数、提供访问程序的能力、无需理解内部工作。API可以简单的理解为一个URL地址。具体来说是前端页面向API发送了一个请求的数据A,后端接收到A,根据业务的需求将A变成处理后的数据B,并把B返回给前端页面上。这个过程中前端不知道也不必知道API内部是如何工作的,前端只需要根据发送的数据获取到需要的数据。后端的工作就是接收前端发来的数据,处理后返回给前端使用。

    我们以登陆返回用户数据的一个操作为例进行详细说明。

    1240

    上述图片是一个前端页面。当我们输入完用户名和密码,就意味着前端的数据已经获取完了。我们点击登陆的按钮后,其实就将数据发送给了后端的API,此处我们假设API地址是 api.com/login 。一般使用JSON这种数据格式,如下图(其实省略了很多数据,以下数据仅供参考)

    {
    "email":"gaoyakang@outlook.com",
    "password":123456789
    }

    后端拿到上述数据后开始判断并返回

    1. 该条数据格式对不对?
    2. 账号密码对不对?
    3. 如果都对则返回用户信息,如果不对返回错误信息。

    假设我们在数据库中有以下的数据:

    email  password RealName   NickName birth age
    gaoyakang@outlook.com 123456789 mark Rever4433 1995-04 22

    验证成功后,我们开始返回用户信息,根据我们数据库中的数据,我们将要返回RealName、NickName、birth、age等信息给到前端去填充数据。

    还是用上述JSON数据格式表示:

    {
    "RealName":"mark",
    "NickName":"Rever4433",
    "birth":"1995-04",
    "age":"22"
    }

    前端拿到该数据后把数据渲染到界面上:

    1240

    这样一条数据从前端发送到后台接收处理,处理完后发送到前端,前端向用户展示这一过程就完成了。


    一些说明

    为了尽可能简化理解一些难于理解的数据我没有写出来,不过对于非技术人员应该已经足够理解了。另外,实际开发中有的公司可能没有采用接口化的方式,而是前端做界面模板,做完后让后端去填充数据的方式。这种方式虽然前后端结合的实现方式上有区别,但思想上是差不多的。
    看完本文,你可能对前后端具体做的事情有了一些理解。也许你还会想知道,前后端开发人员是怎样一起进行工作的呢?前端和后端工作有先后顺序吗?这些疑问我们将会放在下一篇。在下一篇文章中我将描述前后端人员是通过文档来开展工作的。

    转载于:https://www.cnblogs.com/rever/p/7792980.html

    展开全文
  • 你应该知道的国内十大技术社区

    千次阅读 2018-07-04 09:50:47
    社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。技术社区一般有三类人:...

    文章部分内容摘自“纯洁的微笑”。

    社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。

    技术社区一般有三类人:第一类技术人,就是遇到问题搜索一下,绝大部分程序员都是通过这种方式来了解技术社区的,或者遇到问题的时候在社区去提问;第二类的技术人,有意识的常去技术社区查看博客,学习新知识;第三类人,就是写文章的人,喜欢分享某一类技术,或者他们的实战经历。往往写文章的人,也喜欢看文章。

    总的来说,技术社区就是聚集技术人的地方,也是技术人学习交流的最佳场所。个人利用业务时间,按照访问量等信息整理出了中国十大IT技术社区,帮助大家找到自己的家园。


    CSDN



    CSDN (Chinese Software Developer Network) 是蒋涛创立于1999年,是中国专业的 IT 社区,为中国的软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。 截止2018年6月,CSDN 拥有超过2500+万技术会员,论坛发帖数1000万+,技术资源700万+,Blog 文章1300万+,新媒体矩阵粉丝数量430万+。

    我与 CSDN 结缘大学,09年大学参加数学建模的时候经常去 CSDN 下载资料,10年毕业后在博客记录一些软件的使用命令,Oracle 常用语法,后来就把博客给忘了,11年的时候经常活跃在 CSDN 灌水区,和天下的程序员闲聊,后来因为 CSDN 广告实在太多就转战博客园,直到去年成为 CSDN 博客专家,重新回来同步一些文章。

    CSDN 是国内IT行业覆盖最全的一个社区,有很多的高手和大神隐藏于此,到现在还有很多学者、研究生等高层次人才在 CSDN 发表博客,同样海量的 IT 同行们也都活跃于 CSDN ,不过令人诟病的是 CSDN 的广告是最多的,用户体验非常差。不过今年博客系统进行了改版后比以前好了一些,并且博客专家不用显示广告,这点值得点赞。

    网站链接:http://www.csdn.net/

    从 Alexa 的排名来看目前排在全球第 41 位,当之无愧的为国内技术社区老大。


    博客园



    博客园创立于2004年1月,是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。

    博客园的发展历程特别能体现IT从业者的执着精神:2004年,博客园诞生于江苏扬州这样一个IT非常落后的小城市,有近四年,博客园仅靠一个人几年工作的积蓄在维持,博客园一步一个脚印地走着自己的路,傻傻地对每个用户注册进行人工审批、对首页内容宁缺毋滥、对不合适的广告拒之门外,傻傻地对用户体验关怀备至,对盈利模式冷若冰霜。

    可以看到,博客园的页面十分干净清爽,干货都放在首要位置,没有时下流行的大图轮播,没有任何广告,只为这样的情怀也应为博客园点赞。博客园最大的特点是足够的开放,首页的文章由读者来决定,每个人的博客也可以自定义显示,因此博客现在有最丰富的个人博客皮肤界面,我在博客园看到了程序员们的想象力。

    第一份工作在华为做外包,在华为内部办公不能访问外网,但一些主流的技术网站都可以访问,其中就有博客园 。那时候中午休息的时候总是要逛一逛技术社区,博客园的IT行业新闻吸引了我,就一直养成了在博客园看业内新闻的习惯。但直到2016年才开始在博客园写博客,17年成为博客园的推荐博客,到了现在我的博客是博客园推荐博客的 top 30,可以说我写博客的起点就来自博客园。

    网站链接:http://www.cnblogs.com/

    博客园全球 alexa 排名在 210,仅次于 CSDN。


    SegmentFault



    SegmentFault 创立于 2012 年,是中文领域最大的技术问答交流社区平台,在这里你可以检索,交流和分享任何技术编程相关的问题及知识。其目标是覆盖和服务 1,000 万以上中国软件开发者和 IT 信息从业者,其实现方法是充分利用在各个平台上所能获得的各种技术创新机会为他们开发产品应用和服务。

    网站链接:https://segmentfault.com/

    这个平台在17年的时候才了解到,网站的整体风格比较简洁,在所有的技术社区中用户体验算比较好的。网上查了 SegmentFault 的 alexa 排名才发现这个网站的访问量比我预想中要高很多。

    SegmentFault 全球访问量排名在 768


    V2EX



    V2EX is a community of start-ups, designers, developers and creative people.

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 250,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    V2EX 严格意义上不算是纯粹的技术社区,它定位是创意工作者的社区,但其实里面全是 IT 行业内的人。大家会喜欢像发帖一样在里面讨论创意、新的技术、吐槽等活动,人气很高,这个平台的风控机制也比较严格,页面刷新太快也会被限制,网友常常说,V2EX 是一个神奇的网站。

    网站链接:https://www.v2ex.com/

    V2EX 全球访问量排名在 931


    开源中国



    开源中国 成立于2008年8月,是目前国内最大的开源技术社区,拥有超过200万会员,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。

    开源中国也是一个只关注IT内特定领域的技术社区,开源中国主要关注的是开源技术,适合对该领域感兴趣的人士。2013年,开源中国被恒拓开源收购。

    开源中国也是国内唯一一个专业报道开源事件的社区,网站会实时报道开源界的所有资讯,同时也有中国版的github:gitee。

    网站链接:http://www.oschina.net/

    开源中国 全球访问量排名在 969


    W3School



    W3School 是因特网上最大的 WEB 开发者资源,其中包括全面的教程、完善的参考手册以及庞大的代码库。

    下面是关于 W3School 的简要描述:

    W3School 是因特网上最大的 WEB 开发者资源
    W3School 是完全免费的
    W3School 是非盈利性的
    W3School 一直在升级和更新
    W3School 是W3C中国社区成员,致力于推广 W3C 标准技术

    前端程序员的最爱,W3School 最开始分享很多浅显易懂的前端教程,后来也有一些后端的教程在里面。

    网站链接:http://www.w3school.com.cn

    W3School 全球访问量排名在 989


    51CTO



    51CTO 成立于2005年,目前已建成为专注于IT人职业成长平台;拥有1500万注册用户,覆盖了中国主流城市大多数IT从业人群,是国内排名第一的服务IT技术人员的专业性服务平台。

    网站链接:http://www.51cto.com

    51CTO 全球访问量排名在 1145


    51CTO 最开始专注于运维这个领域,也是国内聚集运维技术人才最多的一个技术社区,到了后来逐渐的转为覆盖全领域的技术社区。

    特别需要提到的是 51CTO 博客平台,也是在今年进行了 2.0 的改版,改版之后的用户体验提升非常明显,添加了 md 、赞赏和微信系统打通等新的功能,目前为止是所有技术社区对作者考虑最为全面的一个,也是体验最好的一个。我是在17年在 51CTO 开通了博客,目前在博客的粉丝排名中,位于前十。

    51CTO 博客

    博客链接:http://blog.51cto.com/


    ChinaUnix



    ChinaUnix.net(简称CU)是一个以讨论 Linux/Unix 类操作系统技术、软件开发技术、数据库技术和网络应用技术等为主的开源技术社区网站。创办于2001年,经过多年的努力和发展,如今CU已经成为全球最大、人气最旺的Linux/Unix技术中文网站。

    CU的宗旨是给所有爱好Linux/Unix技术、开源技术的朋友提供一个自由、开放、免费的交流空间。只专注一个领域,小而精是CU的特色,如果你刚好对Linux/Unix技术等领域感兴趣,CU是不错的选择,如果你关注其他领域,CU上可能并没有相关讨论和资料。

    网站链接:http://www.chinaunix.net/

    ChinaUnix 全球访问量排名在 3835


    伯乐在线



    伯乐在线成立于 2010 年,由黄余粮和黄利民联合发起,做专业的IT互联网职业社区。

    网站链接:http://www.jobbole.com/

    伯乐在线主要是由专业编辑挑选文章,所以文章质量都不错,也正是因为如此,人气不足。

    伯乐在线 全球访问量排名在 6004


    ITEye



    ITEye (曾名为JavaEye)是在2003年9月创办的,创始人范凯在学习和研究 java 的开源框架却发现没有一个讨论的地方,于是自己就建立了这个关于 Java 的网站。如今 ITEye 网站已经发展成为了一个内容齐全,功能丰富的中文IT技术门户和社区网站,涵盖整个软件开发领域的综合性网站。

    ITEye以专业性著称,据说网站创建初期新用户注册时需要强制做题,做13道有关论坛规则的选择题,做不对就不予审核通过。自从 ITEye 被 CSDN 收购后,网站就再也没有更新过,人气大降,目前已经沦落为二线阵营。

    网站链接:http://www.iteye.com/

    ITEye 全球访问量排名在 8473



    最近几年随着行业不断发展,又诞生了一些新的社区,其中有三个比较有代表性,一并分享给大家。

    掘金



    创建于2015年8月,掘金最初来自于稀土,是稀土的一个子版块,没想到稀土没有火起来,反而做为技术分享网站的掘金火爆了起来,于是创始人明明随即调整了方向,大力发展掘金。去年的时候掘金也开通了自己的专栏、小册,慢慢从一个技术文章分享网站向全面技术社区转型,期待后续的发展。

    网站链接:https://juejin.im

    掘金 全球访问量排名在 6306


    开发者头条



    开发者头条也是近两年才突然活跃起来的一个技术分享平台,由一帮程序员所创建,我对它的最初印象是码农周刊,码农周刊是一份专为程序员打造的IT技术周刊。平台每周会精选一周IT技术干货,进行推送。曾经有一段时间发现我的独立博客有一些流量来源于这个网站,才发现它。目前开发者头条已经聚集了一帮技术爱好者。

    网站链接:https://toutiao.io/

    开发者头条 全球访问量排名在 26398


    GitChat



    GitChat 是一款基于微信平台的知识分享产品,通过这款产品我们希望改变IT知识的学习方式。GitChat 算是技术付费的先驱了,在技术知识付费领域在国内做的比较早。

    17年的时候,发现有人在我的公号内留言,邀请我在 GitChat 做一场分享,那时候我还不知道 GitChat 分享是干什么的。抱着试试看态度做了一场分享:从架构演进的角度聊聊 Spring Cloud 都做了些什么? ,后面感觉还不错又做了一个课程:快速学习 Spring Boot 技术栈,没想到一年后这个课程的销量已经到达了平台畅销前三,还是挺受鼓舞的。GitChat 后来被 CSDN 所收购,所以大家也会在 CSDN 看到 GitChat 的推荐内容。

    网站链接:http://gitbook.cn/

    GitChat 全球访问量排名在 31341


    总结

    中国IT技术社区整体的技术氛围还是很不错的,近年来也诞生了很多新的技术社区,有的做垂直方向,有的面向所有IT人员,最终都促进了 IT 行业的技术发展。但同时大部分技术社区的用户体验,社区开放度还有很大的提升空间,没有一个理想中很开放、全面的技术社区,也许这就是下一个机会呢?

    最后,作为 IT 技术社区的受益者,还是感谢所有的技术社区工作人员,为同行们创建了一个学习交流的场所。大家也可以聊聊平时都活跃在哪些技术社区,欢迎留言交流。


    -------------------------------------------

    有任何建议或问题,欢迎加微信一起学习交流,

    欢迎从事IT,热爱IT,喜欢深挖源代码的行业大牛加入,一起探讨。

    个人微信号:bboyHan


    展开全文
  • 今日头条技术架构分析

    万次阅读 2018-11-25 17:13:43
    ​ ​ 今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。 一、产品背景 ​ ​ 今日头条是为用户提供...

    ​ ​ 今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。

    一、产品背景

    ​ ​ 今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):

    • 5亿注册用户

    2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎为成倍增长。

    • 日活4800万用户

    2014年为1000万日活,2015年为3000万日活。

    • 日均5亿PV

    5亿文章浏览,视频为1亿。页面请求量超过30亿次。

    • 用户停留时长超过65分钟以上

    1、文章抓取与分析

    ​ ​ 我们日常产生原创新闻在1万篇左右,包括各大新闻网站和地方站,另外还有一些小说,博客等文章。这些对于工程师来讲,写个Crawler并非困难的事。

    ​ ​ 接下来,今日头条会用人工方式对敏感文章进行审核过滤。此外,今日头条头条号目前也有为数不少的原创文章加入到了内容遴选队列中。

    ​​ ​ 接下来我们会对文章进行文本分析,比如分类,标签、主题抽取,按文章或新闻所在地区,热度,权重等计算。

    2、用户建模

    ​ ​ 当用户开始使用今日头条后,对用户动作的日志进行实时分析。使用的工具如下:

    - Scribe

    - Flume

    - Kafka

    ​ ​ 我们对用户的兴趣进行挖掘,会对用户的每个动作进行学习。主要使用:

    - Hadoop

    - Storm

    ​ ​ 产生的用户模型数据和大部分架构一样,保存在MySQL/MongoDB(读写分离)以及Memcache/Redis中。

    ​ ​ 随着用户量的不断扩展大,用户模型处理的机器集群数量较大。2015年前为7000台左右。其中,用户推荐模型包括以下维度:

    1 用户订阅

    2 标签

    3 部分文章打散推送

    此时,需要每时每刻做推荐。

    3、新用户的“冷启动”

    ​ ​ 今日头条会通过用户使用的手机,操作系统,版本等“识别”。另外,比如用户通过社交帐号登录,如新浪微博,头条会对其好友,粉丝,微博内容及转发、评论等维度进行对用户做初步“画像”。

    ​ ​ 分析用户的主要参数如下:

    - 关注、粉丝关系

    - 关系

    - 用户标签

    ​​ ​ 除了手机硬件,今日头条还会对用户安装的APP进行分析。例如机型和APP结合分析,用小米,用三星的和用苹果的不同,另外还有用户浏览器的书签。头条会实时捕捉用户对APP频道的动作。另外还包括用户订阅的频道,比如电影,段子,商品等。

    4、推荐系统

    ​ ​ 推荐系统,也称推荐引擎。它是今日头条技术架构的核心部分。包括自动推荐与半自动推荐系统两种类型:

    1 自动推荐系统

    - 自动候选

    - 自动匹配用户,如用户地址定位,抽取用户信息

    - 自动生成推送任务

    这时需要高效率,大并发的推送系统,上亿的用户都要收到。

    2 半自动推荐系统

    - 自动选择候选文章

    - 根据用户站内外动作

    ​ ​ 头条的频道,在技术侧划分的包括分类频道、兴趣标签频道、关键词频道、文本分析等,这些都分成相对独立的开发团队。目前已经有300+个分类器,仍在不断增加新的用户模型,原来的用户模型不用撤消,仍然发挥作用。

    ​ ​ 在还没有推出头条号时,内容主要是抓取其它平台的文章,然后去重,一年几百万级,并不太大。主要是用户动作日志收集,兴趣收集,用户模型收集。

    ​ ​ 资讯App的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注

    在这里插入图片描述

    5、数据存储

    ​ ​ 今日头条使用MySQL或Mongo持久化存储+Memched(Redis),分了很多库(一个大内存库),亦尝试使用了SSD的产品。

    ​ ​ 今日头条的图片存储,直接放在数据库中,分布式保存文件,读取的时候采用CDN。

    6、消息推送

    ​ ​ 消息推送,对于用户: 及时获取信息。对运营来讲,能够 提⾼⽤用户活跃度。比如在今日头条推送后能够提升20%左右的DAU,如果没有推送,会影响10%左右 DAU(2015年数据)。

    ​ ​ 推送后要关注的ROI:点击率,点击量。能够监测到App卸载和推送禁用数量。

    ​ ​ 今日头条推送的主要内容包括突发与热点咨讯,有人评论回复,站外好友注册加入。

    ​ ​ 在头条,推送也是个性化:

    - 频率个性化

    - 内容个性化

    - 地域

    - 兴趣

    比如:

    ​ ​ 按照城市:辽宁朝阳发生的某个新闻事件,发给朝阳本地的用户。

    ​ ​ 按照兴趣:比如京东收购一号店,发给互联网兴趣的用户。

    ​ ​ 推送平台的工具和选择,需要具备如下的标准:

    ​ ​ ​ ​ - 通道,首先速度要快,但是要可控,可靠,并且节省资源

    ​ ​ ​ ​ - 推送的速度要快,有不同维度的策略支持,可跟踪,开发接口要友好

    ​ ​ ​ ​ - 推送运营的后台,反馈也要快,包括时效性,热度,工具操作方便

    ​ ​ ​ ​ - 对于运营侧,清晰是否确定推荐,包括推送的文案处理

    ​ ​ 因此,推送后台应该提供日报,完整的数据后台,提供A/B Test方案支持。

    ​ ​ 推送系统一部分使用自有IDC,在发送量特别大,消耗带宽较严重。可以使用类似阿里云的服务,可有效节省成本。

    二、今日头条系统架构

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    三、头条微服务架构

    ​​ ​ 今日头条通过拆分子系统,大的应用拆成小应用,抽象通用层做代码复用。

    在这里插入图片描述

    ​​ ​ 系统的分层比较典型。重点在基础设施,希望通过基础设施提高快速迭代、容灾和一系列的工作,希望各个业务团队能更快做业务上的迭代以及架构上的调整。

    四、今日头条的虚拟化PaaS平台规划


    ​ ​ 通过三层实现,通过 PaaS 平台统一管理。提供通用 SaaS 服务,同时提供通用的 App 执行引擎。最底层是 IaaS 层。

    在这里插入图片描述

    ​ ​ IaaS 管理所有的机器,把公有云整合起来,头条有一些热点事件会全国推广推送,对网络带宽比较高,我们借助公有云,需要哪一种类型计算资源,统一抽象起来。基础设施结合服务化的思路,比如日志,监控等等功能,业务不需要关注细节就可以享受到基础设施提供的能力。

    五、总结

    ​ ​ 今日头条重要的部分在于:

    • 数据生成与采集
    • 数据传输。Kafka做消息总线连接在线和离线系统。
    • 数据入库。数据仓库、ETL(抽取转换加载)
    • 数据计算。数据仓库中的数据表如何能被高效的查询很关键,因为这会直接关系到数据分析的效率。常见的查询引擎可以归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所应用。

    参考资料:今日头条的核心架构解析

    ​ ​ ​ ​ ​ ​Go – 今日头条架构

    ​ ​ ​ ​ ​ 从无到有、从小到大,今日头条大数据平台实践经历的那些坑

    ​ ​ ​ ​ ​ 今日头条推荐系统架构设计实践

      收集资料,码字,整理,最后排版都不容易,如果觉得对你有用的话,凑个奶茶钱(非强制啊,只是想犒劳自己一下)~

     微信         支付宝
    微信收款码支付宝收款码

    展开全文
  • 摘要:这里有改变世界的7大NLP技术,点进来了解一下吧! 改变世界的七大NLP技术,你了解多少?(上) 在第1部分中,我介绍了自然语言处理(NLP)领域以及为其提供支持的深度学习。我还介绍了NLP中的3个关键概念...

    摘要: 这里有改变世界的7大NLP技术,点进来了解一下吧!

    改变世界的七大NLP技术,你了解多少?(上)

    e54b57703f07f1c65716988e7f286f400942c7f9

    第1部分中,我介绍了自然语言处理(NLP)领域以及为其提供支持的深度学习。我还介绍了NLP中的3个关键概念:文本嵌入(字符串的矢量表示),机器翻译(使用神经网络翻译语言),以及Dialogue和Conversations(可以实时与人进行对话的技术)。在第2部分中,我将介绍另外4项重要的NLP技术,你应该关注这些技术,以跟上这一研究领域快速增长的步伐。

    技术4:情绪分析

    人际交往不仅仅是文字和其明确的含义,而且它还是微妙且复杂的。即使在完全基于文本的对话中,你也可以根据单词选择和标点符号判断客户是否感到愤怒。你可以阅读产品在天猫平台的评论,并了解评论者是否喜欢或不喜欢它,即使他们从未直接说过。为了使计算机真正理解人类每天的交流方式,他们需要理解的不仅仅是客观意义上的词语定义、而且他们需要了解我们的情绪。情绪分析是通过较小元素的语义组成来解释较大文本单元(实体、描述性术语、事实、论据、故事)的含义的过程。

    传统情感分析的方法是将句子视为一个词袋,并查阅“积极”和“消极”单词的策划列表,以确定该句子的情绪。这需要手工设计的特征来捕捉情绪,所有这是非常耗时和不可扩展的。

    用于情感分析的现代深度学习方法可用于形态学、语法和逻辑语义,其中最有效的是递归神经网络。顾名思义,递归神经网络开发的主要假设递归是描述语言的自然方式。递归在消歧方面很有用,有助于某些任务引用特定的短语,并且对于使用语法树结构的任务非常有效。

    c05a94dad6222ef6e714921a2e1e829052146092

    递归神经网络非常适合具有嵌套层次结构和内部递归结构的设置。语法的句法规则是高度递归的,因此,我们利用递归神经网络!使用RNN对句子进行建模的另一个好处是,我们现在可以输入任意长度的句子,这对于在NLP中使用神经网络来说是一个巨大的难题,使用非常聪明的技巧使句子的输入向量具有相同的大小,尽管句子的长度不相等。

    a6cf12b44fc664c13050e0741f67f3e352ae2b80

    标准RNN是一种递归神经网络的最基本的版本。它具有最大边距结构预测架构,可以在复杂的场景图像和句子中成功地运用这种结构。它用于为自然语言句子提供有竞争力的语法分析器比如说Penn Treebank。作为参考,Penn Treebank是第一个大型树形数据集,由华尔街日报三年(WSJ)收集的24,799个故事组成,它广泛用于句法注释。此外,它优于语义场景分割、注释和分类的替代方法。

    然而,标准RNN并不能捕获语法短语的完整语法。在语法上解开RNN,也被称为成分矢量语法(CVG),这个方法是解决这个问题的一个重大升级。它使用语法解开的递归神经网络来学习句法语义和组合向量表示。该模型能够像标准RNN一样快速地进行训练和实施。

    b96ff278d7810e13c306cec6918de58588575d7f

    另一个演变是Matrix-Vector RNN,它能够捕获更长短语的组成含义。该模型为解析树中的每个节点分配一个向量和一个矩阵:向量用于捕获成分的固有含义,而矩阵捕获它如何改变相邻单词或短语的含义。而且该矩阵向量RNN可以在命题逻辑和自然语言中学习运算符的含义。

    该模型在三个不同的实验中获得过不错的表示:

    ·预测副词-形容词对的细粒度情感分布;

    ·对电影评论的情感标签进行分类;

    ·使用它们之间的句法路径对名词之间的语义关系(例如因果关系)进行分类。

    6581f2790b1aebe280bbac02f82c828ae01602f7

    迄今为止用于情感分析的最强大的RNN模型是递归神经张量网络,其在每个节点处具有神经网络的树结构。该模型可用于边界分割,以确定哪些词组是积极的,哪些是消极的。在Sentiment Treebank上接受训练时,该模型在几个指标上的表现优于所有以前的方法。

    技术5:问答系统

    问答(QA)系统的想法是直接从文档、对话、在线搜索和其他地方提取信息,以满足用户的信息需求。QA系统不是让用户阅读整个文档,而是更喜欢简短而简洁的答案。如今,QA系统可以非常容易地与其他NLP系统结合使用,并且一些QA系统甚至超越了对文本文档的搜索,并且可以从图片集合中提取信息。

    事实上,大多数NLP问题都可以被视为一个问题回答问题。范例很简单:我们发出查询指令,机器提供响应。通过阅读文档或一组指令,智能系统应该能够回答各种各样的问题。

    8ed597ba067c3c9bd8210a2480c2a83e7892dc04

    强大的深度学习架构(称为动态内存网络(DMN))已针对QA问题进行了专门开发和优化。给定输入序列(知识)和问题的训练集,它可以形成情节记忆,并使用它们来产生相关答案。该体系结构具有以下组件:

    ·语义内存模块(类似于知识库)被用来创建从输入句子的嵌入字序列预先训练手套载体。

    ·输入模块处理与问题有关的输入矢量称为事实。该模块使用门控循环单元实现,GRU使网络能够了解当前正在考虑的句子是否相关或与答案无关。

    ·问题模块逐字处理疑问词,并且使用输出相同权重的GRU输入模块的向量。事实和问题都被编码为嵌入。

    ·情景记忆模块接收从输入中提取和编码的嵌入事实和问题载体。这使用了一个受大脑海马体启发的想法,它可以检索由某些反应触发的时间状态,如景点或声音。

    ·答案生成模块,通过适当的响应,情景记忆应该包含回答问题所需的所有信息。该模块使用另一个GRU,使用正确序列的交叉熵错误分类进行训练,然后可以将其转换回自然语言。

    80f4a693d4ba4b0f8b5bbd17323da807a475003a

    DMN不仅在质量保证方面做得非常好,而且在情感分析和词性标注方面也优于其他架构。自开发以来,动态内存网络已经有了重大改进,进一步提高其在问答环境中的准确性,包括:

    ·用于视觉和文本问题的动态存储网络问答应用基本上是将DM​​N应用于图像,其内存和输入模块已升级,以便能够回答视觉问题。该模型改进了许多基准Visual Question Answering数据集的现有技术水平,而不支持事实监督。

    ·用于问题应答的动态Coattention网络解决了从对应于不正确答案的局部最大值恢复的问题。它首先融合了问题和文件的共同依赖表示,以便集中于两 者的相关部分。然后,动态指向解码器迭代潜在的答案跨度,该迭代过程使模型能够从对应于不正确答案的初始局部最大值中恢复。

    技术6:文本摘要

    人类很难手动汇总大型文本文档。文本摘要是NLP为源文档创建简短、准确和流畅的摘要问题。随着推送通知和文章摘要获得越来越多的注意力,为长文本生成智能且准确摘要的任务每天都在增长。

    通过首先计算整个文本文档的单词频率来自动汇总文本。然后,存储和排序100个最常用的单词。然后根据它包含的高频词数对每个句子进行评分,更高频率的词,价值更大。最后,根据它们在原始文本中的位置来获取和排序前X个句子。

    9478010c4959de637308874c4d9a227adbe2ab76

    文本摘要有两种基本方法:提取和抽象。前者从原始文本中提取单词和单词短语以创建摘要。后者是学习内部语言表示以生成更像人类的摘要,解释原始文本的意图。

    提取摘要的方法是通过选择子集来工作。这是通过从实际文章中提取短语或句子以形成摘要来完成的,LexRankTextRank是众所周知的摘要总结,它们都使用了Google PageRank算法的变体。

    ·LexRank是一种无监督的基于图形的算法,它使用IDF修改的余弦作为两个句子之间的相似性度量。该相似度用作两个句子之间的图形边缘的权重。LexRank还采用了智能后处理步骤,确保为摘要选择的顶级句子彼此不太相似。

    ·TextRank是一种类似于LexRank的算法,具有一些增强功能,例如使用词形化而不是词干,结合词性标注和命名实体分辨率,从文章中提取关键短语,以及根据这些短语提取摘要句子。除了文章摘要外,TextRank还从文章中提取了有意义的关键短语。

    抽象概括的模型属于深度学习。使用深度学习的文本摘要已经取得了一定的突破。以下是一些NLP领域最大公司最显着的公布结果:

    ·Facebook的神经注意是一种神经网络架构,它利用基于本地注意力的模型,能够根据输入句子生成摘要中的每个单词。

    ·Google Brain的Sequence-to-Sequence模型遵循编码器-解码器架构。编码器负责读取源文档并将其编码为内部表示,解码器是一种语言模型,负责使用源文档的编码表示在输出摘要中生成每个单词。

    ·IBM Watson使用类似的序列到序列模型,但具有注意力和双向递归神经网络功能。

    技术7:注意力机制

    神经网络中的注意力机制是基于人类的视觉注意机制。人类的视觉注意力虽然存在不同的模型,但它们都基本上归结为能够以“高分辨率”聚焦于图像的某个区域,同时以“低分辨率”感知周围的图像,然后随着时间的推移调整焦点。

    想象一下,你正在阅读一篇完整的文章:不是按顺序浏览每个单词或字符,而是潜意识地关注一些信息密度最高的句子并过滤掉其余部分。你的注意力有效地以分层方式捕获上下文信息,这样就可以在减少开销的同时做出决策。

    那为什么这很重要?诸如LSTM和GRU之类的模型依赖于读取完整的句子并将所有信息压缩为固定长度的矢量。这需要基于文本统计属性的复杂特征工程,用几个单词表示的数百个单词的句子肯定会导致信息丢失,翻译不足等。

    4edb25abc10185cae2fa15b468f95e0ecf5bd9f9

    通过注意力机制,我们不再尝试将全文编码为固定长度的矢量。相反,我们允许解码器在输出生成的每个步骤处理源语句的不同部分。我们让模型根据输入句子以及它到目前为止产生的内容来学习要注意的内容。

    根据上面从基于注意力的神经机器翻译的有效方法的图像,蓝色表示编码器,红色表示解码器,因此我们可以看到上下文向量将所有单元格的输出作为输入来计算每个单元格的源语言单词的概率分布。解码器想要生成单个字,通过利用该机制,解码器可以捕获全局信息而不是仅基于一个隐藏状态进行推断。

    除了机器翻译之外,注意力模型还可以处理各种其他NLP任务。在Show,Attend和Tell:使用视觉注意生成神经图像标题,作者将注意力机制应用于生成图像描述的问题。他们使用卷积神经网络对图像进行编码,使用具有注意力机制的递归神经网络来生成描述。通过可视化注意力,他们可以在生成单词时解释模型正在查看的内容:

    f6a373481c28848c11e2d979d4b0b4912a9c96bd

    语法作为外语中,作者使用具有注意力机制的递归神经网络来生成句子解析的树。可视化的注意力矩阵可以深入了解网络如何生成这些树:

    4272753e42a4c5331abd832c1a01d81e3fa571ce

    阅读和理解的教学机器中,作者使用回归神经网络来阅读文本,阅读问题,然后产生答案。通过可视化关注矩阵,它们可以在尝试查找问题答案时显示网络的外观:

    79da62419bf4c05cf1d99421fbbcf0c7c66e45ef

    然而,注意力机制需要付出代价。我们需要计算输入和输出字的每个组合的注意力值。如果你有一个100字的输入序列并生成一个100字的输出序列,那将是10,000个注意力值。如果你进行字符级计算并处理由数百个令牌组成的序列,上述机制可能变得非常昂贵。

    自然语言处理已经解决的障碍

    值得注意的是,研究人员不得不处理各种障碍:算法的局限性、模型的可扩展性、对人类语言的模糊理解。好消息是,这个领域的发展似乎是一个巨大的开源项目:研究人员不断构建更好的模型来解决现有问题并与社区分享他们的结果。由于最近的学术研究进展,以下是NLP中已经解决的主要障碍:

    ·没有单一的模型架构,跨任务具有一致的最新结果。例如,在Question Answering中,我们有强监督的端到端内存网络 ; 在情感分析中,我们有Tree-LSTM ; 在序列标记中,我们有双向LSTM-CRF。我之前在问题回答部分中提到的动态内存网络以某种方式解决了这一挑战,因为它可以在多个域中一致地运行。

    ·机器学习中一种强大的方法是多任务学习,它共享相关任务之间的表示,以使模型能够更好地概括原始任务。然而,相关的多任务学习很难,因为它通常仅限于较低层,仅在任务相关时才有用,并且在所提出的模型中具有相同的解码器/分类器。在联合多任务模型中:为多个NLP任务增长,作者预先定义了一个由几个NLP任务组成的分层架构,作为多任务学习的联合模型。该模型包括字符n-gram和短路以及最先进的纯前馈解析器,能够执行依赖解析,多句子任务和联合训练。

    ·另一个挑战是重复字表示的问题,其中模型中编码器和解码器的不同编码导致重复的参数/含义。对此最简单的解决方案是将单词向量联系在一起并联合训练单个权重,如“绑定单词向量” 和“单词分类器:语言建模的损失框架”中所示

    ·另一个障碍是,与诸如卷积神经网络或前馈神经网络相比,任何Deep NLP技术的基本构建块Recurrent Neural Networks相当慢。准递归神经网络采用RNN和CNN的最佳部分来提高训练速度,使用卷积跨越时间的并行性和跨越信道的并行性的元素级门控递归。这种方法比语言建模和情感分析中的任何其他模型更好,更快。

    ·最后,在NLP中,架构搜索使用机器学习自动化人工神经网络设计的过程 非常缓慢,因为传统的手动过程需要大量的专业知识。如果我们可以使用AI为任何问题找到合适的架构怎么办?使用Google Brain进行强化学习的神经架构搜索是迄今为止开发的最可行的解决方案。作者使用循环网络生成神经网络的模型描述,并使用强化学习训练此RNN,以最大化验证集上生成的体系结构的预期准确性。

    结论

    本系列文章展示了主要的自然语言处理技术的基本概要,这些技术可以帮助计算机从单个文本或文本序列中提取,分析和理解有用的信息。从跨文化连接人的机器翻译到帮助客户服务的对话聊天机器人; 从深刻理解人类情绪的情感分析,到可以模仿我们视觉注意力的注意力机制。因为NLP的领域过于庞大可能我并没有完全介绍,所以我鼓励你进一步探索,无论是通过在线课程,博客教程,或研究论文。

    原文链接 

    本文为云栖社区原创内容,未经允许不得转载。

    展开全文
  • 中国十大技术社区你都知道哪些?

    万次阅读 多人点赞 2019-07-05 10:16:15
    社区是聚集一类具有相同爱好或者相同行业的群体,IT技术社区就是聚集了IT行业内的技术人,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起...
  • 而“联邦学习”将成为解决这一行业性难题的关键技术。 今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台—— Federated...
  • IT中文技术站十大网站收藏

    千次阅读 多人点赞 2019-09-29 10:47:52
    是中国的IT社区和服务平台,为中国的软件开发者和IT从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性...
  • Java面试中常被问到的几大技术难题

    万次阅读 2018-04-03 11:52:44
    还有一些即将去面试java的童鞋们,你们想知道技术面试中会涉及到哪些点吗?达妹为你整理Java面试中会被问到的几个技术难题。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但...
  • 为什么要使用信道复用技术?常用的信道复用技术有哪些? 通过共享信道、最大限度提高信道利用率。常用的信道复用技术有:频分、时分、码分、波分。
  • 如果您喜欢这些文章,欢迎点击此处订阅本Blog<!-- google_ad_client = "pub-7343546549496470";/* 728x90, 大横幅正文上方 */google_ad_slot = "4725362798";google_ad_width = 728;google_ad_height =
  • 技术栈是什么鬼?

    万次阅读 多人点赞 2020-04-08 18:09:14
    技术栈是什么鬼? 栈的英文是stack 首先,我们使用金山词霸来查一下stack的中文解释 stack有堆起来的意思,其实就是堆叠,顾名思义,技术栈就是你掌握了一堆的技术(掌握多种技术) 一般来说是指将N种技术互相...
  • Java核心技术卷一基础知识第10版 PDF文件

    万次阅读 多人点赞 2018-08-31 13:37:11
    下载链接: https://pan.baidu.com/s/1qJEav4jgYoAVEy-Ne0OeDQ 密码:4mka
  • 技术方案模板

    万次阅读 2017-09-18 14:24:35
  • 常用的大数据技术有哪些?

    万次阅读 2018-03-13 16:45:12
    大数据技术为决策提供依据,在政府、企业、科研项目等决策中扮演着重要的角色,在社会治理和企业管理中起到了不容忽视的作用,很多国家,如中国、美国以及欧盟等都已将大数据列入国家发展战略,微软、谷歌、百度以及...
  • 虚拟现实技术启蒙_艾孜尔江撰

    万次阅读 2020-02-29 20:24:21
    核心技术是建模与仿真,关键技术是环境建模技术,人机交互技术,立体显示和传感器技术,应用胸痛开发工具,系统集成技术。 2答案: 虚拟现实技术的发展进程大致可以氛围三个阶段——第一阶段是虚拟现实技术的探索...
  • 高职高专排名-2012中国最新

    万次阅读 2012-06-22 15:13:44
    2邢台职业技术学院 3山西财政税务专科学校 4辽宁省交通高等专科学校 5长春汽车工业高等专科学校 6黑龙江建筑职业技术学院 7上海医药高等专科学校 8南京工业职业技术学院 9无锡职业技术学院 10宁波...
  • 一、1G~5G综述二、移动通信服务要求演进三、移动通信技术标准演进四、现代移动通信技术演进五、我国运营商移动通信频段
  • 技术架构组工作职责

    万次阅读 2016-03-14 00:01:14
    技术架构组工作目标 落地本部门的技术规划,负责本部门IT整体规划技术部分,指导重要项目的设计实现 规范本部门的所有技术应用和开发内容,保障系统开发的有序、标准、一致性 发展基础技术平台和完善通用组件,...
  • Java核心技术 卷1 卷2原书第10版.pdf,包括:Java核心技术 卷1 基础知识 原书第10版.pdf,Java核心技术 卷2 高级特性原书第10版.pdf。 资源保存在腾讯微云上,下载不需要微云客户端,有需要这个资源的同学,请帅气...
1 2 3 4 5 ... 20
收藏数 4,344,077
精华内容 1,737,630
关键字:

技术