【人工智能系列】python的Quepy库的修。【人工智能系列】python的Quepy库的读书,pythonquepy

第一篇 了解

【人工智能系列】python的Quepy库的就学,pythonquepy

第一篇 了解

什么是Quepy

quepy是一个Python框架改造自然语言问题在数据库查询语言查询。它可以老爱地定制不同类别的问题,在自然语言和数据库查询。因此,用异常少之代码,你可起协调之网,自然语言访问您的数据库。

脚下quepy
支持SPARQL言及MQL数据库查询语言。我们计划用它扩展至其它数据库查询语言。

说明:

您得设置docopt和NumPy。除此之外,您可以只键入:

pip install
quepy

若得于此地收获更多之安细节:

http://quepy.readthedocs.org/en/latest/installation.html

刺探再多,你可于此找到教程:

http://quepy.readthedocs.org/en/latest/tutorial.html

这里产生完全的文档:

http://quepy.readthedocs.org/

 

第二篇 学习

什么是Quepy

一个事例

以印证你得开啊以及quepy,我们连一个示范应用程序通过他们的sparql端点访问DBpedia内容。

公可当此地品尝在线示例:在线演示

要么,您可经以下措施尝试这示例:

python examples/dbpedia/main.py "Who is Tom Cruise?"

它会输出这样的东西:

SELECT DISTINCT?x1 WHERE { 
    ?x0 rdf:type foaf:Person。
    ?x0 rdfs:label“Tom Cruise”@en。
    ?x0 rdfs:comment?x1。
} 
#输出
Thomas Cruise Mapother IV, widely known as Tom Cruise, is an...

 从自然语言到sparql的更换是经过首先应用特别形式的正则表达式来就的:

person_name = Group(Plus(Pos("NNP")), "person_name")
regex = Lemma("who") + Lemma("be") + person_name + Question(Pos("."))

 然后动和福利之计来表达语义关系:

person  =  IsPerson () +  HasKeyword (person_name )
definition  =  DefinitionOf (person )

 转换的其余部分由框架自动处理,最终死成这sparql:

SELECT  DISTINCT  ?x1  WHERE  { 
    ?x0  rdf :type  foaf :Person 。
    ?x0  rdfs :label  “Tom Cruise” @ en 。
    ?x0  rdfs :comment  ?x1 。
}

 使用特别相像之进程,您可变和MQL查询同一之题材得到:

[{
    "/common/topic/description": [{}],
    "/type/object/name": "Tom Cruise",
    "/type/object/type": "/people/person"
}]

 

为了求证什么行使quepy作为数据库的自然语言界面的框架,我们拿构建(逐步)一个看DBpedia的演示应用程序 。

完成的以身作则应用程序可以在线尝试: 在线演示

成就的演示代码可以在此地找到: 代码

第一步是拣我们意在因此dbpedia数据库回答的题目,然后我们用支付一个足以拿其转换成SPARQL查询的机关。

quepy是一个Python框架改造自然语言问题在数据库查询语言查询。它可以老爱地定制不同门类的问题,在自然语言和数据库查询。因此,用异常少之代码,你可起协调之网,自然语言访问您的数据库。

所选择问题

于我们的演示应用程序中,我们以谋求对以下问题:

谁是<someone>,例如:

  • 汤姆克鲁斯是哪个?
  • 谁是奥巴马总理?

什么是<something>,例如:

  • 好家伙是汽车?
  • 啊是Python编程语言?

列出<brand> <something>,例如:

  • 列出Microsoft软件
  • 排有菲亚特汽车

当下quepy
支持SPARQL言及MQL数据库查询语言。我们计划以其扩展至任何数据库查询语言。

开一个quepy项目

倘开动一个quepy项目,您得创造一个quepy应用程序。在我们的例子,我们的应用程序被名DBpedia中,我们由此运行应用程序:

$ quepy.py startapp dbpedia

你会发现一个文件夹和一些创建的文件。它应该是这样的:

$ cd dbpedia
$ tree .

.
├── dbpedia
│   ├── __init__.py
│   ├── parsing.py
│   ├── dsl.py
│   └── settings.py
└── main.py

1 directory, 4 files

 

眼看是每个门类之主干组织。

  • dbpedia /
    parsing.py:您将概念跟自然语言问题相当并将那易为架空语义表示的正则表达式的公文。
  • dbpedia /
    dsl.py:您将于其间定义数据库模式的地面特定语言的文件。在SPARQL的状下,您将于这里指定通常有叫本体中之物:关系名称等。
  • dbpedia / settings.py:安装之一些方面的布置文件。
  • main.py:该公文是一个可选的kickstart点,您可以内部具有与应用程序交互所待的持有代码。如果用,您可以安全地去此文件。

说明:

布应用程序

率先保证您曾下载了nltk标记器的必备数据。如果未检查 安装有。

兹编写dbpedia / settings.py并将nltk数据的途径上加至 NLTK_DATA变量。这个文件来部分旁安排选,但咱无待这事例。

还要配置LANGUAGE,在是事例中我们拿运用sparql

公用安装docopt和NumPy。除此之外,您得独自键入:

概念正则表达式

为处理正则表达式,quepy使用refo,一个审棒库来行使正则表达式作为目标。您得以这边阅读更多关于refo的信息。

俺们得定义及自然语言问题互相匹配并拿那易为架空语义表示的正则表达式。这将概念具体哪问题系统以能处理以及如何处理。

在我们的言传身教中,我们将编制dbpedia /
parsing.py
文件。我们来拘禁一下正则表达式的例子来拍卖“What is
…”的
 问题。整个定义将如下所示:

from refo import Group, Question
from quepy.dsl import HasKeyword
from quepy.parsing import Lemma, Pos, QuestionTemplate

from dsl import IsDefinedIn

class WhatIs(QuestionTemplate):
    """
    Regex for questions like "What is ..."
    Ex: "What is a car"
    """

    target = Question(Pos("DT")) + Group(Pos("NN"), "target")
    regex = Lemma("what") + Lemma("be") + target + Question(Pos("."))

    def interpret(self, match):
        thing = match.target.tokens
        target = HasKeyword(thing)
        definition = IsDefinedIn(target)
        return definition

 

而今受咱们一样步一步地谈论这个进程。

首先,请留心正则表达式处理程序需要是一个子类 quepy.parsing.QuestionTemplate。他们还用定义一个regex运用refo
regex 调用的类属性。

接下来,我们拿输入问题之布局描述为正则表达式,并以那储存于正则表达式性能被。在咱们的事例中,这是于第14执行吃好的:

未完!

http://www.bkjia.com/Pythonjc/1209573.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1209573.htmlTechArticle【人工智能系列】python的Quepy库的学习,pythonquepy
第一篇 了解 什么是Quepy
quepy是一个Python框架改造自然语言问题在数据库查询语言查询。它…

pip install
quepy

汝可以在这边获得重新多之设置细节:

http://quepy.readthedocs.org/en/latest/installation.html

问询又多,你得在此处找到教程:

http://quepy.readthedocs.org/en/latest/tutorial.html

此出完整的文档:

http://quepy.readthedocs.org/

 

第二篇 学习

一个例证

为验证你可以举行什么和quepy,我们连一个示范应用程序通过她们之sparql端点访问DBpedia内容。

卿可以于这边品尝在线示例:在线演示

还是,您可以经过以下方法尝试这示例:

python examples/dbpedia/main.py "Who is Tom Cruise?"

它会输出这样的东西:

SELECT DISTINCT?x1 WHERE { 
    ?x0 rdf:type foaf:Person。
    ?x0 rdfs:label“Tom Cruise”@en。
    ?x0 rdfs:comment?x1。
} 
#输出
Thomas Cruise Mapother IV, widely known as Tom Cruise, is an...

 从自然语言到sparql的易是由此首先使非常形式的正则表达式来成功的:

person_name = Group(Plus(Pos("NNP")), "person_name")
regex = Lemma("who") + Lemma("be") + person_name + Question(Pos("."))

 然后用以及造福之法来表述语义关系:

person  =  IsPerson () +  HasKeyword (person_name )
definition  =  DefinitionOf (person )

 转换的其余部分由框架自动处理,最终老成者sparql:

SELECT  DISTINCT  ?x1  WHERE  { 
    ?x0  rdf :type  foaf :Person 。
    ?x0  rdfs :label  “Tom Cruise” @ en 。
    ?x0  rdfs :comment  ?x1 。
}

 使用大相像之过程,您可以变更与MQL查询同一之问题取得:

[{
    "/common/topic/description": [{}],
    "/type/object/name": "Tom Cruise",
    "/type/object/type": "/people/person"
}]

 

以说明什么利用quepy作为数据库的自然语言界面的框架,我们以构建(逐步)一个拜访DBpedia的言传身教应用程序 。

成就的演示应用程序可以在线尝试: 在线演示

好的言传身教代码可以以这边找到: 代码

率先步是选我们期望用dbpedia数据库回答的问题,然后我们以出一个可用她转换成为SPARQL查询的单位。

所选问题

当咱们的以身作则应用程序中,我们拿谋求对以下问题:

谁是<someone>,例如:

  • 汤姆克鲁斯是何人?
  • 孰是奥巴马管辖?

什么是<something>,例如:

  • 哎是汽车?
  • 咦是Python编程语言?

列出<brand> <something>,例如:

  • 列出Microsoft软件
  • 排有菲亚特汽车

开班一个quepy项目

只要开动一个quepy项目,您得创造一个quepy应用程序。在我们的事例,我们的应用程序被誉为DBpedia中,我们通过运行应用程序:

$ quepy.py startapp dbpedia

你会发现一个文件夹和一些创建的文件。它应该是这样的:

$ cd dbpedia
$ tree .

.
├── dbpedia
│   ├── __init__.py
│   ├── parsing.py
│   ├── dsl.py
│   └── settings.py
└── main.py

1 directory, 4 files

 

立刻是每个项目的主干组织。

  • dbpedia /
    parsing.py:您将概念跟自然语言问题相当并将其转移为架空语义表示的正则表达式的文件。
  • dbpedia /
    dsl.py:您将以中间定义数据库模式的地段特定语言的文书。在SPARQL的动静下,您将以此指定通常存在被本体中之物:关系名称等。
  • dbpedia / settings.py:安装之某些方面的配置文件。
  • main.py:该公文是一个可选的kickstart点,您可在内部具有与应用程序交互所待的保有代码。如果需要,您可以安全地抹此文件。

布应用程序

第一保证您曾下载了nltk标记器的必备数据。如果非检查 设置有。

今昔编制dbpedia / settings.py并拿nltk数据的不二法门上加至 NLTK_DATA变量。这个文件来一些任何安排选,但我们无需这例子。

还要配置LANGUAGE,在这例子中我们以使sparql

概念正则表达式

以处理正则表达式,quepy使用refo,一个确实棒库来使用正则表达式作为对象。您得在这里开卷更多关于refo的信息。

咱要定义跟自然语言问题相兼容并以该转移为架空语义表示的正则表达式。这将概念具体怎么问题系统以能处理与如何处理。

以我们的以身作则中,我们用编制dbpedia /
parsing.py
文件。我们来拘禁一下正则表达式的事例来拍卖“What is
…”的
 问题。整个定义将如下所示:

from refo import Group, Question
from quepy.dsl import HasKeyword
from quepy.parsing import Lemma, Pos, QuestionTemplate

from dsl import IsDefinedIn

class WhatIs(QuestionTemplate):
    """
    Regex for questions like "What is ..."
    Ex: "What is a car"
    """

    target = Question(Pos("DT")) + Group(Pos("NN"), "target")
    regex = Lemma("what") + Lemma("be") + target + Question(Pos("."))

    def interpret(self, match):
        thing = match.target.tokens
        target = HasKeyword(thing)
        definition = IsDefinedIn(target)
        return definition

 

兹为咱同步一步地谈论是历程。

第一,请小心正则表达式处理程序需要是一个子类 quepy.parsing.QuestionTemplate。他们还需定义一个regex用refo
regex 调用的类属性。

下一场,我们以输入问题之构造描述为正则表达式,并将其储存于正则表达式特性被。在咱们的例证中,这是以第14推行中落成的:

未完!

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图