javacc在stanfordnlp中的应用
总结:
这个javacc感觉比较复杂,在于stanfordnlp中
p.p1 { margin: 0; font: 11px Monaco }
CoreMapExpressionExtractor这个太过复杂,只需要搞清楚如何写正则就行了
格式就是
p.p1 { margin: 0; font: 11px Monaco }
p.p2 { margin: 0; font: 11px Monaco; min-height: 15px }
span.s1 { text-decoration: underline }
$DAYOFWEEK = "/monday|tuesday|wednesday|thursday|friday|saturday|sunday/"
$TIMEOFDAY = "/morning|afternoon|evening|night|noon|midnight/"
ENV.defaults["ruleType"] = "tokens"
{
ruleType: "tokens", #类型
pattern: ( $DAYOFWEEK ), #正则本身
result: "TIME" #如果匹配后如何生成nlg
}
一、javacc说明文档

- >>>红色部分
parser_begin 和 parser_end
但是这也是一个声明实例变量的好场所,该实例变量将由您结果中的 Java 语句引用。如果您喜欢,甚至可以在这里插入 Java main() 过程,并且使用它来构建独立的应用程序,以启动和测试您正在生成的解析器
- >>>绿色部分
绿色部分直接调用黄色函数
该操作作为方法 Parser_1.integerLiteral() 的一部分产生。每当解析器遇到整数时,都执行该操作
- >>>黄色部分函数
声明了类型 Token (JavaCC 的内置类)的局部变量 t 。当在输入流中遇到整数时会 触发 该规则,该整数(象文本一样)的值被赋给实例变量 t.image 。
- >>>黑色部分
举个例子
TOKEN : { < NUMBER : ([”0”-”9”])+ > }
说明([”0”-”9”])+. The [”0”- ”9”] part is a regular expression that matches any digit, that is, any character whose unicode encoding is between that of 0 and that of 9. A regular expression of the form (x)+ matches any sequence of one or more strings, each of which is matched by regular expression x. So the regular expression ([”0”-”9”])+ matches any sequence of one or more digits.
- >>>执行流程
1. 最上面的方法 simpleLang() 调用 integerLiteral() 。
2. integerLiteral() 希望在输入流中立即遇到一个整数,否则该表达式将无效。为了验证这一点,它调用记号赋予器(Tokenizer.java)以返回输入流中的下一个记号。记号赋予器穿过输入流,每次检查一个字符,直到它遇到一个整数或者直至文件结束。如果是前者,则以 <INT> 记号将值“包”起来;如果是后者,则当作 <EOF> ;并将记号返回给 integerLiteral() 做进一步处理。如果记号赋予器未遇到这两个记号,则返回词法错误。
3. 如果记号赋予器返回的记号不是整数记号或 <EOF> ,那么 integerLiteral()抛出 ParseException ,同时解析完成。
4. 如果它是整数记号,表达式仍然可能是有效的, integerLiteral() 再次调用记号赋予器以返回下一个记号。如果返回 <EOF> ,则由单个整数构成的整个表达式都是有效的,解析器将控制返还给调用应用程序。
5. 如果记号赋予器返回加号或减号记号,则表达式仍然是有效的,integerLiteral() 将最后一次调用记号赋予器,以寻找另一个整数。如果遇到一个整数,则表达式是有效的,解析器将完成工作。如果下一个记号不是整数,则解析器抛出异常。
二、stanfordnlp TokenSequenceParser.jj

然后直接调用 new TokenSequenceParser

看看上面定义的规则如何使用呢?如下




最关键的函数是如下

p.p1 { margin: 0; font: 11px Monaco }
span.s1 { color: rgba(147, 26, 104, 1) }
javacc在stanfordnlp中的应用的更多相关文章
- 9.JavaCC官方入门指南-例4
例4:计算器--添加减法运算 1. calculator1.jj 为了使得计算器具备更多功能,我们需要更多的操作符,比如减法.乘法和除法.接下来我们添加减法运算. 在词法分析器的描述部分,我们 ...
- 史上最详尽的NLP预处理模型汇总
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 | 磐创AI(公众号ID:xunixs) 作者 | AI小昕 编者按:近年来,自然语言处理(NL ...
- NLTK和Stanford NLP两个工具的安装配置
这里安装的是两个自然语言处理工具,NLTK和Stanford NLP. 声明:笔者操作系统是Windows10,理论上Windows都可以: 版本号:NLTK 3.2 Stanford NLP 3.6 ...
- [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
[源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apac ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- java工程中的.classpathaaaaaaaaaaaaaaaa<转载>
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...
- java工程中的.classpath<转载>
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...
- Centos中yum方式安装java
查看CentOS自带JDK是否已安装.◆输入:yum list installed |grep java. 若有自带安装的JDK,如何卸载CentOS系统自带Java环境?◆卸载JDK相关文件输入:y ...
- javacc jjtree 写法 以及 jj写法 基本语法 以及应用
/***********************************************************/>我使用的测试jjt,jj文件来自于javacc5.0版本>dir ...
随机推荐
- Tutorial_6 运行结果
1.buyer_favorites.txt 2.代码 package mapreduce; import java.io.IOException; import java.util.Iterator; ...
- LeetCode 780. Reaching Points
题目链接:https://leetcode.com/problems/reaching-points/ 题意:给定操作可以使点(x,y)变为点(x+y,y)或者点(x,x+y).现已知初始点(sx,s ...
- java并发编程基础——线程通信
线程通信 当线程在系统内运行时,程序通常无法准确的控制线程的轮换执行,但我们可以通过一些机制来保障线程的协调运行 一.传统的线程通信 传统的线程通信主要是通过Object类提供的wait(),noti ...
- Unittest方法 -- 测试断言
"""断言详解"""from unittest_1.it import *def add(a,b): return a - bclass B ...
- 将base64Url对应图片保存到本地
上图中的内容就是base64编码之后对应的Url 图中base64,之前的都是用于声明该图片的格式以及它的编码格式 base64,之后的就是该图片对应的数据了 我们只需要把数据转换为字节保存下来即 ...
- CentOS 7 安装虚拟机
1.本次安装centos7 安装使用的软件是VitrualBox 虚拟机软件 Oracle公司的虚拟机软件,免费商品(大家可以百度搜索去官网下载) 1:我这里使用的是阿里的centos7的镜像(大家可 ...
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode206 反转链表,内含7种语言答案
206.反转链表 1.题目描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1-> ...
- HDFS(Hadoop Distributed File System )概述
目录 一.HDFS概述 二.HDFS特点 三.HDFS集群组成:主从架构---一个主节点,多个从节点 1. NameNode(名称节点 / 主节点)----- HDFS集群的管理者 2. DataNo ...
- 学习vue过程中遇到的问题
1.vue-quill-editor动态禁用 项目中把vue-quill-editor单独封装成了一个组件,通过props传递readOnly参数来设置是否禁用editor.开发中发现可以实现禁用效果 ...
- flink clickhouse-jdbc和flink-connector 写入数据到clickhouse因为jar包冲突导致的60 seconds.Please check if the requested resources are available in the YARN cluster和Could not resolve ResourceManager address akka报错血案
一.问题现象,使用flink on yarn 模式,写入数据到clickhouse,但是在yarn 集群充足的情况下一直报:Deployment took more than 60 seconds. ...