AI人工智能系列随笔:syntaxnet 初探(1)
人工智能是 最近的一个比较火的名词,相信大家对于阿尔法狗都不陌生吧?其实我对人工智能以前也是非常抵触的,因为我认为机器人会取代人类,成为地球乃至宇宙的霸主,但是人工智能带给我的这种冲击,我个人感觉是欲罢不能的,进入正题,网上找了一个人工智能的框架,它的名字叫做syntaxnet ,有兴趣的可以去看看,底层是用C++实现的。
由于人工智能是一个比较新的名词,连我自己接触的也很少;所以也只能带大家一起摸索了,如果园子里有人工智能 方面的大牛,还希望多多请教。
syntaxnet 官方的解释是:有序的神经网络模型。它有另外一个奇怪的名字,叫做:TensorFlow 。TensorFlow实现的模型的描述这里可以找到;GOOGLE花费了大量的时间去研究怎么才能让机器更聪明的学习人类的语言,以及以更快的方式学习人类的语言;
这里有必要去科普一下TensorFlow,我刚刚查了下;官方的解释是:TensorFlow是一款开源的使用使用数据流图的数值计算类库。在图形中的节点(Node)呈现了各种不同的数学操作等等...剩下的就不翻译了,有感兴趣的可以谷歌一下。其实我外语不太好,各位抱歉了,翻译啥的,慢慢来吧。
训练模型
下面的教程当中,我将告诉大家 如何训练模型,会介绍更多的和NPL相关的东西;重点关注点是NPL 管道。
词性标注器
考虑如下句子,它有 很多种不同的意思;I saw the man with glasses 以上句子由下面几部分组成:
不同的字符串可以分割成如下几组:例如:"I","saw","the" 就是3组,分隔符为空格,每一个单词都有它们不同的意思,大家学过英语的人都知道,英语有时候一个词有10几个意思,并且这次意思在不同的语境中的意思都是不同的;比如这里面的saw是to see的过去式,然而已经提到过,不同的词在不同 的语境当中有不同的意思,比如saw在某些情况下可以作为名词,也有可能是现在时,上面说的需要一点英语基础的。
如果要理解不同的词的意思,首先是需要知道不同的词在在这个句子中所扮演的不同角色,这个过程就叫做Part-of-Speech (POS) Tagging,也就是词性标注器,这些角色叫做POS Tags,虽然一个单词可能对于这个句子来说拥有不同的上下文,但是对于任何的一个组成句子的单词来说,当它们的语义组合在一起的时候,往往Tag(释义)的个数会大幅减少,一般来说就是一种意思。
对于POS Tagging来说,对于一个句子当中定义动词,是一个很有挑战性的东西。当动词和名词的意思很相近的时候,对于任何语言来说,定义动词或者名词,都是极其困难的。 Universal Dependencies 的目的就是为了解决这个问题,有兴趣的可以点开看看。
训练SyntaxNet POS Tagger
要得到这个句子的所有单词的正确Tag,我们首先必须让机器能够理解这个句子的具体意思,在当前上下文当中。这里我们可以采用一种句子当中的就近原则去分析,比如I saw the man with glasses, saw 的前面是I,saw 的后面是the;比如the的后面,一般来说是接名词或者形容词,而并不是动词。
为了达到预估什么意思的目的,一般使用如下步骤:从左到右。我们先把这个句子的所有的临近的词配合起来,然后把这些意思都算出来,然后发送给神经网络分类器的前馈,用来分析POS Tags在不同的语境当中的不同意思。因为我们是按照从左到右的顺序,所以下一个单词的意思,也可能是由前一个或者几个单词的意思来判断的,比如I saw the man with glasses,中saw 如果 确定是动词了,the 肯定不是动词,man在句子中的意思或者是语法作用,肯定是前面的the来修饰的,所以后面的单词就算有不同的意思,也能由前面的单词,来进行筛选。
所有的在这个包里面的模型都使用了灵活的标记语言去定义特性。比如POS Tag ,带参数brain_pos_features 在TaskSpec中,看起来像这样:
stack(3).word stack(2).word stack(1).word stack.word input.word input(1).word input(2).word input(3).word;
input.digit input.hyphen;
stack.suffix(length=2) input.suffix(length=2) input(1).suffix(length=2);
stack.prefix(length=2) input.prefix(length=2) input(1).prefix(length=2)
注意stack 的意思是表示这个单词已经被Tagged了。所以,详细的说,有3种不同的Types对于这个功能来说:单词,后缀和前缀。所以更像一个嵌入式的矩阵,就好比Table里面又有个Table一样,串联起来了,送入了隐藏的层的链表中。
下面给大家一张图先睹为快哦~~~

未完待续~~敬请期待~~~

AI人工智能系列随笔:syntaxnet 初探(1)的更多相关文章
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数002·AI人工智能
<zw版·Halcon-delphi系列原创教程> Halcon分类函数002·AI人工智能 AI人工智能:包括knn.gmm.svm等 为方便阅读,在不影响说明的前提下,笔者对函数进行了 ...
- AI人工智能专业词汇集
作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客.论文.专家观点等内容上已经积累了超过两年多的经验.期间,从无到有,机器之心的编译团队一直在积累专业词汇.虽然有很多的文章因为专业性我们没能尽 ...
- AI人工智能天机芯芯片
AI人工智能天机芯芯片 描述 2019年刊出的<自然>封面文章,展示了清华大学类脑计算研究中心团队研发的新型人工智能芯片"天机芯(Tianjic)".这是世界首款异构融 ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...
- AI 人工智能 探索 (四)
在写之前,先对昨天寻路插件再做一些补充,因为该插件不是很完善,所以当我发现有不能满足需求的时候,就会试图更改源代码,或增加接口来符合我的需求. 昨天补充了一条是 自身转向代码,今天补充另外一条,是及时 ...
- 从大数据技术变迁猜一猜AI人工智能的发展
目前大数据已经成为了各家互联网公司的核心资产和竞争力了,其实不仅是互联网公司,包括传统企业也拥有大量的数据,也想把这些数据发挥出作用.在这种环境下,大数据技术的重要性和火爆程度相信没有人去怀疑. 而A ...
随机推荐
- ImageView缩放选项
ImageView.ScaleType 将图片边界缩放到所在view边界时的缩放选项. Options for scaling the bounds of an image to the bounds ...
- 一看就懂的ReactJs入门教程-精华版
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...
- 使用ServiceStack构建Web服务
提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...
- C#学习资源
# 视频 C#程序设计 Cousera(推荐) # 文档 C#教程 MSDN Microsoft API 和参考目录
- android http 抓包
有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- JS的内建函数reduce
@(js) reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实 ...
- [原]一个针对LVS的压力测试报告
LVS 测试报告 测试计划 基本功能测试 流量压力测试 响应时间测试 配置正确性测试 灾难恢复测试 测试点 基本功能测试 客户端IP地址正确性 RealServer 访问Internet测试(包括Ip ...
- bzoj3095--数学题
题目大意:给定一个长度为n的整数序列x[i],确定一个二元组(b, k)使得S=Σ(k*i+b- x[i])^2(i∈[0,n-1])最小 看Claris大神的题解就行了.实际上就是用2次二次函数的性 ...