1、1基于 WEB与汉语自然语言处理的地理信息系统应用研究崔奇明鞍山供电公司,辽宁 鞍山 114001摘要:介绍了一个基于 Visual Prolog 与英语自然语言处理的单用户地理信息查询系统模型 Geobase。通过对此模型的研究与改进,提出了基于 WEB 与汉语自然语言处理的地理信息查询系统模型总体设计思想并进行了实现,包括建立汉语词库和给出其相应的汉语句子分词算法、部分语言集、代码等,并探讨了此系统模型与大型数据库的联接。关键词:人工智能;自然语言处理;中文信息处理;Web;Visual Prolog APPLICATION RESEARCH OF GEOGRAPHY INFORMATIO
2、N SYSTEM BASED ON WEB AND CHINESE NATURAL LANGUAGE PROCESSING CUI Qi-MingAnshan Power Supply Company ,Anshan Liaoning 114001Abstract:The geography information query system model Geobase based on Visual Prolog and English Natural Language Processing is introduced in this paper.General design frame of
3、 the geography information query system model based on Web 、Chinese NLP and its implementation is created by researching this model ,including implement Chinese words library and Chinese sentence split words algorithm. The related partial language set and program code is given,and also investigating
4、 this system model connect to a larger database.Keywords: Artificial Intelligence;Natural Language Processing;Chinese information Processing;Web;Visual Prolog1引言做为人工智能(AI)的一个研究主题,自然语言处理( NLP)已经在一些系统中得到应用。人类使用自然语言(如汉语、英语)进行交流是一种智能活动。AI 研究者们一直在尝试形式化处理自然语言所需要的过程机制,如把自然语言概念化为一种知识库系统以处理人与计算机的自然语言对话,并建立计算
5、机软件来模型化这个处理过程。一种比较成熟和有效的方法并不使用显式的领域模型而是利用关键字或模式(Pattern)来处理自然语言。这种方法利用预先设计的结构存储有限的语言学和领域知识,输入的自然语言句子由预定义的含有指示已知对象或关系的关键字或模式的软件来扫描处理。这种方法也即做为一种自然语言接口与数据库系统或专家系统等进行连接,以检索其中的信息。通过学习国外相关应用案例,分析一个英语自然语言处理的模型系统,从而研究并实现基于 WEB与汉语自然语言处理的地理信息查询系统模型。2 基于英语自然语言处理的系统模型 Geobase21 Geobase 模型简介Geobase 是针对一个地理信息系统的查
6、询而研制的,其中用自然语言英语来查询地理信息数据库(Visual Prolog 可装入的一个文本文件) 。通过输入查询的英语句子,Geobase分析并转换这些英语句子为 Visual Prolog 能够理解的形式,然后给出查询的答案。Geobase把数据库看做是由联系而联接起来的实体联系网络。实体是存储在数据库中的数据项,联系是联接查询句子中实体的词或词组,如句子 Cities in the state California,这里的两个实体 Cities 和 state 是由联系 in 联接的,词 the 在这里被忽略,而 California 被看做是 state 实体的一个实例。 Geob
7、ase 通过将用户的查询与实体联系网络进行匹配来分析查询句子。如查询句子:which rivers run through states that border the state with the capital Austin? 首先忽略某些词:which、that 、the、?,其结果查询句子为:rivers run through states border state with capital Austin,其次找出实体与联系的内部名,实体可能有同义词、复数,联系也有2同义词并可能由几个词组成等,经过转换后,查询句子为:river in state border state with
8、capital Aaustin,通过查找 state with capital Austin 的 state,Geobase 再找出与这个 state 相邻接的所有的 states,最后找出 run through(由 assoc(“in“,“run“,“through“)转义为 in)states的 rivers。22 数据库及实体联系网络数据库谓词举例如下:state(Name,Abbreviation,Capitol,Area,Admit,Population,City,City,City,City)city(State,Abbreviation,Name,Population) 实体联
9、系网络结构 schema(Entity,Assoc,Entity)如下:schema(“population“,“of“,“state“)schema(“city“,“in“,“state“)实体对数据库查询的接口,通过谓词 db 和 ent 实现,如:db(ent,assoc,ent,string,string)ent(ent,string) 23 Geobase 分析器分析器用来识别查询句子的结构,Geobase 把查询的句子分类为九种类型。分析使用一种“差分表”方法,分析器中第一个参数是过滤后的表、第二个参数对应实体名,最后一个参数是分析器建立的查询结构,如:pars(LIST,E,Q)
10、:-s_attr(LIST,OL,E,Q),OL=,!. Q 为查询结构如分析句子“How large is the town new york?” , 首先过滤器给出待分析词表:“large“, “town“, “new“, “york“,然后调用分析器谓词 pars,即依次执行如下谓词:s_attr(BIG,ENAME|S1,S2,E1,q_eaec(E1,A,E2,X):- 第一个 s_attr 子句ent_name(E2,ENAME), 由 town 转义为 citysize(E2,BIG), 匹配 size(“city“,“large“)entitysize(E2,E1), 匹配 e
11、ntitysize(“city“,“population“)schema(E1,A,E2), 匹配 schema(“population“,“of“,“city“)get_ent(S1,S2,X),!. 返回实体名等一旦分析器分析完一个句子,Geobase 便调用谓词 db 和 ent 给出查询结果。3Geobase 模型的汉化研究及实现对 Geobase 模型的汉化研究即通过对 Geobase 及自然语言处理过程的汉化,使之能识别汉语句子的输入,并利用这个识别汉语句子的自然语言处理系统查询存储有中国地理信息的数据库。31 汉语句子与英语句子特点汉语字或词与英语单词或词组一样既有复数形式,也有
12、同义词。一个差别是:英语句子的每个单词之间是以空格分隔的,这使得在处理英语句子时比较方便,并且被分隔的独立的单词本身已经表明了其所含的语义,如:What is the highest mountain in California?, 利用 Visual Prolog中的 fronttoken 函数很容易将此句处理成一个表:“What”,”is”,”the”,” highest”,” mountain”,” in”,”California”,”?” , 并且表中各项都有一定的语义。而对汉语句子来说, “加利福尼亚最高的山是什么?” ,不能直接用 fronttoken 函数处理成表,较难分清哪几个
13、汉字应该连接在一起,具有独立的语义,这些需要在识别汉语句子时做特殊处理,即汉语句子分词,并且由于汉语语序与英语语序不同,在汉化的 Geobase 中要调整语序。32 Geobase 模型汉化的其它考虑及基本结构图 对原 Geobase 模型所提供的语言集 GEOBASE.LAN 进行汉化,使其内容为汉字。 对原 Geobase 模型所提供的数据库文件 GEOBASE.DBA 进行调整:建立一个 ORACLE3数据库,在其中存储中国的地理信息数据,由另外的软件对其进行输入与维护。在汉化Geobase 中查询之前,从 ORACLE 中导出数据表即形成 GEOBASE.DBA 文件。 对原 Geob
14、ase 模型的程序代码进行修改,以配合汉化的语言集 GEOBASE.LAN 及数据库 GEOBASE.DBA,如对谓词 db、ent 做修改。 原 Geobase 模型是基于 WINDOWS 平台单用户的自然语言处理查询系统,为了使其能在更大的范围内使用,改造 Geobase 使其能在 Internet/Intranet上应用。基于 WEB与汉语自然语言处理的地理信息查询系统基本结构图如下: 登录网站4处理汉语句子的算法及程序脚本4 1 基于 Visual Prolog 汉语句子分词算法此汉语句子分词算法以最大匹配算法为基础。首先建立一个汉字词库(也可利用已有的相同格式的词库) ,每行存储一个
15、汉字词组,词组长短各异,此词库配合分词算法使用。现以分词最大长度为 4个汉字为例描述此分词算法如下:在 Visual Prolog中调用词库 str20.txt,并形成词库表 LIST20,表中的每个项是词组。读入待分词的文件 str2.txt,也形成一个表 LIST22,表中的每个项是一个单独的汉字。当表 LIST22为空表时,分词结束(将得到的表 LL1反序,即可用于分析器分析) 。否则,从表 LIST22前端取 4个汉字,组成一个词组,并与表 LIST20中各项匹配,如匹配成功(即此词组是表 LIST20中的一项) ,则将此词组写入表 LL1中,使表 LIST22等于去掉此 4个汉字后剩
16、余的表,然后转继续分词;如不匹配或表 LIST22长度小于 4时,则转。从表 LIST22前端取 3个汉字,组成一个词组,并与表 LIST20中各项匹配,如匹配成功,则将此词组顺序写入表 LL1中,使表 LIST22等于去掉此 3个汉字后剩余的表,然后转继续分词;如不匹配或表 LIST22长度小于 3时,则转。从表 LIST22前端取 2个汉字,组成一个词组,并与表 LIST20中各项匹配,如匹配成功,则将此词组顺序写入表 LL1中,使表 LIST22等于去掉此 2个汉字后剩余的表,然后转继续分词;如不匹配或表 LIST22长度小于 2时,则转。从表 LIST22前端取 1个汉字,与表 LIS
17、T20中各项匹配,如匹配成功,则将此汉字顺序输入汉语自然语言查询句子汉语句子分词处理过滤掉分词后存储在表中汉语句子里的标点符号等分析器分析过滤后的句子,分析器结构=(过滤后的表,实体名,查询结构) ,定位实体名和查询谓词相关谓词完成对数据库查询4写入表 LL1中,使表 LIST22等于去掉此 1个汉字后剩余的表,然后转继续分词;如不匹配或表 LIST22长度小于 1时,则转。42 汉语句子分词算法程序脚本PREDICATESnondeterm process4(STRINGLIST,STRINGLIST,STRINGLIST)nondeterm condcf(STRINGLIST,STRING
18、LIST)nondeterm attach(STRINGLIST,STRINGLIST,STRINGLIST)nondeterm member(STRING,STRINGLIST)reverse(STRINGLIST,STRINGLIST)reverse1(STRINGLIST,STRINGLIST,STRINGLIST)CLAUSESmember(X,X|_).member(X,_|L):-member(X,L).reverse(X,Y):-reverse1(,X,Y).reverse1(Y,Y):-!.reverse1(X1,U|X2,Y):-!,reverse1(U|X1,X2,Y).r
19、everse1(_,_,_):-errorexit.condcf(L1,L2):-not(eof(input), readln(B),attach(L1,B,Lnew),condcf(Lnew,L2).condcf(L,L).attach(,L,L).attach(X|L1,L2,X|L3) :- attach(L1,L2,L3).process4(,_,LL):-!, reverse(LL,LL1).process4(HEAD1,HEAD2,HEAD3,HEAD4|REST,LIST200,LL):-concat(HEAD1,HEAD2,N1),concat(HEAD3,HEAD4,N2),
20、concat(N1,N2,N),member(N,LIST200),attach(N,LL,LL1),process4(REST,LIST200,LL1),!.process4(HEAD1,HEAD2,HEAD3|REST,LIST200,LL):-concat(HEAD1,HEAD2,N1),concat(N1,HEAD3,N),member(N,LIST200),attach(N,LL,LL1),process4(REST,LIST200,LL1),!.process4(HEAD1,HEAD2|REST,LIST200,LL):-concat(HEAD1,HEAD2,N),member(N
21、,LIST200),attach(N,LL,LL1),process4(REST,LIST200,LL1),!.process4(HEAD1|REST,LIST200,LL):-member(HEAD1,LIST200),attach(HEAD1,LL,LL1),process4(REST,LIST200,LL1),!.GOALconsult(“GEOBASE.DB“,data),consult(“GEOBASE.LAN“,language),openread(input,“STR2.txt“),readdevice(input),condcf(,LIST22),closefile(input
22、),readdevice(keyboard),openread(input,“STR20.txt“),readdevice(input),condcf(,LIST20),closefile(input),readdevice(keyboard),5process4(LIST22,LIST20,),43 算法应用举例在 Internet/Intranet网页上输入汉语句子,如:“辽宁内流过的河?”提交后经汉化 Geobase 处理,生成表“辽” , “宁” , “内” , “流” , “过” , “的” , “河” , “?”,同时装入词库文件,形成表“辽宁 ”, “内流过的” , “长” ,
23、“省 ”, “河” , ,查询句子经过分词算法处理后生成表 LL1: “辽宁” , “内流过的” , “河 ”, “?” ,对表 LL1 调用分析器进行分析,确定查询类型,最终利用谓词 db 和 ent 在数据库中查询出答案。其中输入的“内流过的” 汉字组合,通过 assoc(“内” ,“内流过的 ”)处理,转义为“内” ,在汉化 Geobase 内部,查询句子变为“辽宁内河” ,符合 schema(“河” , “内” , “省” )模式,所以原查询句子是可以识别的句子。其它可识别的句子如:给出辽宁的市?, 给出鞍山的人口,? 给出辽宁的省会?,哪些河不流经吉林?,吉林邻接那些省内流过的河的名
24、是什么? 等等。5 有关语言集、数据库举例51 汉语词库以表形式给出,如:“给出” , “辽宁” , “内流过的” , “河” , “的” , “长度” , “有” , “多少”, “通过” , “流经” , “省会” ,52 汉化 Geobase 语言集schema(“市“,“ 内 “,“省“)entitysize(“河“,“长度“)assoc(“内“,“内流过的“)synonym(“镇“,“市“)ignore(“给出“)size(“山 “,“高“)unit(“长度“,“公里 “)53 汉化 Geobase 数据库(*为数值数据,如人口、面积等)state(“辽宁 “,“辽“,“沈阳“,*,
25、*,*,“ 大连“,“ 鞍山“,“抚顺“,“本溪“)city(“辽宁“,“辽“,“鞍山“,*)river(“辽河“,*,“ 辽宁“)border(“辽宁“,“辽“,“吉林“,“内蒙古“)mountain(“辽宁“,“辽“,“千山“,*)6 结束语探讨基于汉语的自然语言处理系统在 Internet/Intranet上的应用对于人工智能在我国的研究与应用具有现实意义,所给出的汉语句子分词算法对于尝试利用 Visual Prolog实现这种应用具有一定的示范作用。汉语句子分词算法也是各网站汉语句子搜索引擎首先要考虑的问题。通过对汉字词库及基于 WEB与汉语自然语言处理的地理信息查询系统模型语言集的不
26、断扩充,增加查询类型,使此系统模型识别更多的汉语句子。对此系统模型做适当修改,可以较容易的构造出其它领域的基于自然语言处理的数据库查询系统。参考文献:1Prolog Development Center www.visual-2Visual Prolog5.2 Prof. Edition,Prolog Development Center3William B. Gevarter. Artificial Intelligence, Expert Systems, Computer Vision, and Natural Language Processing M,Noyes Publications,1984,111-125作者简介:崔奇明 1959年生,男、汉族、辽宁辽阳人,硕士、高级工程师,研究方向:人工智能、数5据库应用、网络数据安全。