既然已经有了分析机制和基于特征的文法,那么能否做一些类似分析语句的含义的事情?
回答下列问题:
(1)如何表示自然语言的含义,并能通过计算机进行处理?
(2)怎样才能将意思表示与无限制的语句集相关联?
(3)怎样才能通过连接意思表示与句子的程序来存储信息?
本章介绍一些逻辑语义方面的规范化技术,看看如何使用它们来查询存储有客观整理的数据库
一 自然语言理解
#查询数据库
目前为止在本书中学到的技术,解决特定领域的任务的QA系统是相当简单的,但如果要以一种更通用的方式解决这个问题,就必须开辟一个全新的涉及意思表示的理念和技术框架。
因此,首先假设有关于城市和国家的结构化数据。
import nltk
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='City FROM city_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 = 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 q
SELECT City FROM city_table WHERE Country="china"
from nltk.sem import chat80
rows = 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
#及物动词
#重述量词歧义
五 段落语义层
#段落表示理论
六 深入阅读