【人工智能系列】python的Quepy库的学习

第一篇 了解

【人工智能种类】python的Quepy库的读书,pythonquepy

第一篇 了解

什么是Quepy

quepy是一个Python框架改变自然语言难点在数据库查询语言查询。它能够很轻巧地定制不一样门类的标题,在自然语言和数据库查询。由此,用非常少的代码,你可以成立和谐的系统,自然语言访谈您的数据库。

最近quepy 协理SPA途睿欧QL言和MQL数据库查询语言。大家安顿将它扩大到任何数据库查询语言。

说明:

你供给安装docopt和NumPy。除了那么些之外,您能够只键入:

pip install quepy

您能够在此地得到更加多的装置细节:

摸底更加的多,你能够在那边找到教程:

此间有整机的文书档案:

 

第二篇 学习

什么是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数据库回答的难点,然后大家将支付一个得以将它们调换到SPA宝马X3QL查询的机构。

quepy是一个Python框架改动自然语言难点在数据库查询语言查询。它能够很轻巧地定制不一样门类的主题素材,在自然语言和数据库查询。由此,用少之又少的代码,你能够创设协和的类别,自然语言访谈您的数据库。

所选难题

在大家的身先士卒应用程序中,大家将谋求回答以下难点:

谁是<someone>,例如:

  • 汤姆克Russ是哪个人?
  • 什么人是前美利坚总统总理?

什么是<something>,例如:

  • 怎样是小车?
  • 怎么着是Python编制程序语言?

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

  • 列出Microsoft软件
  • 列出Fiat小车

现阶段quepy 支持SPA奥迪Q7QL言和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:您就要内部定义数据库方式的域特定语言的公文。在SPAGL450QL的情状下,您就要此地钦点常常存在于本体中的东西:关系名称等。
  • 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行中达成的:

未完!

第一篇 理解 什么是Quepy quepy是八个Python框架更换自然语言难点在数据库查询语言查询。它...

pip install 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数据库回答的难点,然后大家将开荒二个能够将它们转变来SPAWranglerQL查询的机关。

所选难点

在大家的亲自过问应用程序中,大家将寻求回答以下难题:

谁是<someone>,例如:

  • 汤姆克Russ是什么人?
  • 哪个人是前美利坚总统总统?

什么是<something>,例如:

  • 什么是小车?
  • 何以是Python编制程序语言?

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

  • 列出Microsoft软件
  • 列出Fiat小车

千帆竞发贰个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:您将要个中定义数据库方式的域特定语言的公文。在SPA库罗德QL的景况下,您将要此间钦定平常存在于本体中的东西:关系名称等。
  • 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行中成就的:

未完!

本文由开元棋牌发布于数据库,转载请注明出处:【人工智能系列】python的Quepy库的学习

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。