zoukankan      html  css  js  c++  java
  • Python自然语言处理

    一 如何使用形式化语法来描述无限的句子集合的结构?    --上下位无关文法

     
        1.1 一个例子: 
        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"
        """)
     
        1.2 文法特点:
        简单,分析语句子结构时,无需考虑上下文信息。
     
        二 我们如何表示句子结构
     
        2.1 句法树
     alt
        这个图片所展示的句法树和下面的括号序列是一样的:
        (S (NP Mary) (VP (V saw) (NP Bob)))
     
        三 如何分析句子结构    --句法解析方法
     
        3.1 从规则入手
     
        3.1.1 递归下降分析
     
        3.1.1.1 介绍:
        枚举可能的树形结构,自上往下构建句法树。
    alt
     
        3.1.1.2 特点:
     
        1) 无法处理一下类型的文法规则--bug!
        NP -> NP PP
        2) 漫无目的地枚举和重复计算--低效!
     
        3.2 从句子本身入手
     
        3.2.1 移近-规约分析
     
        3.2.1.1 介绍:
        移位-规约分析器反复将下一个输入词推到堆栈(见4.1 节),这是移位操作。如果堆栈
    上的前n 项,匹配一些产生式的右侧的n 个项目,那么就把它们弹出栈,并把产生式左边的
    项目压入栈。这种替换前n 项为一项的操作就是规约操作。此操作只适用于堆栈的顶部;规
    约栈中的项目必须在后面的项目被压入栈之前做。当所有的输入都使用过,堆栈中只剩余一
    个项目,也就是一颗分析树作为它的根的S 节点时,分析器完成。
    alt
        3.2.1.2 特点
        1) 不回溯,没有多少无效枚举,以线性的复杂度扫一遍就结束--高效!
        2) 由于只是简单的扫描一遍,没有回溯过程,可能会错过某些可行解--舍弃召回率换取运行效率!
     
        3.3 流行做法--动态规划
     
        3.3.1 介绍:
        把整个输入句子当做一个一维空间(可以当成数轴),任意一个连续子串,可以由起始位置和长度确定,以连续子串为状态,求出每一个子串可能对应的最后规约出来的项。
        alt
     
        3.3.2 特点:
        1) 以空间换时间,保存中间结果,不做重复计算--高效!
        2) 可以计算出所有可能的结果--不存在召回率问题!
        
        四 一个句子可能会有多个可能的句法树    --歧义
        4.1 一个例子
     alt
     
       4.2 解决方法--概率上下文无关文法
       在刚才的计算过程中,中间状态加上一个权重,表示这个区间建立成某个非终结状态子树的可能性,最终得到权重最大的一颗完整的句法树
  • 相关阅读:
    [转] linux中 参数命令 -- 和
    ECharts 报表事件联动系列一:刷新页面
    Echarts 简单报表系列三:饼状图
    Echarts 简单报表系列二:折线图
    Echarts 简单报表系列一:柱状图
    Golang 在 Mac、Linux、Windows 下如何交叉编译(转)
    Spring Boot 打war包并利用docBase指定根目录为打包的工程
    JdbcTemplate查询返回JavaBean的几种方法
    Spring JdbcTemplate 查询结果集Map反向生成Java实体(转)
    Spring JdbcTemplate 查询出的Map,是如何产生大小写忽略的Key的?(转)
  • 原文地址:https://www.cnblogs.com/tychyg/p/5277238.html
Copyright © 2011-2022 走看看