一种基于后实现的自然语言混合编程方法与流程

文档序号:12362857阅读:323来源:国知局
一种基于后实现的自然语言混合编程方法与流程

本发明涉及编程领域,更具体的说,涉及一种基于后实现的自然语言混合编程方法。



背景技术:

在流行的编程工具中,大部分是可编译为机器语言的高级语言,而非人们使用的自然语言,如VB、C、C++、PASCAL、JAVA、C#等语言,其语法是从"机器语言"→"汇编语言"→"高级语言"这样逐步发展起来的,用自然语言进行编程国外公司有过尝试,但终以失败而告终,究其原因,无非三点:一是来自传统编程语言的思维定式的抵制;二是因民族、语言、文化、传统不同而产生的各种冲突:三是技术上实现较为复杂和困难。

现有的编程需要固定的编程环境、格式和符号,不同的编程语言的格式、符号都是不同的,导致普通人学编程非常困难,而且不同语言之间的代码是不能通用的。再者,每个人编程习惯不一样,函数名称等都是根据个人喜好自定义,不同编程人员之间的代码很难共用。因此,现有的用户有需求无法实现,很难找到有能力、有意愿的用户帮助解决问题,即便找到合适的,由于编程语言不一致,编程习惯不一致,返回的代码仍然需要需求方进行二次加工才能使用,无法直接运行,这对用户本身的编程素养要求很高。

现有的数据库基本上都是关系型的数据库,需要建立不同的库,库里面有很多的表,表的字段名称和长度都是不一样的,因此必须在表跟表之间建立复杂的关联才能实现数据的调用。因此,现有的数据库结构非常不利于智慧的共享。



技术实现要素:

本发明所要解决的技术问题是提供一种降低编程难度、提升编程效率且有利于实现需求的后实现的基于后实现的自然语言混合编程方法。

本发明的目的是通过以下技术方案来实现的:

一种基于后实现的自然语言混合编程方法,包括步骤:

获取需求方输入的自然语言混合文本;

无法执行本地函数时查询广表,如果找不到可执行的功能函数或参数,询问需求方是否要请求后实现,如果是,将自然语言混合文本另存为第一记录,并推送给同一群内的潜在的处理方;

获取处理方提供的功能函数或参数并反馈回需求方,另存为第二记录;

所述自然语言混合文本每一行的第一个最小单位获取对应功能函数;最小单位的后续文本对应功能函数的参数;除了代表每条记录唯一编号的编号字段外,其他字段的数据格式为字符串类型;

进一步的,当需求方确认后实现时,第一记录指定字段存储内容的第一个最小单位设为预设的第一字(需)时,将该记录发送给同一群内的所有人;所述潜在处理方产生的第二记录的指定字段存储内容的第一个最小单位设为预设的第二字(供)时,将该第二记录返回相应的需求方。

进一步的,当需求方确认后实现时,第一记录指定字段存储内容的第一个最小单位设为预设的第三字(求)时,将该记录发送给同一群内的好友;所述潜在处理方产生的第二记录的指定字段存储内容的第一个最小单位设为预设的第四字(供)时,将该第二记录返回好友中相应的。

进一步的,当处理方提供的功能函数或参数并反馈回需求方时,提醒需求方是否允许,运行结果符合预期后再另存为第二记录。

进一步的,根据第二记录指定字段存储内容的第二个字触发同名的功能函数,功能函数将执行结果反馈回需求方。

进一步的,需求方获取第二记录的自然语言混合文本;

根据自然语言混合文本的第一行的第一个最小单位作为函数名,从本地文件或广表中获取编程语言的功能函数;

根据最小单位的后续文本从广表中获取功能函数的参数;

编程语言未实现的功能利用接口或套接字调用不同的编程语言执行;

返回执行结果。

进一步的,所述参数只有一个,当所述编程语言为javascript;所述参数的数据类型为字符串类型;当参数是整数类型时,使用parseInt函数转换,当参数是浮点类型时,使用parseFloat转换;当参数是对象、函数或数组类型时,用eval动态转换;当所述编程语言为C#时,使用int.Parse()函数转换,当参数是浮点类型时,使用float.Parse()转换。

进一步的,如果自然语言混合文本大于或等于两行,且包含参数不能使用的特殊符时,用描述文字替换该特殊符号作为参数,函数执行时再恢复回原先的特殊符号。

进一步的,所述功能函数内部设有优先函数,运行功能函数时,根据参数的内容优先执行优先函数。

进一步的,当反馈的第二记录大于等于两条时,优先执行好友反馈的第二记录。

进一步的,从广表中寻找跟第一记录匹配的用户作为潜在的处理方;作为潜在的处理方的用户,其保存在广表中的记录至少有一条满足的以下条件:与第一记录的第一字对应字段的内容为第二字(群为广);代表数据结构的字段内容(即章、节、题字段)跟第一记录相同。

本发明由于将自然语言的首行的第一个最小单位作为功能函数,其他的文字作为参数,然后用利用接口或套接字调用相关的编程语言执行,这样就实现了自然语言跟编程语言的有效映射,使得自然语言也可以被机器识别运行。自然语言容易理解,无须编程者了解各种编程语言的函数、语法,答复降低了编程门槛,使得普通人通过简单的练习也可以实现复杂的编程。自然语言编程摆脱了具体编程语言的、运行平台的限制,通用性更高。具备编程基础的开发人员也可以根据本发明的方法编写可执行的编程语言语句,实现基础功能,与自然语言映射,编程的时候直接调用,可大幅提高编程效率。本发明限定了最小单位的首字(以汉字为例)作为函数名,而不是随意的自然语言,错的处理在各个函数的内部处理,也会通过预处理以及后备处理做调整。由于广表的数据结构简单,不需要现有的数据库支持都可以实现。广表除了唯一的编号,其他的数据类型都是字符串,不需要用户重新策划、增减字段。统一的字段数和数据类型,有利于数据之间互通互联,沟通一致,有助于虚拟现实、增强现实和混合现实的实现。有利于工种独立,便于实现全栈,便于自然语言编程、模块化的SQL查询。有利于共享智慧、实现手机社交编程和教学及数据融合。广表实现数据与代码一体化,有利于nosql的转型,像excel一样记录。其自有结构(章、节、题),群聊天式创作,每条记录都可定价。且基于自然语言混合编程,表达即为代码,在运行时运行式繁殖,一条记录就包含所有运行所需的要素。广表之间不用联表,不用关系,而关系型数据库需要建库、库里面建表,每个表的字段名称、数量也不一样,表跟表之间要进行数据关联,数据结构非常复杂。由于数据的存储都是基于广表,随着用户在广表中积累的数据越来越多,计算机会越来越能读懂用户,相当于用户在网络世界中逐渐地复制自我,可以做到想你所想;并且通过在广表中实现数据的共享,计算机可以非常方便地调用不同用户的广表,以便对数据进行深入挖掘,实现共享智慧。由于所有的用户都是基于自然语言混合编程,因此处理方返回的功能函数或参数是可以直接运行的,需求方直接使用即可;而且所有数据都在统一的广表内,寻找匹配的需求方也变得非常容易。

附图说明

图1是本发明实施例利用自然语言的混合编程方法的示意图;

图2是本发明实施例利用社交软件进行自然语言的混合编程的示意图;

图3是本发明实施例在虚拟现实中的应用示意图;

图4是本发明实施例基于数据表的自然语言混合编程方法的示意图;

图5是本发明实施例基于数据表的共享智慧的方法的示意图;

图6是本发明实施例基于后实现的自然语言混合编程方法的示意图;

图7是本发明实施例基于自然语言的混合编程方法的举例示意图。

具体实施方式

如图1所示,本发明公开了一种利用自然语言的混合编程方法,包括步骤:

S11、获取自然语言混合文本;

S12、根据自然语言混合文本每一行的第一个最小单位获取编程语言的功能函数;

S13、根据最小单位的后续文本匹配所述功能函数的参数;

S14、编程语言未实现的功能利用协议接口或套接字调用不同的编程语言执行;

S15、返回执行结果。

所述协议接口包括但不局限于ajax和http协议;所述套接字包括但不局限于socket和websocket。

ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

http协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。http是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过http协议传输所要访问的超文本信息。http包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

WebSocket是基于HTML5的一种套接字。它实现了浏览器与服务器全双工通信(full-duplex)。在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手”,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

本发明由于将自然语言混合文本每一行的第一个最小单位作为功能函数,其他的文字作为参数,然后用利用接口或套接字调用相关的编程语言执行,这样就实现了自然语言跟编程语言的有效映射,使得自然语言也可以被机器识别运行。自然语言混合文本容易理解,无须编程者了解各种编程语言的函数、语法及符号要求,大幅降低了编程门槛,使得普通人通过简单的练习也可以实现复杂的编程。本发明摆脱了具体编程语言的、运行平台的限制,通用性更高。随着用户数量增加和编程数量的积累,会有越来越多的功能成为现成的功能函数,编程的时候直接调用即可,因此编程效率会越来越高。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

本发明的技术方案可以广泛应用于虚拟现实、增强现实、混合现实、AI(人工智能)、移动智能终端(如智能手机、平板电脑、穿戴设备或智能眼镜)、计算机、机器人、智能家居设备或智能工业控制设备等等,均可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。

网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。

后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

下面结合附图和较佳的实施例对本发明作进一步说明。

本发明所说的“自然语言混合文本”应该从广义的角度进行理解,它代表了一种符合普通人叙事的文本,既可以采用自然语言,也可以采用编程语言,甚至可以混用,表现形式上也不局限于文字,还可以混杂语音和图像。单纯采用语音也是可行的,因为通过现有公知的语言识别技术,语音最终可以转化为文本语言。图像本身可以作为参数,因此也可以作为自然语言混合文本的一部分。

自然语言混合文本不局限于中文,英语、日语、韩语、德语、法语等任何语言均可。具体语种不同,对应的“最小单位”也不一样,以下为了方便阐述,均以中文为例进行说明,其对应的最小单位为单个汉字。如果是采用拼音文字时,最小单位为一个单词。

由于具体运行的计算机设备的编程语言各有不同,可以从输入的内容里面抽取内容特征,用于识别内容类型。比如http代表网页,html、function、php代表执行环境分别代表html、javascript、php,等等。

自然语言混合文本可以是单行,也可以是多行。对于单行的自然语言混合文本,可以根据首行的第一个最小单位获取其对应的功能函数,后面的文本统一作为参数,然后利用接口或套接字调用相关的编程语言执行,返回执行结果即可。

如果自然语言混合文本有多行,除了判断首行第一个字以外,还需要判断后面的行的首字是否也是功能函数,如果整个自然语言混合文本包括多个功能函数的时候,根据整个语境的逻辑关系自动选择执行的先后顺序。比如,编程人员想演示幻灯片,首行首字以“演”调用相关的幻灯片设计的功能函数,那么后续各行的自然语言混合文本代表的就是幻灯片里面所要演示的内容。再例如,多行文字除首行外,如果有代表优先执行的“先”字(即优先函数),那么虽然该行靠后,也会优先执行。

如果首行的第一个字代表纯自然语言,其他行的第一个字都是代表功能函数;否则,其他行的内容作为混合代码。

当自然混合文本只有一个字,该字有同名的webapp或虚拟现实应用且不属于核心功能函数的时候,打开特定功能的webapp或虚拟现实应用(网页应用),市面上同一功能的应用软件可能有多种,本发明的可以跳过不同应用软件的各种操作过程,直接调用用户想要的功能。比如用户想看荒野猎人,只需要输入“看荒野猎人”,计算机就可以直接打开荒野猎人的电影供用户观看,用户不需要考虑到底用“暴风影音”,还是PPTV来观看电影,实现了去应用、去习惯、去牌子的目的,真正实现“所思即所得”的效果。少数单字会对应核心功能函数,比如“存”子,就代表存储的功能函数,而不是用于存储的webapp或虚拟现实应用。

本发明构思可以让不同的编程语言有一套对自然语言理解的统一标准;根据不同的内容类型通过正则表达式替换为目标语言的代码(比如JS或PHP,替换成目标源码,然后通过eval执行。),实现跨平台运行。因此,本发明的所述自然语言混合文本可以通过文本、语音或手势的方式输入;所述自然语言混合文本通过移动智能终端、计算机、AI(人工智能)、虚拟现实、增强现实、混合现实、机器人、VR(虚拟现实)、AR(增强现实)、MR(混合现实)、智能家居设备或智能工业控制设备运行;所述自然语言混合文本上传到云端或本地服务器,由云端或本地服务器自动匹配可执行的代码;所述移动智能终端包括但不局限于智能手机、平板电脑、穿戴设备或智能眼镜。所述自然语言混合文本上传到云端或本地服务器,由云端或本地服务器自动匹配可执行的代码。

随着基于本发明构思的开发者越来越多,同一个汉字对应的功能函数可能有多个,这个时候可以根据预设的规则调用最合适的功能函数,比如以创建时间的先后顺序、使用频率、好评率等。

当自然语言混合文本大于或等于两行,包含参数不能使用的特殊符时,用描述文字替换该特殊符号作为参数,函数执行时再替换回原先的特殊符号。机器可识别的编程语言跟自然语言的语法是不同的,比如编程语言中回车符号代表另外一行执行指令,但自然语言中,回车符号则大多用于排版需要,因此自然语言混合文本执行之前必须进行预处理,将编程语言无法识别的特殊符号(如回车符)转换为可作为参数的语句,比如用“广换行”来替换回车符。以便让上下行的文本能整体被编程语言识别。

另外,编程语言一般要求参数之间需要分隔,但本发明除了首字为功能函数,后续的统一作为一个字符串参数进行处理,即参数只有一个,参数的数据类型为字符串类型;当所述编程语言为javascript;所述参数只有一个,所述参数的数据类型为字符串类型;当参数是整数类型时,使用parseInt函数转换,当参数是浮点类型时,使用parseFloat转换;当参数是对象、函数或数组类型时,用eval动态转换;当所述编程语言为C#时,使用int.Parse()函数转换,当参数是浮点类型时,使用float.Parse()转换。在函数运行的时候通过字符串内的内容去自动分割,如通过逗号、与来分割不同的参数,目的是为了编程更灵活,这样一来,普通编程人员无需考虑参数分隔问题,可以自动处理,且在输入的时候尽量减少符号应用,使得编程过程更接近于日常表述,进一步降低编程难度。

当自然语言混合文本对应的功能函数重名的时候,按以下默认优先级执行:执行用户自己编写的功能函数;执行官方编写的功能函数、执行好友编写的功能函数、执行陌生人编写的功能函数;如果有配置优先级则按配置的优先级判断;如果同一个群体也存在同名的函数,则按照配置里指定的函数执行,否则按照最近更新的执行。

本发明可以基于社交平台进行自然语言混合文本的输入,通过社交平台调用所述自然语言混合文本对应的功能函数或应用获取结果或执行功能。在日常交流中实现编程,结合社交平台,不仅符合大部分用户的使用习惯,比如现在移动互联网普及,微信、微博一类的社交平台几乎每个用户每天都会频繁使用,因此,基于社交平台更容易被用户接受,另外,本发明需要集群体智慧进行开发,开发的人越多越好用,通过社交平台的交互属性,有利于用户交流编程经验,发布需求,以及实现用户编写的各种功能函数、参数的流转。参考图2,结合社交平台进一步产生本发明的具体过程:

S21、获取用户的身份信息;

S22、将社交平台的编辑界面反馈给用户;

S23、获取用户输入的自然语言混合文本;

S24、对自然语言混合文本进行预处理;

S25、判断自然语言混合文本的语种;

S26、判断自然语言混合文本的内容类型;

S27、调用编程语言执行;

S28、返回执行结果。

更具体的,调用编程语言执行的步骤要先区分自然语言混合文本是单行还是多行。如果自然语言混合文本为单行,直接利用接口或套接字调用相关的编程语言执行;返回执行结果;如果自然语言混合文本大于或等于两行,当所述编程语言为javascript;所述参数的数据类型为字符串类型;当参数是整数类型时,使用parseInt函数转换,当参数是浮点类型时,使用parseFloat转换;当参数是对象、函数或数组类型时,用eval动态转换;当所述编程语言为C#时,使用int.Parse()函数转换,当参数是浮点类型时,使用float.Parse()转换。当自然语言混合文本除第一行以外的其它行的第一个最小单位代表一个功能函数且符合预设规则时,优先执行该功能函数;返回执行结果。

可选的,不同的编程语言通过协议接口或套接字调用自然语言混合文本对应的功能函数或应用获取结果或执行功能。比如采用http协议,浏览器几乎是每个网名高频使用的一个应用,因此采用http协议来调用函数和应用也是一种非常可取的方式。具体来说,开发人员开放接口,用户只要在浏览器中输入某个网址,结合网址后面的自然语言混合文本,就能获取结果或执行功能。例如,“diywebapp.com”网站开发了用户弹窗的功能函数并对外开放,那么用户在浏览器中输入“diywebapp.com/弹你好!”,当前浏览器就会弹窗,显示内容为“你好!”。

下面通过一些具体的例子进一步阐述本发明构思。比如用户想看某个电影,输入“我要看荒野猎人”,现有技术需要基于整个文本做语义分析,判断用户的意图,然后调用跟文本最匹配的函数执行,算法非常复杂,随着文本长度的增加,复杂度会更高。更重要的是,基于语义分析的实现方式,只能适用于单行文字的识别,进行简单的程序调用,无法通过多行文字实现编程的目的。采用本发明的方案,用户只需要说“看荒野猎人”,第一个字“看”就是函数,直接调用即可,“荒野猎人”是参数,直接代入“看”的函数中即可执行,整个实现过程简单直接,不需要高深的编程知识。假设采用本发明的构思,用户输入的也是“我要看荒野猎人”,本发明也不需要利用语义分析,一样可以实现用户的意图。首先,将“我”作为函数名,“要看荒野猎人”作为参数名,“我”函数里面判断参数中,“要”也是一个函数,因此从“我”函数中进一步调用“要”函数,把“看荒野猎人”作为参数名,同理,“看”也是一个函数,再从“要”函数中调用“看”函数,然后将“荒野猎人”作为参数发现可以直接执行,因此,最终执行的仍然是“看”函数,达到用户想要的效果。

基于多行文字实现编程,本发明也举例说明。比如对一首古诗进行修改。古诗原文:

远看山有色,

近听水无声。

春去花还在,

人来鸟不惊。

对古诗进行编辑,用户输入的文本是:

换山为打印机

删花

前《画》王维

后2016年3月15日

运行后产生的效果是:

《画》王维

远看打印机有色,

近听水无声。

春去还在,

人来鸟不惊。

2016年3月15日

可以看到的,用户只需要把自己的要求一条条提出来,计算机就能逐条执行命令,实现编程效果。其编程的语言更接近于自然语言,不需要用户使用复杂的编程语言。

编程不仅有顺序结构,也有循环、判断结构,各举一列说明。

如现在时间不超过12点

弹上午好

如现在时间超过12点

弹下午好

执行情况:“如”函数判断时间,低于12点,“弹”函数弹出对话框,显示“上午好”;如果超过12点,弹”函数弹出对话框,显示“下午好”。本例中,“如”函数代表具备判断结构的编程思想,说明判断结构的编程通过本发明一样可以实现。

用本发明技术方案实现乘法口诀。比如要计算6的乘法口诀,用户直接输入“乘6”,自动就可以调用“乘”函数,然后把6作为参数代入到函数当中,输出运算结果:“6X6=36;6X7=42;6X8=48;6X9=54”。

自然语言混合文本的参数只有一个,但实际编程语言执行的时候需要多个参数,因此,需要对自然语言混合文本的参数预处理,将其分割成多个编程语言可以实现的子参数。另外,同一个函数,参数不一样,对应的功能可能完全不一样。举例一个“加”函数的例子来说明。

假设用户输入自然语言混合文本“加1,2”,“加”表示加法之意,“1,2”整体作为一个参数,此时“加”函数执行加法对应的子函数。在执行的时候,“加”函数根据参数里面的“,”符号,自动将其拆成两个子参数“1”和“2”,这样编程语言就可以识别,得出1+2=3的运算结果。

但如果用户输入自然语言混合文本“加分割”,此时“加”就不是加法的意思了,而是为了增加内容。此时“加”函数里面会调用另外一个对应的子函数,实现加分割的效果。

本发明的技术方案特别适用于虚拟现实领域,虚拟现实的场景可以突破现实世界的各种物理法则的限定,允许开发者随意架构逼真、梦幻的世界,真正做到言出即法。比如输入“牛”、“鸭子”,就可以出现“牛”和“鸭子”的模型。在虚拟现实的世界里,会有一个第一人称代表自己的角色,这时候输入“走”,那角色就往前走,输入“飞”,角色就飞起来,打破物理的限制,并且很多命令默认绑定在第一人称的角色上。

图3是虚拟现实在教学领域的应用,通过自然语言混合编程搭建了一个宽敞的教室,教室内的布景可以随意添加更改,当小朋友对着麦克风说“猫”的时候,教室中间的平台上就会悬空出现一只猫,这只猫可以在平台上360度旋转,让小朋友对“猫”这种动物有全方位的了解。可选的,用键盘直接输入“猫”也可以达到同样的效果。自然语言表达又具有一定的随意性,在现实生活场景可能会因为表达不够严谨,逻辑性存在问题而无法执行。但在虚拟现实空间中,其法则可以人为随意设定,不需要满足现实世界的各种物理法则限制,因此特别适用于本发明的自然语言混合编程方法。

【广表例子】

作为本发明的另一实施方式,本实施方式公开了一种基于数据表的自然语言混合编程方法,具体来说,包括步骤:

建立广表;

将数据中的自然语言文本存储到广表的第一字段中;

所述广表的字段数量固定不变,字段名称固定不变;除了代表每条记录唯一编号的字段外,其他字段的数据格式为字符串类型;所述数据包括自然语言混合文本;所述自然语言混合文本的第一个最小单位代表功能函数,最小单位的后续文本代表参数。

更具体的,字段名称采用最小单位的字或单词命名,所述字段依据数据内容、数据结构、数据标签、数据类型、数据交互、数据属性和数据所有权人进行设定,总计二十六个字段,由于英文字母刚好26个,为了简化起见,且能被不同语种的人所熟识,字段名称也可以用26个字母代替。具体举例如下:

参考图4,本发明的广表尤其适用于前述利用自然语言的混合编程。具体实现方法如下所述:

S41、获取自然语言混合文本;

S42、将数据中的自然语言文本存储到广表的第一字段中;

S43、根据自然语言混合文本每一行的第一个最小单位作为函数名,从广表或本地文件中获取编程语言的功能函数;

S44、根据最小单位的后续文本从广表或本地文件中获取功能函数的参数;

S45、编程语言未实现的功能利用协议接口或套接字调用不同的编程语言执行;

S46、返回执行结果。

可见,自然语言混合文本每行首字对应的功能函数既可以存储在广表内,也可以存储到本地文件中;相应的,功能函数的参数既可以存储在广表内,也可以存储到本地文件中。从自然语言混合编程的理念来看,当广表的安全保密性能满足要求时,优选将功能函数和参数都存储到广表中,真正做到广集天下智慧,实习世界大同的目的。

以实现计算文本长度的方法举例说明。

待计算的文本存储在广表“号”为203的记录中,该记录的其他几个字段内容为:“户”10774,“章”为专,“节”为文,“题”为画,“文”的内容是:

\画

远看山有色

近听水无声

春去花还在

人来鸟不惊

而计算文本长度的功能函数存储在广表“号”为2914的记录中,该记录的其他几个字段内容为:“户”10774,“章”为专,“节”为广,“题”为长,计算文本长度的功能函数存储在“广”的字段中:

现在,用户在广表中新建一条记录,“号”为2915的记录中,“户”为10774,“章”为专,“节”为例,“题”为长,“广”字段里面输入自然语言混合文本:

号203

直接执行,将自动返回结果:33。

可见,用户不需要知道具体的编程语言,他(她)只需要知道参数存在哪个位置(号203),然后直接用代表功能函数的唯一汉字“长”即可实现自动计算文本长度的目的。

由于广表的数据结构简单,不需要现有的数据库支持都可以实现。广表除了唯一的编号,其他的数据类型都是字符串,不需要用户重新策划、增减字段。统一的字段数和数据类型,有利于数据之间互通互联,沟通一致,有助于虚拟现实、增强现实、混合现实、的实现。有利于工种独立,便于实现全栈,便于自然语言编程、模块化的SQL查询。有利于共享智慧、实现手机社交编程和教学及数据融合。广表实现数据与代码一体化,有利于nosql的转型,像excel一样记录。其自有结构(章、节、题),群聊天式创作,每条记录都可定价。且基于自然语言混合编程,表达即为代码,在运行时运行式繁殖,一条记录就包含所有运行所需的要素。广表之间不用联表,不用关系,而关系型数据库需要建库、库里面建表,每个表的字段名称、数量也不一样,表跟表之间要进行数据关联,数据结构非常复杂。

作为本发明的另一实施例,本实施方式还公开一种基于数据表的共享智慧的方法,

获取用户输入的数据;

获取用户社交平台的身份信息;

获取用户输入的数据;

将数据存储在广表中;

根据广表指定字段存储内容的第一个最小单位判断共享范围,根据第一个最小单位后面的其他字判断是否共享;

所述广表的字段数量固定不动,所述字段名称固定不变;除了代表每条记录唯一编号的字段外,其他字段的数据格式为字符串类型。

参考图5,结合前述自然语言混合编程的方法,可以实现智慧共享,使得每个用户都能直接调用其他用户的功能函数和参数运行,无须二次修改、加工。具体来说,所述数据包括自然语言混合文本;

S51、用户获取处于共享状态的自然语言混合文本;

S52、根据自然语言混合文本的每一行的第一个最小单位作为函数名,从广表或本地文件中获取编程语言的功能函数;

S53、根据最小单位的后续文本从广表中获取功能函数的参数;

S54、编程语言未实现的功能利用协议接口或套接字调用不同的编程语言执行;

S55、返回执行结果。

由于数据的存储都是基于广表,随着用户在广表中积累的数据越来越多,计算机会越来越能读懂用户,相当于用户在网络世界中逐渐地复制自我。这样自然语言混合文本在运行时调用多条处于共享状态的数据,可以做到想你所想。

比如:某用户的广表的“文”字段经常存储苹果公司的相关产品、报道;但未发现广表中该用户有购买过苹果的手机产品,然后从广表中查看该用户的的购物记录,发现该用户的购买能力较弱,那么计算机就可以判断出该用户喜欢苹果手机,但囊中羞涩,消费不起。等某日,某电商在广表的“文”字段中发布了一个苹果手机的最新打折信息;此时就可以自动推送给该用户。随着广表的数据越丰富,推送的信息、时机就越匹配。以本例子进一步说明,假设该用户发工资的信息也在广表中,打折信息甚至可以在发工资当天推送给用户。这一切都基于所有的数据都存储在广表中,而每个人的广表都是相同的,数据之间的流转完全没有障碍。另外,基于广语言的编程方式,降低了编程的门槛,每个用户都可以参与到数据的挖掘利用当中,编写符合各种需求的功能函数,并互相共享,使得互联网越来越智能,真正实现共享智慧。

当然,为了保护隐私,用户可以自主设置共享的内容和范围,共享智慧一般在同一“群”内实现,同一个群可以代表了一个产品、一个兴趣群组等,因此,同一群内的人往往都具有同一目标、同一兴趣,有共同沟通的基础。本实施例中,通过广表的“广”的第一个字进行识别,比如“共”代表相同群内的所有人都可以看到;“享”代表相同群内的指定人共享。还有一类信息可以主动推送,比如通过分析广表,发现两个不同的用户都喜欢看同一类型的电影,就可以主动将记录推送给对方,促成气味相投的双方沟通交流。主动推送的范围也是可设定的,也可以通过“广”的第一个字进行识别,比如“推”主动推送给所有匹配的用户;“送”主动推送跟匹配的指定人共享,指定人一般指好友,或者同一工作群的人。

作为本发明的另一实施例,本发明还公开一种基于后实现的自然语言的混合编程方法。由于采用了自然语言混合编程、广表以及共享智慧的方案,使得暂时无法实现的需求可以滞后实现。

参考图6,基于后实现的自然语言的混合编程方法具体包括以下步骤:

S61、获取需求方输入的自然语言混合文本;

S62、无法执行本地函数时查询广表,如果找不到可执行的功能函数或参数,询问需求方是否要请求后实现,如果是,将自然语言混合文本另存为第一记录,并推送给同一群内的潜在的处理方;

S63、获取处理方提供的功能函数或参数并反馈回需求方,另存为第二记录;

所述自然语言混合文本每一行的第一个最小单位获取对应功能函数;最小单位的后续文本对应功能函数的参数;所述广表的字段数量固定不变,除了代表每条记录唯一编号的字段外,其他字段的数据格式为字符串格式。

可选的,提出的需求和反馈的功能函数或参数可以记录在同一条记录里面,也可以存储在不同的记录。由于都是采用自然语言混合编程,所以反馈的功能函数和参数是可以直接运行的,这一点跟一般开发组共享代码是完全不同的,一般开发人员解决不了的问题,也会寻求帮助。但一般对方只是把代码反馈回来,需要嵌入自己的代码中,利用特定的编程环境才能执行,而且由于每个编程人员的习惯不同,哪怕采用同一编程语言,也无法直接使用,还需要自己二次修改,才能跟自己现有的代码契合。

由于采用了统一的广表存储自然语言混合文本、功能函数和参数,数据的匹配、流转都非常便利。比如需求方写的自然语言混合文本包括关键字“html5”,自然语言混合文本存储在广表的“广”字段中,然后搜索其他用户的广表,如果有用户广表的“广字段”存在大量html5的代码,那么该用户就是潜在的处理方。

当然,如果需求方有明确的求助对象,也可以直接发送给对方。另外,发送的对象也可以控制权限,参考前述共享智慧的实施方式,可以根据特定字段的内容来控制推送范围,是求助所有的用户还是指定的用户。

当反馈的功能函数或参数有多个时,可以择一存储,也可以都存储到广表中,但真正执行的只能有一个,选择的规则有多种,比如执行最先反馈的,好评率最高的、优先执行自己好友的等等。

广表的每条记录都有唯一的编号,因此需求方运行自己存储的自然语言混合文本时候,调用唯一编号就能调用反馈回来的功能函数或参数。

因此,所述自然语言混合文本的首行包括所述编号,当程序执行时,先根据编号从广表中找到对应的记录;然后根据自然语言混合文本的第二行的第一个最小单位从广表中调用相应的功能函数,根据最小单位的后续文本对相应记录的内容进行处理。基于前述自然语言混合编程的实施方案,参数只有一个,所述参数的数据类型为字符串;执行的时候通过字符串内的特定字符自动分割成多个可供编程语言识别的子参数。

后实现中需求方可以通过设定广表的特点字段的内容来选择将第一记录推送给特定范围的潜在的处理方,同理,处理方编辑产生第二记录也可以用同样的方式反馈给需求方以及相关的其他人。

比如,当需求方确认后实现时,第一记录指定字段存储内容的第一个最小单位设为预设的第一字(需)时,将该记录发送给同一群内的所有人;所述潜在处理方产生的第二记录的指定字段存储内容的第一个最小单位设为预设的第二字(供)时,将该第二记录返回相应的需求方。

当需求方确认后实现时,第一记录指定字段存储内容的第一个最小单位设为预设的第三字(求)时,将该记录发送给同一群内的好友;所述潜在处理方产生的第二记录的指定字段存储内容的第一个最小单位设为预设的第四字(供)时,将该第二记录返回好友中相应的。

当处理方提供的功能函数或参数并反馈回需求方时,提醒需求方是否允许,运行结果符合预期后再另存为第二记录。

根据第二记录指定字段存储内容的第二个字触发同名的功能函数,功能函数将执行结果反馈回需求方。

如图7所示,综合上述实施方式,进一步产生本发明基于自然语言混合编程的的构思。游客先登录自己的社交平台,如“虚我”、VR社交平台等。然后选择加入“群”,群代表某个虚拟现实的应用或游戏。用户在群里面编辑或打开某个“号”的代码(即可自然语言混合代码),进入预执行。

对于单行的代码,取首字作为函数,其他字作为参数,eval动态执行,对参数进行分割,然后进行数据类型转换得到真实的、机器可识别的真实参数。数据类型转换以后进入函数调用阶段,依次进行以下条件的判断:该函数是否存在?是否有优先执行的函数?是否重名函数?是否可用javascript或C#直接执行?如果函数不存在,参考上述后实现的实施例执行。如果不能用javascript或C#直接执行,则需要通过接口或套接字执行,连接数据库接口,根据不同的编程语言的接口或套接字选择,反馈到虚拟现实、增强现实或混合现实的接口。

对于多行的代码,需要进行预处理,用javascript或C#整体执行。如果不能按整体执行,先以换行符或结束符分割,逐行执行函数,最后反馈到AI虚拟现实、增强现实或混合现实的接口。

虚拟现实、增强现实或混合现实的接口输出返回结果,进入备处理阶段,然后通过VR虚拟现实处理接口、AR增强现实处理接口、MR混合现实处理接口、RR远程现实处理接口执行其他功能接口执行或生成结果,结束运行。

如果代码只有一个字,则执行单字函数或该字对应的应用或游戏。

通过广表共享智慧的方式可以参考前述实施例,广表连入数据库接口。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1