【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)

觉得有帮助或有疑问麻烦点赞关注收藏后评论区私信留言~~~

一、句法分析

句法分析(syntactic parsing或者parsing)是识别句子包含的句法成分要素以及成分之间的内在关系,一般以句法树来表示句法分析的结果。实现该过程的应用称作句法分析器(Parser)。根据侧重目标分为完全句法分析和局部句法分析,完全句法分析以获取整个句子的句法结构为最终目的,而局部句法分析仅关注局部部分,依存句法分析属于局部分析法

自然语言处理句法分析目前面临的关键技术问题:

(1)语义消歧: 语言中存在很多一词多义的用法,歧义与消歧是自然语言理解中最核心的问题,在词语、句子、段落篇章等各个层次都会出现语言根据语境产生歧义的现象,消歧是指根据上下文识别语义的过程。

(2)路径优化: 句法分析的搜索空间和句子长度存在指数对应关系,因此,在句子长度超过特定阈值时,搜索空间会变得十分庞大,从而降低了处理效率。优化搜索路径,以确保能够在合理时间范围内查找到模型定义最优解,是句法分析的目标。

二、句法树

在计算机中,可以用树状结构图来表示文本结构,使用字符S代表句子,NP VP PP分别代表名词短语 动词短语 介词短语 N  V P M则分别是名词 动词 介词 数量词和时量词

三、常用句法分析相关数据集

英国Lancaster- Leeds 树库

美国Penn 树库(涵盖中英文)

清华大学句法树库为基础的系列句法分析数据集

台湾 Sinica 中文树库等

四、句法分析方法

句法分析的基本任务是确定句子的语法结构或词汇间的依存关系,句法分析是自然语言处理实现目标的关键环节,句法分析通常分为结构分析和依存关系分析两种。

语言学家 Robinson 4 个约束性公理。

(1)有且仅有一个词语(ROOT,虚拟根节点)不依存于其他词语。

(2)除根节点之外其他单词存在依存关系。

(3)各单词不能依存于多个单词。

(4)如果单词 X 依存于 Y,那么位置处于 X 和 Y 之间的单词 Z 只能依存于 X、Y 或 XY 之间的单词。

句法分析中 有三个常见的评价标准

P为标记的准确率 R为召回率

 

五、概率分布上下文无关文法

由于语法的解析存在歧义性,因此结果可能导致多种语法树可供备选,从中找出可能性最高的句法树,即概率最大的句法树,是概率分布上下文无关语法 (Probabilistic Context-Free Grammar:PCFG)的基本处理逻辑。概率分布上下文无关语法源自上下文无关文法

基于上述信息,得出相应句法树的生成概率为: P1=P(S)×P(NP)×P(VP)×P(V)×P(NP)×P(NP)×P(PP)×P(P)×P(NP) =1.0×0.2×0.8×1.0×0.5×0.2×1.0×1.0×0.2=0.0032

基于歧义的观点,如果存在另外一种理解导致各规则以及各结点的概率值呈现为下图结果,根据概率上下文无关语法得出该句法树的概率则表示未下

根据概率分布上下文无关语法得出该句法树的概率为:   P2=P(S)×P(NP)×P(VP)×P(VP)×P(V)×P(NP)×P(PP)×P(P)×P(NP) =1.0×0.2×0.7×1.0×1.0×0.2×1.0×1.0×0.2=0.0056

比较上述两个概率值,第二个句法树的生成概率高,因此选择第二颗句法树作为最终结果,如果存在多种歧义,可以使用类似的方法求出概率最大的句法树

六、神经网络句法分析

神经网络能够对特征信息进行自动建模,具有自足学习能力,可以对特征进行自动优化,避免了大量的手动特征标注工程,并且,基于神经网络的句法分析模型的处理性能一般也优于传统的句法分析模型,因此,开发性能优异的神经网络算法成为近年研究的聚焦点。

下面使用斯坦福句法分析器进行中文句法分析实战

假定对象文本分析为“当今世界正经历一场百年大变革” 利用斯坦福句法程序分析得到的句法结构如下

 

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
8天前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
24 2
|
15天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
59 6
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
21 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
8天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
27 3
|
13天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
16天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
39 4
|
16天前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
39 1
|
17天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
13 1
|
19天前
|
人工智能 自然语言处理 语音技术
利用Python进行自然语言处理(NLP)
利用Python进行自然语言处理(NLP)
32 1
|
19天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
18 1

热门文章

最新文章