【语言处理与Python】10.1自然语言理解\10.2命题逻辑

10.1自然语言理解

查询数据库

image

如果有人提出一个问题:

Which country is Athens in?

得到的回答应该是:

Greece.

这个数据可以通过数据库语言得到答案:

SELECT Country FROM city_table WHERE City= 'athens'

这里有一个文法,可以把句子转换成SQL语句:

>>>nltk.data.show_cfg('grammars/book_grammars/sql0.fcfg')
%start S
S[SEM=(?np+ WHERE+ ?vp)] -> NP[SEM=?np]VP[SEM=?vp]
VP[SEM=(?v+ ?pp)] -> IV[SEM=?v] PP[SEM=?pp]
VP[SEM=(?v+ ?ap)] -> IV[SEM=?v] AP[SEM=?ap]
NP[SEM=(?det+ ?n)] -> Det[SEM=?det]N[SEM=?n]
PP[SEM=(?p+ ?np)] -> P[SEM=?p]NP[SEM=?np]
AP[SEM=?pp]-> A[SEM=?a]PP[SEM=?pp]
NP[SEM='Country="greece"']-> 'Greece'
NP[SEM='Country="china"']-> 'China'
Det[SEM='SELECT']-> 'Which' | 'What'
N[SEM='CityFROMcity_table'] -> 'cities'
IV[SEM=''] -> 'are'
A[SEM='']-> 'located'
P[SEM='']-> 'in'
这使我们能够分析SQL查询:
>>>from nltk import load_parser
>>>cp = load_parser('grammars/book_grammars/sql0.fcfg')
>>>query ='What cities are located in China'
>>>trees = cp.nbest_parse(query.split())
>>>answer = trees[0].node['sem']
>>>q= ' '.join(answer)
>>>print q
SELECT City FROM city_table WHERE Country="china"

要达到能够从句子到后来的生成的数据库SQL语句,也就是独立于任何的查询语言,我们应该建立一个经典的逻辑的标准解释。

逻辑形式更加的抽象,更加的通用。

自然语言、语义和逻辑

一个句子集W的模型是某种情况的形式化表示,其中w中的所有句子都为真。

看下面这个图:

image

段落的域D(我们当前关心的所有实体)是个体的一个集合,而当集合从D建立,关系也被确立。

例如:

域D包括3个孩子,Stefan、Klaus和Evi,分别用s、k和e表示。记为D= {s,k,e}。

表达式boy是包含Stefan和Klaus的集合,表达式girl是包含Evi的集合,表达式is running是包含Stefan和Evi的集合。

10.2命题逻辑

我们要设计一种逻辑语言,使推理更加的明确。

[Klaus chased Evi]and [Evi ran away]
例如这句话,

φ和ψ替代(8)中的两个子句,并用&替代对应的英语词and的逻辑操作:φ&ψ。这就是这句话的逻辑形式。

下面的标重,指定了包含一些运算符的公式为真的条件。iff作为if and only if(当且仅当)的缩写。

image

注意蕴含这个运算符:

形式(P ->Q)的公式是为假只有当P为真并且Q为假时。如果P为假(比如说,P对应Themoonis madeofgreen cheese)而Q为真(比如说,Q对应Twoplus two equa ls four)那么P -> Q的结果为真。

NLTK中的inference模块通过一个第三方定理证明器Prover9的接口,可以进行逻辑证明。

例如:

SnF表示:Sylvania is to the north of Freedonia。

Fns表示:Freedonia is to the north of Sylvania。

>>>lp =nltk.LogicParser()
>>>SnF= lp.parse('SnF')
>>>NotFnS= lp.parse('-FnS')
>>>R= lp.parse('SnF -> -FnS')
>>>prover= nltk.Prover9()
>>>prover.prove(NotFnS,[SnF, R])
True

一个命题逻辑的模型,需要为每个可能的公式分配值True或False.

我们可以来简单做一个实验:

1、先为每个命题符号分配一个值

>>>val = nltk.Valuation([('P',True),('Q', True),('R', False)])

我们可以查看这个值的:

>>>val['P']
True

2、为了简化实验,我们先忽略dom和g的设置

>>>dom =set([])
>>>g= nltk.Assignment(dom)

3、使用val来初始化模型m

>>>m=nltk.Model(dom, val)

4、每个模型都有一个evaluate()方法,可以确定逻辑表达式。例如:

>>>print m.evaluate('(P&Q)',g)
True
>>>print m.evaluate('-(P&Q)',g)
False
>>>print m.evaluate('(P&R)',g)
False
>>>print m.evaluate('(P| R)',g)
True

现在,我们只是局限在用字母P、Q等表示原子,句子。但是我们需要超越命题逻辑到一个更有表现力的东西,能够看到里面的基本的句子,也就是一阶逻辑。

转载于:https://www.cnblogs.com/createMoMo/archive/2013/06/04/3116613.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员的数学笔记3--迭代法

第三节课程,介绍的是迭代法。 前两节笔记的文章: 程序员的数学笔记1–进制转换程序员的数学笔记2–余数 03 迭代法 什么是迭代法 迭代法,简单来说,其实就是不断地用旧的变量值,递推计算新的变量值。 这里采用一个…

机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)

上一篇机器学习入门系列(1)–机器学习概览简单介绍了机器学习的一些基本概念,包括定义、优缺点、机器学习任务的划分等等。 接下来计划通过几篇文章来介绍下,一个完整的机器学习项目的实现步骤会分为几步,最后会结合《…

Python-100 | 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。http://www.runoob.com/python/python-100-examples.html另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。Example-1 三位数组合题目&…

html5qq邮箱代码,使用qq邮箱批量发送邮件 实例源码(支持富文本)

资源下载此资源下载价格为3D币,请先登录资源文件列表MailSending/MailSending/App.config , 184MailSending/MailSending/Form1.Designer.cs , 15243MailSending/MailSending/Form1.cs , 10655MailSending/MailSending/Form1.resx , 438794MailSending/MailSending/…

Python-100 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。 http://www.runoob.com/python/python-100-examples.html 另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。 Example-1 三位数组合…

nginx html解析插件,nginx配置信息的解析流程

nginx配置信息的解析流程2011年9月9日 1,744 次浏览请关注最新修正合订:这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保…

机器学习数据集的获取和测试集的构建方法

这是机器学习入门系列(2)–如何构建一个完整的机器学习项目的第二篇 上一篇机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)介绍了开始一个机器学习项目需要明确的问题,比如当前任务属于有监督还是无监督学习问题,然后…

[资源推荐] 必须收藏的两个查找论文和代码实现的网站!

2019年第 13 篇文章,总第 37 篇文章无论是研究方向是 AI 方面的学生,或者是做机器学习方面的算法工程师,在掌握基础的机器学习相关知识后,都必须掌握搜索论文的技能,特别是研究或者工作领域方向的最新论文,…

dw html怎么导入视频,如何在dw中将视频插入

如何在dw中将视频插入电脑版Dreamweaver工具被很多人使用,用来编辑视频等,有的用户在使用该软件时,想要插入需要编辑的视频,但是却不知道如何插入,那么小编就来为大家介绍一下吧。具体如下:1. 第一步&#…

editplus注释快捷键

Tools->Preferences Tools-Keyboard-Edit-LineComment Line Uncomment为取消注释 转载于:https://www.cnblogs.com/yiwd/archive/2013/06/06/3121689.html

Python-100 练习题 02

2019年第 10 篇文章,总第 34 篇文章 练习题2 的网址: http://www.runoob.com/python/python-exercise-example2.html Example-2 企业发放奖金 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%&#xff…