首页
学习
活动
专区
圈层
工具
发布

使用 HanLP 统计二元语法中的频次

我们可以使用极大似然估计(Maximum Likelihood Estimation, MLE)来计算这些条件概率值,比如对于 : 其中, 表示 的计数(count)。...如果想要使用 bigram 语言模型计算句子的概率值,需要统计出一个单词的频次(分母)以及两个单词连续且共同出现的频次(分子)。...接下来使用 HanLP 来统计这些一个单词和两个单词连续且共同出现的频次。..._jclass.java.util.LinkedList'> >>> print(sents) [[商品, 和, 服务], [商品, 和服, 物美价廉], [服务, 和, 货币]] 统计一元语法和二元语法...有一些语料库中含有人工标注的词性,因此词典格式最好还要支持词性,所以在进行一元语法的频次统计时,可以考虑为语料库中的每个单词设置词性,这里为了简单统一设置为名词,当然在实际中即使是相同的单词在不同的上下文中也可能表示不同的词性

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 R 语言从 PDF 文档中提取表格

    由于一个知识星球的小伙伴急需学习如何从 PDF 文档中提取表格,所以先插这个课,「使用 R 语言处理 netCDF 数据」系列的课程下次再发新的哈。...本课程介绍了如何使用 R 语言从 WHO(世界卫生组织)的官网上下载新冠疫情的每日报告以及如何从这些报告中的表格里面提取数据。...从 PDF 里面提取表格数据 我选择最新的一个 PDF 做演示:20200523-covid-19-sitrep-124.pdf,下面使用 tabulizer 包进行数据提取,不过这个包依赖于 rJava...包,因此在使用这个包之前你需要在电脑上安装 Java 和在 R 里面安装 rJava 包。...# 使用 tabulizer 包 library(tabulizer) library(purrr) library(tidyr) library(tidyverse) f <- "pdf/20200523

    4.5K10

    能用 AST 搞明白的正则语法,就不需要看文档

    : 切换到非捕获,就不会提取子组的内容了。 我们对用 AST 来了解正则语法已经轻车熟路了,那来看点难的: /bbb(?=ccc)/ 正则表达式支持通过 (?...通过 AST 可以看到这种语法叫做 Assertion,并且类型为 lookahead,也就是往前看,只匹配前面的意思: 这是啥意思呢?为啥要这么写?和 /bbb(ccc)/ 还有 /bbb(?...之后意思就变了,通过 AST 看一下: 虽然还是先行断言 lookahead assertion,但是多了个 negative 为 true 的属性。...子组语法(Group)是用于提取某段字符串的,默认是捕获(capturing 为 true),代表需要提取,可以通过 (?:xxx)切换到非捕获,只匹配不提取。...断言语法(Assertion)代表前面或后面有某段字符串,分为先行断言(lookahead assertion)和后行断言(lookbehind assertion),语法分别是(?=xxx)和 (?

    62510

    浅谈基于零宽度字符的隐写方式

    它们存在于页面中主要用于调整字符的显示格式,下面就是一些常见的零宽度字符及它们的unicode码和原本用途: 零宽度空格符 (zero-width space) U+200B : 用于较长单词的换行分隔...零宽度非断空格符 (zero width no-break space) U+FEFF : 用于阻止特定位置的换行分隔 零宽度连字符 (zero-width joiner) U+200D : 用于阿拉伯文与印度语系等文字中...,使不会发生连字的字符间产生连字效果 零宽度断字符 (zero-width non-joiner) U+200C : 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果 左至右符 (...使用零宽度字符隐写,关键是将想要隐藏的内容用零宽度字符来表示,通过使用不同的零宽度字符,以及不同字符间的排列组合方式来达到隐写的目的 注:加密和解密是一个可逆的过程,但是一定要用相同的方式(相同的工具/...不存在的 例题:[UTCTF2020] zero 附件链接:https://pan.baidu.com/s/1Ivadp2r9cbKjIZM2vSFDQw 提取码:7vmf 下载附件得到一个txt文件,

    2.2K20

    Postgresql源码(44)server端语法解析流程分析

    相关: 《Postgresql源码(44)server端语法解析流程分析》 《Postgresql源码(50)语法解析时关键字判定原理(函数名不能使用的关键字为例)》 一、语法解析整体流程 语法解析封装的函数比较多看起来不太容易理解...) 4、拿回来token后,进入语法树开始递归(有点像后续遍历,从底层开始向上构造语法节点,实际是用两个堆栈解析每一层语法规则,原理也比较简单,见第二节)。...5、从语法树底层节点向上reduce,识别收集文本中的目标信息,创建对应的stmt结构体,填入数据,返回上层。...scan.c中提供的函数,功能就是scan.l中编写的匹配规则 7、core_yylex可以自己在scan.l中自定义其他同参函数,例如my_yylex,可以在base_yylex中替代core_yylex来使用...四、yacc的工作原理、实例 总结: 1、整个语法树的解析过程从叶子节点逐层向上构造,中间使用base_yylex获取新的token决定匹配拿一个语法分支。

    79150

    Postgresql源码(40)server端语法解析流程分析

    一、语法解析整体流程 语法解析封装的函数比较多看起来不太容易理解,其实核心逻辑比较简单: 1、raw_parser作为高层入口 2、raw_parser初始化后,通过base_yyparse进入yacc...后,进入语法树开始递归(有点像后续遍历,从底层开始向上构造语法节点,实际是用两个堆栈解析每一层语法规则,原理也比较简单,见第二节)。...5、从语法树底层节点向上reduce,识别收集文本中的目标信息,创建对应的stmt结构体,填入数据,返回上层。...,中间使用base_yylex获取新的token决定匹配拿一个语法分支。...,返回继续上一层树的解析 3、语法树的最上层会把最终 reduce的结果保存到parsetree中作为最终结果。

    84520

    ES9的新特性:正则表达式RegExp

    简介 正则表达式是我们做数据匹配的时候常用的一种工具,虽然正则表达式的语法并不复杂,但是如果多种语法组合起来会给人一种无从下手的感觉。 于是正则表达式成了程序员的噩梦。...ab'); // false 两种语法都可以使用。 Named capture groups还可以和replace一起使用。...传统做法是这样做的: > /^\s+$/.test('\t \n\r') true 前面是正则表达式,然后使用一个test方法来匹配字符串,最终得到的true。...刚刚讲到了unicode的属性,我们也可以用属性来匹配: > /^\p{White_Space}+$/u.test('\t \n\r') true 属性匹配使用的是\p, 后面跟的是属性值。...有两种lookaround assertion,一种是Lookahead一种是Lookbehind。 我们先看一下Lookahead的使用: const RE_AS_BS = /aa(?

    66430

    ES9的新特性:正则表达式RegExp

    简介 正则表达式是我们做数据匹配的时候常用的一种工具,虽然正则表达式的语法并不复杂,但是如果多种语法组合起来会给人一种无从下手的感觉。 于是正则表达式成了程序员的噩梦。...ab'); // false 两种语法都可以使用。 Named capture groups还可以和replace一起使用。...传统做法是这样做的: > /^\s+$/.test('\t \n\r') true 前面是正则表达式,然后使用一个test方法来匹配字符串,最终得到的true。...刚刚讲到了unicode的属性,我们也可以用属性来匹配: > /^\p{White_Space}+$/u.test('\t \n\r') true 属性匹配使用的是\p, 后面跟的是属性值。...有两种lookaround assertion,一种是Lookahead一种是Lookbehind。 我们先看一下Lookahead的使用: const RE_AS_BS = /aa(?

    57420

    语法分析器(Parser)的实现

    我们可以分别定义出所有语法结构的抽象语法树。...,如二元运算符,变量,函数等语法结构的定义也大同小异: class VarExprAST : public ExprAST{ std::string __Name; public: VarExprAST...这里采用了预读(lookahead)的手段来试探当前标识符的类型,判断它究竟是个独立的变量引用还是个函数调用。...解析二元表达式(来自参考文章) 二元表达式的解析难度要大得多,因为它们往往具有二义性。例如,给定字符串“x+y*z”,语法解析器既可以将之解析为“(x+y)*z”,也可以将之解析为“x+(y*z)”。...(甚至可以直接使用定长数组)。 有了上面的函数作为辅助,我们就可以开始解析二元表达式了。运算符优先级解析的基本思想就是通过拆解含有二元运算符的表达式来解决可能的二义性问题。

    2.3K30
    领券