manbetx官方网站

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

九月 30th, 2018  |  中超

第一篇 了解

【人工智能系列】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推行中成功的:

未完!

标签:

Your Comments

近期评论

    功能


    网站地图xml地图