人工智能是 最近的一个比较火的名词,相信大家对于阿尔法狗都不陌生吧?其实我对人工智能以前也是非常抵触的,因为我认为机器人会取代人类,成为地球乃至宇宙的霸主,但是人工智能带给我的这种冲击,我个人感觉是欲罢不能的,进入正题,网上找了一个人工智能的框架,它的名字叫做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)的更多相关文章

  1. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  2. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数002·AI人工智能

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数002·AI人工智能 AI人工智能:包括knn.gmm.svm等 为方便阅读,在不影响说明的前提下,笔者对函数进行了 ...

  3. AI人工智能专业词汇集

    作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客.论文.专家观点等内容上已经积累了超过两年多的经验.期间,从无到有,机器之心的编译团队一直在积累专业词汇.虽然有很多的文章因为专业性我们没能尽 ...

  4. AI人工智能天机芯芯片

    AI人工智能天机芯芯片 描述 2019年刊出的<自然>封面文章,展示了清华大学类脑计算研究中心团队研发的新型人工智能芯片"天机芯(Tianjic)".这是世界首款异构融 ...

  5. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  6. 使用Beautiful Soup编写一个爬虫 系列随笔汇总

    这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...

  7. MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)

    MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...

  8. AI 人工智能 探索 (四)

    在写之前,先对昨天寻路插件再做一些补充,因为该插件不是很完善,所以当我发现有不能满足需求的时候,就会试图更改源代码,或增加接口来符合我的需求. 昨天补充了一条是 自身转向代码,今天补充另外一条,是及时 ...

  9. 从大数据技术变迁猜一猜AI人工智能的发展

    目前大数据已经成为了各家互联网公司的核心资产和竞争力了,其实不仅是互联网公司,包括传统企业也拥有大量的数据,也想把这些数据发挥出作用.在这种环境下,大数据技术的重要性和火爆程度相信没有人去怀疑. 而A ...

随机推荐

  1. Mono为何能跨平台?聊聊CIL(MSIL)

    前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇.到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在.所以,作为一个对Unity3D跨平台能力 ...

  2. static,你还敢用吗?(二)

    为了压系统,昨天小组在测试环境模拟了一大批订单数据.今天上午查看记录的账单计息日志,发现了一大堆的MySqlException MySql.Data.MySqlClient.MySqlExceptio ...

  3. 我为NET狂官方面试题-数据库篇答案

    题目:http://www.cnblogs.com/dunitian/p/6028838.html 汇总:http://www.cnblogs.com/dunitian/p/5977425.html ...

  4. 协议森林17 我和你的悄悄话 (SSL/TLS协议)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...

  5. Lambda

    Lambda Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可作为参数传递或作为函数调用值返回的本地函数. Lambda 表达式对于编写 LI ...

  6. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  7. Java 为值传递而不是引用传递

    ——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易 ...

  8. 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...

  9. 显示本地openssl支持的加密算法

    参考页面: http://www.yuanjiaocheng.net/webapi/parameter-binding.html http://www.yuanjiaocheng.net/webapi ...

  10. 工大助手(C#与python交互)

    工大助手(爬虫--C#与python交互) 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070046 孙宇辰 13070003 张帆 13070004 崔巍 1 ...