Python自然语言处理 10 分析语句的含义

来源:互联网 发布:淘宝实名认证的截图 编辑:程序博客网 时间:2024/06/18 04:52

既然已经有了分析机制和基于特征的文法,那么能否做一些类似分析语句的含义的事情?

回答下列问题:

(1)如何表示自然语言的含义,并能通过计算机进行处理?

(2)怎样才能将意思表示与无限制的语句集相关联?

(3)怎样才能通过连接意思表示与句子的程序来存储信息?

本章介绍一些逻辑语义方面的规范化技术,看看如何使用它们来查询存储有客观整理的数据库

一 自然语言理解

#查询数据库

目前为止在本书中学到的技术,解决特定领域的任务的QA系统是相当简单的,但如果要以一种更通用的方式解决这个问题,就必须开辟一个全新的涉及意思表示的理念和技术框架。

因此,首先假设有关于城市和国家的结构化数据


import nltknltk.data.show_cfg('grammars/book_grammars/sql0.fcfg')% start SS[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='City FROM city_table'] -> 'cities'IV[SEM=''] -> 'are'A[SEM=''] -> 'located'P[SEM=''] -> 'in'
SQL查询

from nltk import load_parsercp = load_parser('grammars/book_grammars/sql0.fcfg')query = 'What cities are located in China'trees = next(cp.parse(query.split()))answer = trees[0].label()['SEM']answer2 = trees[1].label()['SEM']q = ' 'q = ' '.join(answer) + " WHERE" q = q + ' '.join(answer2)print qSELECT City FROM city_table WHERE  Country="china"
from nltk.sem import chat80rows = chat80.sql_query('corpora/city_database/city.db', q)for r in rows: print r[0],canton chungking dairen harbin kowloon mukden peking shanghai sian tientsin
可以说,NLTK代码已经“理解”了SQL

#自然语言、语义和逻辑

上面文本翻译成SQL来查询,仍然在回避问题的实质:翻译是否正确。

引进语义中的两个基本概念。第一个是在确定的情况下,陈述句非真即假。第二个是名词短语和专有名词的定义指的是世界上的东西。

一旦采取了在特定情况下事情真假的概念,我们就有了进行推理的强大工具。特别是,我们可以推理语句集在某些情况下是否能同时为真。

从广义上讲,基于逻辑方法的自然语言语义关注于那些指导我们判断自然语言的一致性不一致性的方面。设计一种逻辑语言的句法是为了使这些特征更标准更明确。

开发一种表示某种可能情况的技术,逻辑学家称之为“模型”

二 命题逻辑

设计一种逻辑语言的目的是使推理更明确规范

命题逻辑只表示对应特定语句连接词的语言结构部分


三 一阶逻辑

通过翻译自然语言表达式为一阶逻辑表示它们的意思。

并不是所有的自然语言语义都可以用一阶逻辑表示。但它是计算语义的一个不错的选择,因为它具有足够的表现力来表达语义的很多方面,并且另一方面,有出色现成的系统可用于开展一阶逻辑自动推理。

#语法

一阶逻辑的标准构造规则识别以下术语:

#一阶定理证明

是否可以有一个有限序列的推理步骤从一个假设的公式列表派生出来

#一阶逻辑语言总结


#真值模型


#独立变量和赋值


#量化

现代逻辑的关键特征之一就是变量满足的概念可以用来解释量化的公式。

#量词范围歧义


#模型的建立

假设已经有了一个模型,并要检查模型中的每个句子的真值

四 英语语句的语义

#基于特征文法的成分语义学

组合原则:整体的含义是部分的含义与它们的句法结合方式的函数

#运算


#量化的NP


#及物动词


#重述量词歧义



五 段落语义层


段落是语句的序列。很多时候,段落中句子的解释依赖它前面的句子。

#段落表示理论

段落表示理论的目标是提供处理这个和其他段落特征的语义现象的方法。段落表示结构根据一个段落指称的列表和一个条件列表表示段落的意思。段落指称是段落中正在讨论的事情,它对应一阶逻辑的单个变量。
#段落处理
解释一句话时会利用丰富的上下文背景知识,一部分取决于前面的内容,一部分取决于背景假设。

六 深入阅读

现代逻辑的书



















原创粉丝点击