句子语义图显示和查询系统设计和实现 计算机科学与技术专业_第1页
句子语义图显示和查询系统设计和实现 计算机科学与技术专业_第2页
句子语义图显示和查询系统设计和实现 计算机科学与技术专业_第3页
句子语义图显示和查询系统设计和实现 计算机科学与技术专业_第4页
句子语义图显示和查询系统设计和实现 计算机科学与技术专业_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录前言 5第一章绪论 61.1研究背景 61.2论文的内容和意义 61.2.1论文的主要内容 61.2.2论文的意义 61.3本文的组织结构 7第二章技术综述 82.1Python 82.2Flask 82.3Neo4j 82.3.1Neo4j简介 82.3.2Neo4j优点 92.3.3Cypher语言语法简介 102.4JavaScript 102.5D3.js 112.5.1D3.js简介 112.5.2力导向图 112.6Bootstrap样式 12第三章需求分析 143.1功能性需求 143.2非功能性需求 14第四章系统数据库设计 15第五章系统设计与实现 165.1系统整体设计 165.2数据处理及存储 175.1.1数据分析 175.1.2结构化存储 185.2后端的搭建 195.3前端的数据可视化模块 205.3.1网页简介 205.3.2前端实现细节 21第六章总结与展望 246.1总结 246.2后续工作的展望 24参考文献 26致谢 27 摘要 当前有不少自然语言处理的科研工作都是以AMR即抽象语义表示的语法结构为基础的,即使用单根有向无环图来表示一个句子的完整语义。本文的重点不在于研究AMR具体的语法,而是以AMR为研究背景,将特定AMR标注格式的英语句子可视化为句子语义图,通过Python进行解析和处理后,存入Neo4j图数据库中,并搭建网站供用户方便地进行查询。最后,将查询句子的AMR语义结构图以D3.js的力导向图的形式完整无误地显示在网页上。关键词:抽象语义表示;语义图;Python;Neo4j图数据库;D3.js;力导向图AbstractAtpresent,manyscientificresearchesonnaturallanguageprocessingarebasedonthegrammaticalstructureofAMR,namelyabstractsemanticrepresentation,whichistoexpressthesemanticsofasentencebyusingdirectedacyclicgraphwithasingleroot.ThefocusofthispaperisnottostudyspecificAMRsyntax,butwithAMRastheresearchbackgroundtovisualAMRsentencesemanticgraph.Firstly,parsingAMRcomplexoriginalannotationstructurewithPythonandsavingtheparsingresultsintoNeo4jgraphdatabase.Then,buildingwebsitesforuserqueryconveniently.Finally,AMRsemanticstructureofthequerysentenceinD3.jsforcedirectionfigurewilldisplayonthewebpagecompletelyandcorrectly.Keywords:AbstractSemanticRepresentation;SemanticGraph;Python;Neo4jgrapth-database;D3.js;Force 前言抽象语义表示(AbstractMeaningRepresentation,AMR)是一种近几年国际上新兴的语义表示结构,它旨在对整个自然语言句子进行语义表示,打破了传统的句法树结构的局限性[1]。AMR将一个句子的语义抽象为一个含有单个根结点的有向无环图,从而使得它可以不受限于句子的语法形式[1]。但不管对于专业还是非专业的人来说,由AMR复杂的语法规则转变得到的文本格式的句子看起来都非常地不直观,尤其是对于单词较多的句子而言,很难理清句子的结构。所以,将根据AMR标注得到的句子可视化为句子语义图的工作,则成为了一个非常实际且有用的需求。语义图可视化工作包括语义图的生成、语义图的存储、语义图显示和查询。存储方面,使用近些年一种广受欢迎图数据库neo4j,它可以很好的解决语义图的存储问题;而显示方面,以D3.js为首的一系列基于浏览器的前端数据库可视化工具库远远地超越了原始的图形界面的客户端程序,D3.js中的力导向图Force更是可以完美地用于显示语义图。AMR句子语义图显示与查询系统的软件环境为:开发工具:JetBrainsPyCharm2016.2.3,anaconda3开发语言:python3数据库:Neo4j前端:Javascript,D3.js后端:Flask第一章绪论1.1研究背景AMR(AbstractMeaningRepresentation,抽象语义表示)是一种新型的句子语义表示方式,由美国宾夕法尼亚大学的语言数据联盟(LDC)、南加州大学、科罗拉多大学等科研机构的多位学者共同提出[2]。并且开发了一个较大规模的标注语料库,它由自然语言句子和与其对应的用AMR形式表示的句子逻辑语义图构成[3]。AMR建立了统一的标注规范,其简单可读的特点方便人们理解,AMR表示的逻辑语义也方便计算机的处理[3]。虽然AMR形式表示的句子逻辑语义图已比传统的句法树的格式更便于理解,但仍不够直观,复杂一点的甚至可能需要动手画图才能理清楚。所以,鉴于此背景,为了方便AMR相关的科研工作者能够快速理清AMR句子的结构,节省时间而不再为不够直观的逻辑结构所纷扰,甚至可以快速查询并显示含有相关关键字的句子语义结构图以提高AMR工作的效率,便设计了该AMR句子语义图显示与查询系统。1.2论文的内容和意义1.2.1论文的主要内容本文主要介绍AMR句子语义图显示与查询系统的设计与实现,重点在于原始数据的处理和存储以及如何实现数据可视化,主要包括技术综述、需求分析、数据库设计和系统前后端的详细设计与实现。1.2.2论文的意义本系统设计的重点之一在于数据的可视化。对于人类的大脑,直观的图形图像相比于枯燥的文本信息而言,要容易处理许多。尤其是面对使用单纯的文本来表示的复杂结构信息,如树、图等数据结构,一般人的大脑想要快速地在脑海中把这些结构重现出来是非常困难的。而且随着数据规模的不断增大,这种无法缓和的问题还会进一步加剧。在如今这个快速发展的科技时代,把复杂且不直观的数据用人类易于理解、接收的方式呈现出来,对于一个直面用户的软件系统而言,已经成为非常必须、不可或缺的功能。AMR本身的标注文本对读者而言,带有大量增加阅读理解负担的“冗余”信息,例如结点的代号信息、用以维持结点之间相互关系的括号和冒号等等。同时,通过文本对齐、括号匹配的方式来寻找父子结点或兄弟结点以确定结点之间的关系,也是非常吃力的。本系统便在AMR标注句子的阅读和理解等方面提供了非常大的帮助。目前,虽然先后有多种不同的AMR解析算法被提出,但对AMR解析算法的研究仍处于初级发展阶段,性能都还相对较低。事实上,本系统的设计充当的是基石性的作用,它可以为更深层次的AMR算法研究工作提供良好的视觉基础,对提高工作的效率等各方面都有一定的帮助。而且,现在还没有类似像本句子语义图显示与查询系统这样完整的网页或相关的产品,是一个很不错的创新点。总之,本次毕业设计有着较重要的研究意义。1.3本文的组织结构本文共分为六章,每章对应的内容概要如下:第一章:绪论,介绍本系统设计的研究背景、论文的主要内容和研究意义。第二章:技术综述,展示系统设计与实现过程中应用的重要技术及其相关知识简介。第三章:需求分析,阐述系统的功能性需求和非功能性需求。第四章:系统数据库设计,阐明数据库设计模式和结构。第五章:系统设计与实现,介绍设计细节,主要包括数据处理及存储、网站搭建和实现数据可视化。第六章:总结与展望,对本次毕业设计进行总结,并对可改进之处进行展望。第二章技术综述2.1PythonPython是一门成熟且优秀的脚本语言,其中含有大量好用的内置函数,同时,也可以方便地安装和使用第三方库和包,所以,很多人也称它为“胶水语言”。在我眼里,它很“万能”,可用于进行快速便捷的数据处理、网络爬虫、科学计算、Web开发、人工智能等等,可以说是无处不在。同时,相比于其他的编译型语言如c或java,Python作为解释型语言具有轻量级、易调试、易添加模块等诸多优势。2.2Flask\hFlask是一个使用Python编写的网站后端框架,使用了MVC架构,在保持了灵活、自由、可扩展性强的特点的同时,也具备功能齐全、性能强大的特点。其中,Flask最大的特点是支持用户为系统添加各类插件,比如Flask自带了Jinjia2的模板解析插件,而用户可以根据需求灵活地进行替换。对于个人开发者而言,Flask能支持快速地构建起一个完善的后端应用;而在应对大型工程时,Flask也可以用模块化的方式进行开发,具有很大的潜力。2.3Neo4j2.3.1Neo4j简介图形数据库(GraphDatabase)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j是目前最流行的图形数据库,支持完整的事务[4]。在属性图中,图是由顶点(Vertex)、边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作结点,边也称作关系,每个结点和关系都可以由一个或多个属性[4]。如图2-1和图2-2所示,它们之间的关系为:图2-1的文本经处理解析存储到Neo4j数据库中得到图2-2。图2-1标注文本样例图2-2Neo4j数据库中图的样例Neo4j优点具有更快的数据库操作。当然,前提条件是数据量要较大;Neo4j使用Cypher来执行数据库的操作指令,而且自带一个便捷的图形显示模块,可以非常直观的进行调试与管理;灵活性更强。Neo4j的内部存储形式类似于Redis等nosql数据库,是基于json格式的键值对,存储非常简单直观。相比之下,mysql中则需创建大量的表,还要考虑和其他表的约束关系;数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。Neo4j对于图的存储自然是经过特别优化的,不像传统数据库的一条记录一条数据的存储方式,Neo4j的存储方式是:结点的类别,属性,边的类别,属性等都是分开存储的,这将大大有助于提高图形数据库的性能[5]。2.3.3Cypher语言语法简介本节主要介绍一些较常用的简单cypher语法并给出样例。(1)创建结点Neo4j创建结点十分简单,只需在创建结点时指定结点的类型与属性,而不需要创建任何的表或模式,同时,Neo4j会自动为结点分配一个唯一的主键id。下面的Cypher查询创建一个结点,标签是Word,具有两个属性code和content,通过RETURN子句,返回新建的结点:create(n:Word{code:'c',content:"comfortable"})returnn;(2)查询结点通过match子句来查询数据库。在查询时,也可以添加各类约束条件,如结点的类型或属性等,还可以添加where子句来构造更加复杂的查询条件。以图2-2为例,其对应的查询语句为:match(n:Word)wheren.line_id="bolt12_10511_6782.13"returnn;(3)删除结点以删除所有Word类型的结点为例,对应的Cypher语句如下:Match(n:Word)detachdeleten;2.4JavaScriptJavascript是一种基于对象和事件\h驱动开发并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端web开发的脚本语言,可以嵌入到html页面中,由来浏览器来解释执行,用来实现浏览器和用于交互[6]。常用来给html网页添加动态功能,响\h应用户的各种操作[6]。2.5D3.js2.5.1D3.js简介D3.js的全称是Data-DrivenDocuments,即数据驱动文档,是一个用JavaScript来编写的数据可视化框架[7]。D3.js的实现遵照了基本的Web标准,所以,D3.js可以在不依赖特定框架的情况下,充分利用现代浏览器的功能,将强大的可视化组件和数据驱动的方法结合到最基本的DOM操作中。D3.js操作简洁明了,只需要对函数式编程略有了解就可以简单完成基本图像的绘制。D3.js可制作的图有多种,例如常见的柱状图(Histogram)、饼状图(Pie),除此以外还有集群图(Cluster)、树状图(Tree)、力导向图(Force)、分区图(Partition)等等。2.5.2力导向图图2-3本系统中力导向图的显示样例本次显示与查询系统的设计中的图便使用的是力导向图,也称力学图,如图2-3所示,其在社交网络研究、信息传播途径等群体关系研究中应用非常广泛,它可以直观地反映群体与群体之间联系的渠道、交集多少,群体内部成员的联系强度等。它在二维或三维空间里配置结点,结点之间用线连接,称为连线,各连线的长度几乎相等,且尽可能不相交[8]。结点和连线都被施加了力的作用,力是根据结点和连线的相对位置计算的,然后根据力的作用,来计算结点和连线的运动轨迹,并不断降低它们的能量,最终达到一种能量很低的安定状态[8]。我的理解是力导向图中的各个结点类似于宇宙中的星球,它们相互之间本身具有一定的斥力,同时,也具有一定的引力,也就是结点之间的连线,斥力和引力平衡时便可达到稳定的状态。力导向图具有很强的交互性,结点可以进行随意的拖拽,稍微地拖拽几下,便可伸展为清晰结构的图像,非常神奇,同时,可操作性和灵活性都很强,十分适合用于显示AMR句子语义图。2.6Bootstrap样式Bootstrap是一个用于快速开发Web应用程序和网站的前端框架,其基于html、CSS和Javascript。Bootstrap提供了优雅的HTML和CSS规范,简洁灵活,使得Web开发更加快捷[9]。当前主流的小型网站开发为了能适应快速开发、快速迭代的需求,减少非核心开发的成本,把更多宝贵的人力资源利用在网站功能性需求的同时,又能满足用户的审美需求,所以,大多数都会使用一些前端框架或者前端库。而Bootstrap就是由FaceBook开发并开源的一套广受欢迎的前端样式库。由于使用了Bootstrap,本系统在开发的过程中大大减少了修饰网站外观的工作量,并到满足了较为美观流畅的设计目的。本系统主要使用了Bootstrap的如下几个功能:输入组件(inputgroup)、表格(table)、区块(div)等页面元素(element)的样式美化:主要使用方法为根据BootStrap的文档,为对应的元素添加或修改合适的属性,如<divclass="card-body">意指将一个div标记为card-body类型的组件,在满足合适的条件下,引入的bootstrap.js文件会自动为此div来修正样式,而不用人为编写大量的css规则。页面布局(Layout)的自动调整:Bootstrap内部实现了一套复杂而强大的页面布局逻辑控制系统,Bootstrap将其称为栅格系统(Grid)。对使用者来说,此系统简单易用且非常灵活。本系统使用了栅格系统来完成了页面布局的控制,提供了在不同尺寸的设备上依旧能基本保持原有页面样式,页面元素自动适应设备屏幕尺寸的特性。具体原理为在页面中中定义一个Bootstrap指定类型的容器(Container),在容器内的元素使用合适的尺寸控制标记如col-sm,mb-3等来完成元素在栅格系统内的布局,而Bootstrap会为不同设备的屏幕自动适应整个栅格系统,这就避免了开发者为元素来指定固定的样式。第三章需求分析为了开发出尽可能满足用户需求的系统,在开发之前,必须对系统的各个功能进行详细的需求分析,只有有了明确的需求分析结果之后,才能进行下一步详细的系统设计与实现。3.1功能性需求数据处理:将数据采用合适的方式进行解析,提取出结点的content、结点之间的关系及其他有用的信息,如句子的line_id、结点的code即结点中存储内容的代号等。其中,特殊情况的结点选择另外进行处理。数据存储:将解析后的结果以图的结构存储到Neo4j图数据库中,供后续网站后端使用。后端:用Flask搭建网站后端,给D3.js提供数据查询的接口,并提供面向用户的Web服务。前端:即数据可视化模块,需要根据用户的请求申请调用数据查询的接口,然后将数据查询的结果渲染为可视化的效果。3.2非功能性需求(1)性能需求:用户使用本软件的的目的是对AMR语句进行可视化,是用于辅助的演示型软件,对时间性能并没有很高的要求,只要求数据的查询及显示过程中没有明显的迟滞感。就当前数据集,甚至更多的数据集而言,若用户的网络正常,则要求查询操作的延时基本小于100ms。数据可视化的操作延时基本小于200ms以达到流畅操作的体验需求。(2)运行环境要求:要求软件占用空间少,尽量少的依赖其他的运行环境及软件。(3)界面设计需求:简洁明了,突出显示与查询的需求重点,使用户不需要额外的引导便可进行操作。第四章系统数据库设计使用Neo4j进行数据库设计时,并不需要建立大量的表,只需创建结点和关系即可。本次系统设计的结点含有的信息有:创建结点时自动生成的唯一的id、结点内存储的单词content、content的代号code、单词所属的句子的line_id及结点的type(表示该结点是正常结点还是特殊结点),如图4-1所示。关系含有的信息有创建关系时自动生成的唯一的id、关系的内容type及关系所属的句子的line_id,如图4-2所示。图4-1结点信息样例图4-2关系信息样例第五章系统设计与实现5.1系统整体设计系统整体流程设计如下:如图5-1,用户输入一些感兴趣的关键词,系统返回包含这些关键词的句子列表。图5-1关键词查询流程图如图5-2,用户从句子列表中选择某条感兴趣的句子,系统将句子的AMR语义图以力导向图的方式显示在网站上。图5-2AMR结构查询流程图5.2数据处理及存储本节主要讲述使用Python进行数据的读取、处理、分析及存储的相关细节。5.1.1数据分析原始数据由外部提供,都是以AMR语法规则标注的英语句子。其样例如下:#::idbolt12_10489_5932.3::date2012-12-09T14:30:42::annotatorSDL-AMR-09::preferred#::sntAslongaswesticktothisissue,Xinghuisurelyhasnowayofwinningthelawsuitifitgoestocourt.#::save-dateFriNov8,2013::filebolt12_10489_5932_3.txt(s/sure:domain(h/have-03:polarity-:ARG0(c/company:name(n/name:op1"Xinghui")):ARG1(w2/way:instrument-of(w3/win-01:ARG0c:ARG1(l2/lawsuit))):condition(g/go-01:ARG1l2:ARG4(c2/court))):condition(a/as-long-as:op1(s2/stick-01:ARG1(w/we):ARG2(i/issue:mod(t/this)))))其中以#开头的为注释部分,包含了句子id及句子原内容snt的有效信息;以左括号(开头的部分表示一个单词结点的定义,如(s/sure表示了一个代号为s的单词结点,结点的内容为sure;以冒号:开始的部分表示了一个关系,如(w2/way和:instrument-of(w3/win-01表示代号为w2的结点way对代号为w3的结点win-01具有instrument-of的语法关系;(4)其中有一些特殊的情况需要阐明:若一个结点被完整地定义过,如(s/sure,则在后面可能出现一个单独的代号s来指代这个已经出现过的结点,我们将称其为“代号结点”,也就是说同一个单词结点不会在同一句话中被定义两次;有些单词结点是用字面量表示的,没有相应的代号,只有相应的内容,如样例中的"Xinghui"和:polarity–,另外,还有定义数字项的字面量,如:quant1000。这些单词不存在单独的定义,单词的代号即是它的内容,我们我们将其称为“字面结点”。5.1.2结构化存储本节提出了两种方法来进行数据的结构化存储,分别是:多次提取的方式和使用栈的方式。1.多次提取的方式,具体实现流程如下:读取一个段落,即一句完整的AMR语义标注结构;提取出所有特殊的结点(代号结点和字面结点)及包含特殊结点的关系,进行暂时的存储。这样做的原因如下:特殊结点如果为“代号结点”,则此结点必定已被定义过,此时,应等待此结点的完整定义被存储后再进行存储;提取所有的正常结点及正常关系;先对提取出的正常结点及关系进行存储,再对特殊的结点及关系进行存储。其中,特殊结点的存储需注意:存储前,应先检查此结点的代号是否已被存储,若已被存储则说明此结点是代号结点,无需再次存储;若代号未被存储,则说明此结点是字面结点,需要被存储。2.使用栈的方式,具体实现流程如下:读取一个段落,即一句完整的AMR语义标注结构;顺序读取;若读取到关系,则将关系入栈;每次读取到一个结点的定义p;则在数据库新建结点p;然后检查栈顶是否有一条未出栈的关系arg;若有栈顶有一条关系,则将此关系出栈,再读取栈顶的一个结点p',并在数据库内添加一条新的记录(p',arg,p),并将此结点p入栈;若栈顶没有关系,则将此结点入栈;每次读取到特殊结点,检查此结点的代号是否已存在数据库中,若存在则跳转到(6);若代号不存在数据库中,则此结点是字面结点,则跳转到(4)。5.2后端的搭建本设计的目标是建立一个AMR句子语义图显示与查询系统,系统必须要有“数据显示”与“数据查询”这两个核心的功能。综合考虑,有两种实现方式:第一,基于web的显示与查询系统第二,基于客户端的显示与查询系统相比于基于客户端的系统而言,基于Web的系统没有任何安装成本,只需要通过浏览器上网便可以使用软件。其次,web端实现数据可视化实现成本更低和易于调试,市面上的主流实现方式都是web端。同时,web系统的维护相对于传统软件更简单,因为程序全部运行在webserver上,有任何问题了,可以快速定位[10]。而传统的软件是运行在客户的机器上的,需要收集需要的信息才能够分析定位[11]。总的来说,web程序更灵活,更方便,更易用。后端采用Python的轻量级网站框架Flask,Flask自由、灵活,可扩展性强,可用的第三方库丰富,十分适用于制作小型网站。后端向前端提供了三个接口,分别是:GET/,无参数,用于向用户提供基本的网站主页面index.html;GET/snts,参数为words,功能为根据接收到的words即关键词列表,根据每个关键词在数据库内进行包含查询,查询得到句子的id与内容,最后将结果取交集并返回给用户,供用户选择感兴趣的句子进行AMR语义图显示;GET/graph,参数为line_id,功能为根据收到的句子id,向数据库查询此句子的AMR语义图结构信息,格式化为d3.js所需要的数据格式后返回。5.3前端的数据可视化模块5.3.1网页简介整体网站效果如图5-3所示:图5-3系统查询与显示样例前端数据可视化模块分为查询模块与显示模块,使用流行的浏览器脚本语言JavaScript来编写,控制整体页面与用户的交互逻辑。查询模块主要包括顶部的查询输入框与左侧的查询语句结果列表。其中,如图5-3所示,查询关键字在结果列表中用红色标注突出,光标所选句子用高亮突出。用鼠标点击结果列表中的句子,便可在右侧SVG图框中显示出选择的句子对应的AMR语义结构图;数据显示模块主要是中间的SVG图框,如图5-4所示,结点的差异性用不同的颜色来显示区分,其中,头结点为红色,正常结点为蓝色,特殊结点为绿色,使语义图的结构更加清晰;另外,将鼠标放置在某结点或关系上时,结点或关系上内容的字体会适量放大,可帮助用户方便地查看,同时也提高了系统的友好性和交互性。图5-4SVG图框5.3.2前端实现细节输入框:在输入框上绑定了键盘事件监听器,每当对输入框有回车键被按下,就等同于按下查询按钮,很好地提升了用户的使用体验。查询按钮:在查询按钮上绑定了click事件的监听器,每当查询按钮被按下时,获取输入框中的内容,并使用ajax向后台构造并发送查询请求。若无返回结果,则用弹出页面警告框的方式告知用户。图5-5查询失败提示框在查询请求的回调函数中,对收到的查询结果列表进行解析,并在左侧的列表中把结果逐一添加至table的tbody中;若查询结果为空,即没有含有所输关键词的AMR语句时,则在网页上方跳出如图5-5所示的提示框,以提示用户进行重新输入。为了能够让用户能更加清晰地看到自己想要查询的内容,则在添加结果的过程中,对每个结果进行渲染,即使用正则表达式匹配查询的关键词。最后效果如图5-6所示,我做了如下的优化性工作:首先,将匹配的词语替换为添加样式后的词语,所有查询的关键词都被标记为明显的红色,使用户能够更快地判断相关结果对其的有效性,即快速判断是否列表中有其想要的查询结构;其次,列表头Sentences右侧列出了查询列表中语句的数量,以便用户下一步的操作;最后,列表框底部也添加了友好的提示语,如图5-6底部,“点击查询结果显示AMR图像”,可提高用户的体验和操作的流畅性。图5-6查询列表样例在添加关键词查询的结果至左侧显示列表的过程中,还为其中每一个结果(即table的每一行)添加了click的事件监听器。每当其中一行被用户点击时,会再根据点击对象的id使用ajax向后台发送查询对应语句AMR结构信息的请求。在列表点击请求的回调函数中,对收到的数据进行了如下操作来显示对应语句的力导向图:在屏幕中央的chart区域生成一个空白的SVG图像;为SVG图像逐步添加forceSimulation(力导向模型,用于模拟结点间的力导向关系)、link(所有的结点间的关系)、marker(标记器,用于绘制结点间关系上的指向箭头)、node(所有结点的本体)、linktext(显示在关系上的文字标签),nodetext(显示在结点上的文字标签)、circle(用于可视化结点的圆形图形)及各类力导向模拟函数、鼠标事件函数;将数据导入定义好的模型中,并启用各类函数;此时,从用户的视角看,一个包含多个结点及其关系的力导向图就显示在了屏幕中,并自动布局为一个比较伸展的图像。其中蓝色结点为普通结点,红色结点为AMR结构中的根结点,绿色结点为字面量结点。由于AMR结构的复杂性,其数据结构并不是一个标准的树,是一种类似树的图结构,语句中经常存在从一棵子树的结点指向另一个子树的结点的关系,所以,在二维平面下,可能无法依靠力导向图的自动布局特性来直接伸展为最清晰的结构。此时,用户可以通过鼠标对结点进行拖拽进行稍微的整理,将聚在一起的结构分分开,即可获得最清晰的结构了。第六章总结与展望6.1总结本次毕业设计使用语言是Python,开发工具选择的是Pycharm,后台数据库选择的是非常好用的Neo4j图数据库,前端采用了Javascript和D3.js等,此外,还用了Bootstrap样式简单优化了界面的设计。主要的工作是使用Python对有固定格式的AMR语义文本进行结点和关系的解析,再将解析后的结果存入数据库中,并搭建了一个前端网站供用户进行交互。用户在输入关键词后,网站会返回包含词关键词的语句列表,用户可从列表中选择感兴趣的语句,点击后,系统就会查询此语句的AMR结构信息并在页面上以力导向图的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论