爱博体育app手机版【人工智能系列】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实行遭成功的:

未完!

相关文章