Python自然语言处理 8 分析句子结构

基于python的自然语言处理NLP详细教程(一) 写在前面 ——本文关于自然语言处理的内容: 1.相关第三包的准备 2.获取语料库及停用词信息 3.分词 4.词频统计 5.去停用词 6.基于TF-IDF理论、词袋模型等的文本向量化处理 7.机器学习、情感分析 8.简单可视化 一、相关第三方包的准备 关于NLP部分的包主要是分词部分的包和可视化部分的包,机器学习部分我主要就用sk-learn了。 分词部分: 将语料库进行分词并去掉停用词,可以使用的... 阅读详情

 前面的章节重点关注词:如何识别它们,分析它们的结构,给它们分配词汇类别,以及获得它们的含义。

目的是要回答下列问题:

(1)如何使用形式化语法来描述无限的句子集合的结构?

(2)如何使用句法树来表示句子结构?

(3)解析器如何分析句子并自动构建语法树?

一 一些语法困境

#语言数据和无限可能性

文法的目的是给出一个明确的语言描述。而我们思考文法的方式与我们认为什么是一种语言紧密联系在一起。观察到的言语和书面文本是否是一个大却有限的集合呢?关于文法句子是否存在一些更抽象的东西,如有能力的说话者能理解的隐性知识?或者是两者的某种组合?我们不会解决这个问题,而是将介绍主要的方法。

#普遍存在的歧义

重要的目的是自然语言understanding,当识别一个文本所包含的语言结构时,可以从中获得多少文本的含义?一段程序在通读了一个文本后,它能否足够“理解”文本,并回答一些简答的问题,如“发生了什么事“或”谁对谁做了什么“?还像以前一样,我们将开发简单的程序来处理已注释的语料库,并执行有用的任务。

二 文法的用途

#超越n-grams



3 上下文无关文法

#一种简单的文法

在NLTK中,上下文无关文法定义在nltk.grammar模块

import nltk
from nltk import CFG
//grammar1 = CFG.fromstring("""
grammar1 = nltk.parse_cfg("""
s -> NP VP
VP -> V NP | V NP PP
PP -> P NP
V -> "saw" | "ate" | "walked"
NP -> "John" | "Mary" | "Bob" | Det N | Det N PP
Det -> "a" | "an" | "the" | "my"
N -> "man" | "dog" | "cat" | "telescope" | "park"
P -> "in" | "on" | "by" | "with"
""")
sent = "Mary saw Bob".split()
rd_parser = nltk.RecursiveDescentParser(grammar1)
for tree in rd_parser.nbest_parse(sent):
    print tree
如果使用上述文法分析句子The dog saw a man in the park,结果将得到两棵树,被称为结构上有歧义

#编写你自己的文法

编写mygrammar.cfg

grammar1 = nltk.data.load('file:mygrammar.cfg')

#句法结构中的递归

产生式左侧的文法类型也出现在右侧,那么这个文法被认为是递归的

四 上下文无关文法分析

解析器根据文法产生式处理输入的句子,并建立一个或多个符合文法的组成结构。

例如问答系统对提交的问题首先进行文法分析

在本节中,我们将看到两个简单的分析算法,一种自上而下的方法称为下降递归分析,一种自下而上的方法称为移进-归约分析。

以及更复杂的算法,一种称为左角落分析的带自下而上过滤的自上而下的方法:一种称为图表分析的动态规划技术

#递归下降解析器

nltk.RecursiveDescentParser(grammar1)

#移进-归约分析

nltk.ShiftReduceParser(grammar1)

#左角落解析器

带自下而上过滤的自上而下的解析器

#符合语句规则的子串表

////////

五 依存关系和依存文法

短语结构文法是关于词和词序列如何结合形成句子成分的。

一种独特且互补的方式,依存文法,集中关注的是词与其他词之间的关系。

依存关系是一个中心词与其从属之间的二元非对称关系。一个句子的中心词通常是动词,所有其他词要么依赖于中心词,要么通过依赖路径与它相关联。

与短语结构文法相比,依存文法可以作为一种依存关系用来直接表示语法功能。

#配价与词汇


在表中的动词被认为具有不同的配价。配价限制不仅适用于动词,也适用于其他类的中心词。

#扩大规模

文法是否可以扩大到能覆盖自然语言中的大型语料库

使用各种正规工具

六 文法开发

如何访问树库,及开发覆盖广泛文法所具有的挑战

#树库和文法

corpus模块定义了树库语料的阅读器,其中包含了宾州树库语料10%的样本

from nltk.corpus import treebank
t = treebank.parsed_sents('wsj_0001.mrg')[0]
print t
(S
  (NP-SBJ
    (NP (NNP Pierre) (NNP Vinken))
    (, ,)
    (ADJP (NP (CD 61) (NNS years)) (JJ old))
    (, ,))
  (VP
    (MD will)
    (VP
      (VB join)
      (NP (DT the) (NN board))
      (PP-CLR (IN as) (NP (DT a) (JJ nonexecutive) (NN director)))
      (NP-TMP (NNP Nov.) (CD 29))))
  (. .))
def filter(tree):    #搜索树库找出句子的补语
    child_nodes = [child.label for child in tree if isinstance(child, nltk.Tree)]
    #print tree.label
    #print [t for t in tree if tree.label == 'NP']
    return (tree.label == 'VP') and ('S' in child_nodes)
from nltk.corpus import treebank
[subtree for tree in treebank.parsed_sents()
         for subtree in tree.subtrees(filter)]
entries = nltk.corpus.ppattach.attachments('training')
table = nltk.defaultdict(lambda: nltk.defaultdict(set))
for entry in entries:
    key = entry.noun1 + '-' + entry.prep + '-' + entry.noun2
    table[key][entry.attachment].add(entry.verb)
for key in sorted(table):
    if len(table[key]) > 1:
        print key, 'N:', sorted(table[key]['N']), 'V:', sorted(table[key]['V'])
nltk.corpus.sinica_treebank.parsed_sents()[3450].draw()  #中央研究院树库语料

#有害的歧义

歧义文法

#加权文法

处理歧义是开发覆盖广泛的解析器的主要任务。图表解析器提高了计算同一个句子的多个分析的效率,但它们仍然会因可能的分析数量过多而不堪重负。加权文法和概率分析算法为这些问题提供了有效的解决方案

def give(t):
    return t.label == 'VP' and len(t) > 2 and t[1].label == 'NP' \
           and (t[2].label == 'PP-DTV' or t[2].label == 'NP') \
           and ('give' in t[0].leaves() or 'gave' in t[0].leaves())
def sent(t):
    return ' '.join(token for token in t.leaves() if token[0] not in '*-0')
def print_node(t, width):
    output = "%s %s: %s / %s: %s" %\
        (sent(t[0]), t[1].label, sent(t[1]), t[2].label, sent(t[2]))
    if len(output) > width:
        output = output[:width] + "..."
    print output
for tree in nltk.corpus.treebank.parsed_sents():
    for t in tree.subtrees(give):
        print_node(t, 72)

#概率上下文无关文法(PCFG)

grammar = nltk.parse_pcfg("""
S    -> NP VP          [1.0]
VP   -> TV NP          [0.4]
VP   -> IV             [0.3]
VP   -> DatV NP NP     [0.3]
TV   -> 'saw'          [1.0]
IV   -> 'ate'          [1.0]
DatV -> 'gave'         [1.0]
NP   -> 'telescopes'   [0.8]
NP   -> 'Jack'         [0.2]
""")

七 深入阅读























Python自然语言处理(NLP)工具小结 Python 的几个自然语言处理工具自然语言处理(Natural Language Processing,简称NLP)是人工智能的一个子域。自然语言处理的应用包括机器翻译、情感分析、智能问答、信息提取、语言输入、舆论分析、知识图谱等方面。也是深度学习的一个分支。首先介绍一下Python的自然语言处理工具包:1.NLTK工具包NLTK 在用 Python 处理自然语言的工具中处于领先的地位。它提供了 阅读详情

相关推荐

NLP自然语言处理常用的Python库 及安装方法

1、NLTK Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 安装:pip install nltk 2、Gensim 可以用来从文档中自劢提取语义主题。它包含了很多非监督学习算法如:TF/IDF,潜在语义分析(Latent Semantic Analysis,LSA)、隐含狄利克雷分配(Latent Dirichlet All...

NgCafai的博客 2万+

8.NLTK之分析句子结构

学习文法的好处学习文法的一个好处是,它提供了一个概念性的框架和词汇拼写这些直觉。

LK-T.O.P的博客 8819

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

对于从事自然语言处理、文本分析的专业人士来说,建议参考学习《自然语言处理综论第2版》。对于第一版做了全面的改写,增加了大量反映自然语言处理最新成就的内容,特别是增加了语音处理和统计技术方面的内容。《自然语言处理综论第2版》覆盖全面,强调实用,注重评测,语料为本。《自然语言处理综论第二版》在第一版的基础上增加了自然语言处理的最新成就,特别是增加了语音处理和统计技术方面的内容。《自然语言处理综论第2版...

weixin_39566493的博客 2664

自然语言6_treebank句子解析

  sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share   #英文句子结构分析 imp...

weixin_33863087的博客 439

124. 项目74:简易句子结构分析器——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。,鼓励您动手操作,因为学习编程的最佳方式就是通过实践。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。我们从最基本的概念开始,逐步深入到Python的核心特性,确保您在每个阶段都感到自信和理解。开发一个简易的句子结构分析器程序,帮助用户识别和理解句子中的不同成分,如主语、谓语、宾语等。

Python老吕的博客 3209

8、使用Python进行自然语言处理(NLP)

本文详细介绍了自然语言处理(NLP)的基本概念、组成部分和实际应用,并通过Python及其相关库展示了如何实现常见的NLP任务,如分词、词干提取、命名实体识别等。文章还探讨了NLP在智能客服、机器翻译和情感分析等领域的具体应用案例,以及优化性能的策略和技术展望。

x2y3z4a5b的博客 489

nltk 句子结构分析

1. 一些语法困境:   groucho_grammar = nltk.parse_cfg(""" S -> NP VP PP -> P NP NP -> Det N | Det N ...

zhuzuwei的博客 4724

8个强大的Python库,用于自然语言处理(NLP)

Transformers是用于自然语言处理任务的强大库,它集成了许多预训练的语言模型和模型架构。Transformers支持文本分类、问答系统检测到您的文本中有一些不规范的内容,我将继续为您提供合适的回答。Transformers是用于自然语言处理任务的强大库,它集成了许多预训练的语言模型和模型架构。TextBlob是一个建立在NLTK之上的库,它提供了一些方便的接口来进行文本处理和情感分析。PyNLPI是一个Python库,提供了许多NLP工具和资源,如分词、词性标注、命名实体识别等。

ZksProlog的博客 687

python自然语言处理 | 分析句子结构

本章解决的问题 我们如何使用形式化语法来描述无限的句子集合的结构? 我们如何使用句法树来表示句子结构? 语法分析器如何分析一个句子并自动构建句法树? 这里写目录标题1 一些语法困境1.1 语言数据和无限可能性1.2 普遍存在的歧义2 文法有什么用?2.1 超越 n-grams3 上下文无关文法3.1 一种简单的文法3.2 写你自己的文法3.3 句法结构中的递归4 上下文无关文法分析4.2 4.2 移进-归约分析4.3 左角落分析器4.4 符合语句规则的子串表 WFST5 依存关系和依存文法5.1 .

Claire_chen_jia的博客 2518

YOLOv8魔改网络后训练全零?别慌,关掉AMP混合精度训练试试

本文探讨了YOLOv8魔改网络后训练出现全零指标的问题,指出AMP混合精度训练与自定义网络结构的不兼容性。通过分析梯度消失现象和AMP工作原理,提供了关闭AMP、调整学习率等解决方案,并建议预防性开发实践以避免类似问题。

weixin_28338005的博客 322

1.3 重叠因子:希尔伯特变换趋势线(Hilbert Transform - Instantaneous Trendline)概念与Python实战

希尔伯特变换趋势线(Hilbert Transform - Instantaneous Trendline)是一种基于希尔伯特变换的高级技术分析工具。它使用数字信号处理技术来识别价格的主导周期,并生成一条平滑的趋势线。这种方法可以有效过滤市场噪音,提供更准确的趋势信号。

Kewin的博客 2085

NLTK(8)分析句子结构

情感分析 文本相似度

todingdong的博客 389

TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR)

简单介绍了X-BAR。

whyorwhnt的专栏 2万+

《用Python进行自然语言处理》第8章 分析句子结构

1. 我们如何使用形式化语法来描述无限的句子集合的结构?2. 我们如何使用句法树来表示句子结构?3. 语法分析器如何分析一个句子并自动构建语法树?8.1 一些语法困境语言数据和无限可能性#语言提供给我们的结构,看上去可以无限扩展句子 #文法的目的是给出一个明确的语言描述。普遍存在的歧义#让我们仔细看看短语 I shot an elephant in my pajamas 中的歧义。 #首先,我们需...

wangsiji_buaa的博客 4209

南京银行信息技术岗提前批笔试与面试

1、笔试 笔试大致可以分为三部分:性格测试、行测题目、专业知识 性格测试 性格测试一般会有较多的体量,可能一共大概有一百多道接近两百道的样子,这个是不限时的。 前面有100道是这样的题目,就是有四个选项都是各种形容词,然后分别选出最符合自己的与最不符合自己的选项。这种题你就顺着自己的潜意识填就行了,但是前后要一致,我怀疑他出这么多题,可能就是考一考你记不记得前面填了啥。比如你做到第90题的时候,可能会出现和前面第2题类似的四个形容词,更有甚者就是一模一样的,你要对自己之前选的什么有个比较清楚的记忆。

qq_40971025的博客 6922

Verilog仿真时读取bin文件模拟输入数据流,将输出数据流写入bin文件

需要关注的是,一般会省略文件起始地址和读取长度,那么mem为多大,就会从文件中读取多大的数据出来填充mem。如果只需要读取一次文件,那么代码到此就结束了,但是如果还需要每一帧都读取该文件转换为数据流,则在循环里判断新的一帧信号是否到来,在新的一帧再次打开一次文件,从头开始读取数据。

qq_41137205的博客 2772

【Python数据分析五十个小案例】使用自然语言处理(NLP)技术分析 Twitter 情感

情感分析(Sentiment Analysis)是文本分析的一部分,旨在识别文本中传递的情感信息,例如正面、负面或中立情绪。tweepy:用于访问 Twitter APInltk:提供 NLP 工具,如分词、停用词处理scikit-learn:模型训练与评估TensorFlow:深度学习框架社交媒体情感分析利用自然语言处理(NLP)技术对平台上的用户文本进行情感分类,旨在识别推文或评论中的情绪倾向,如正面、负面或中立。这项技术在商业、舆情监控和社会研究等领域有广泛应用。

null18的博客 3193

SQL-拼多多 面试题:连续3次为球队得分的球员名单

1.使用LAG开窗函数 筛选出 下一次和下下一次得分,并用进球时间进行排序。2.使用where筛选出值得嘉奖的球员。

Ftr1998的博客 644

基于腾讯云自然语言处理 NLP服务实现文本情感分析

最近有一个需求,就是分析各种评论内容,之后分析出来特定场景下其评论是否有效,比如我们优快云最常见的互三,这些互三如何判断,是否很多人发的评论都是类似重复的,今天我们来使用腾讯云的 NPL 服务来做一个语义分析的实践。点击这里。NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。

我在山城重庆,我希望能为这片软件沙漠地带贡献自己的一滴水,Stay tuned! 3412

YOLO11涨点优化:卷积魔改 | 可变形条带卷积(DSCN),魔改轻量DCNv3二次创新

如何跟YOLO11结合:1)和C3k2创新性结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 988

javafx结合Scene Builder自定义fxml实现漂亮的登录界面、自定义最小化、关闭按钮

本节主要介绍了如何结合Scene Builder工具来制作一个好看又漂亮的登录界面,以及介绍了如何在程序中调用生成界面文件fxml文件,如何获取到fxml文件中的组件等,并演示登录、最小化和关闭等功能。

c1007857613的专栏 5223

python自然语言处理库_8个出色的Python库用于自然语言处理

python自然语言处理库 自然语言处理 (简称NLP )最好描述为“语音和文本的AI”。 语音命令,语音和文本翻译,情感分析,文本摘要以及许多其他语言应用程序和分析背后的魔力,通过深度学习极大地改善了自然语言处理。 Python语言为包括NLP在内的各种机器学习提供了便捷的前端。 实际上,在Python生态系统中有很多NLP财富可供选择。 在本文中,我们将探讨可用于Python的每个NLP...

cxw9087的博客 2273

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python nltk 8 分析句子结构

8 分析句子结构Analyzing Sentence Structure(分析句子结构)1 Some Grammatical Dilemmas(一些语法困境)2 What's the Use of Syntax?(语法有什么用)2.1 Beyond n-grams(超越n-grams)3 Context Free Grammar(上下文无关语法) 英文文档 http://www.nltk.org/book/ 中文文档 https://www.bookstack.cn/read/nlp-py-2e-zh

lakomi的博客 2708

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

100个Python自然语言处理小技巧,让你速通NLP

在自然语言处理(NLP)领域,Python备受开发者青睐。本文整理了100条用于各类NLP任务的Python单行代码。这些代码虽简洁高效,但在实际开发中,代码可读性与对其意图的理解同样重要,这利于代码维护和团队协作。

m0_75067629的博客 805

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python中文语义分析,python NLP总结

1 https://www.zhihu.com/question/19929473目前常用的自然语言处理开源项目/开发包有哪些?刘知远2自然语言处理工具包spaCy介绍spaCy是一个Python自然语言处理工具包,诞生于2014年年中,号称“Industrial-StrengthNatural Language Processing in Python”,是具有工业级强度的Python NL...

weixin_35422230的博客 4151
上一篇: 情感分析利器——Doc2vec
下一篇: Linux 安装Nginx详细图解教程
CopperDong
博客等级 码龄14年 1205粉丝 466原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值