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

回答下列问题:

(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

#及物动词

#重述量词歧义

五 段落语义层

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

#段落表示理论

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

六 深入阅读

现代逻辑的书

Python自然语言处理 10 分析语句的含义相关推荐

  1. NLTK11《Python自然语言处理》code10 分析语句的含义

    分析语句的含义 # -*- coding: utf-8 -*- # win10 python3.5.3/python3.6.1 nltk3.2.4 # <Python自然语言处理> 10 ...

  2. 基于python的情感分析案例-python自然语言处理情感分析案例

    产品价值 自然语言处理是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,已经广泛应用在电商.文化娱乐.金融.物流等行业客户的多项业务中.自然语言处理API可帮助用户搭建内容搜索.内容推荐.舆情识 ...

  3. python自然语言处理书籍推荐-python自然语言处理

    自然语言处理理论书籍很多,讲实际操作的不多,能讲的这么系统的更少.Python语言在做NLP方面有较明显的优势.之前国外有<Natural Language Process with Pytho ...

  4. python中文版免费下载-PYTHON自然语言处理(中文最新完整版)pdf下载

    内容简介 自然语言处理(natural language processing,nlp)是计算机科学领域与人工智能领域中的一个重要方向.它研究能够实现人与计算机之间用自然语言进行有效通信的各种理论和方 ...

  5. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第10章 分析句子的意思

    第10章 分析句子的意思 10.1 自然语言理解 查询数据库 自然语言.语义和逻辑 10.2 命题逻辑 10.3 一阶逻辑 一阶定理证明 一阶逻辑语言总结 真值模型 独立变量和赋值 量化 量词范围歧义 ...

  6. python自然语言处理 |分析句子的意思

    python自然语言处理的第10章 分析句子的意思,这一章在拆解英语的语法及对应于计算机语言的概念和内容变得更深更多,相应地需要理解和记忆的东西增多.整章读下来很吃力,可能大致有了个理解. 我们已经有 ...

  7. python nltk 10 分析句子的意思

    10 分析句子的意思 Analyzing the Meaning of Sentences 1 自然语言理解 1.1 查询数据库 1.2 自然语言,语义学和逻辑学 2 命题逻辑 3 一阶逻辑 3.1 ...

  8. 精通python自然语言处理pdf_学习NLP《自然语言处理综论第2版》中文PDF+英文PDF+对比分析...

    对于从事自然语言处理.文本分析的专业人士来说,建议参考学习<自然语言处理综论第2版>.对于第一版做了全面的改写,增加了大量反映自然语言处理最新成就的内容,特别是增加了语音处理和统计技术方面 ...

  9. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:10 高级工具

    10 高级工具 10.1 使用Apache Hadoop作为存储框架 10.2 使用Apache Spark作为数据处理框架 10.3 使用Apache Flink作为数据实时处理框架 10.4 Py ...

最新文章

  1. php7 编译参数详解,php7.4.5编译安装参数变更
  2. Nginx 反向代理 websocket 协议
  3. java队列加锁_java并发-----浅析ReentrantLock加锁,解锁过程,公平锁非公平锁,AQS入门,CLH同步队列...
  4. 阿里开源首个深度学习框架 X-Deep Learning!
  5. Angular v6 正式发布
  6. [转]QT QDateTime类、QTimer类
  7. 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...
  8. 这几种人往往能赚大钱
  9. Web前端-JavaScript基础教程下
  10. 带存储功能的计算器是什么样的_19年中级会计考生能不能带计算器考试?今天统一回复!...
  11. JavaWeb检测注册内容是否在数据库中有相同的内容
  12. live2d_一款电脑桌面跨平台开源免费live2D桌面宠物精灵
  13. 循环结构程序设计学习心得
  14. python小波变换时频分析
  15. 八数码问题c语言,启发式搜索算法解决八数码问题(C语言)
  16. 淘宝导航css相关说明
  17. lcd屏指针时钟画法
  18. 列表 元组 字典的概念及其案例
  19. 尚学堂JAVA高级学习笔记_2/2
  20. 程序员社死瞬间3.0 ……

热门文章

  1. opencv 简单的裂缝检测
  2. FPGA Implementation of BPSK Modulator and Demodulator
  3. 小程序设置渐变色背景
  4. conda命令下载包报错总结
  5. 如何更改工程内最少的代码修改系统UISwitch的大小和样式
  6. 二手车价格预测task03:特征工程
  7. vue watch store
  8. Tomcat可以正常启动,却打不开webapps目录下的html文件
  9. Android 语音遥控器的整体分析-主机端语音解码的添加
  10. 软件测试入门全流程精华总结【必看 知识点很全】