- 博客(9)
- 收藏
- 关注
原创 python实现AC自动机
ac自动机可以看成带指针的字典树,每个节点的指针指向了当前节点的最大后缀的位置。在建立字典树后,可以层次遍历字典树来构建fail指针,根节点的直接孩子(第一层节点)的fail指针肯定是指向根节点的,之后的节点需要看其父节点的fail指针指向的节点,如果父节点的fail指针指向的节点的孩子中存在当前节点,则将当前节点的fail指针指向该节点,如果不存在,需要沿着fail指针一直向上寻找直至根节点,如果根节点的孩子中也找不到,说明树中不存在该字符,将当前节点的fail指针指向根节点就行了。最后,在查找时也类似,
2021-02-10 22:50:55 1232 2
原创 几种文本匹配算法速度比较
暴力法def brute_force_search(string: str, pattern: str) -> int: """暴力匹配 时间复杂度:O(m*n),空间复杂度:O(1) """ n, m = len(string), len(pattern) if n >= m: for k in range(n - m + 1): i, j = k, 0 while i < n an
2021-02-10 21:14:53 752
原创 Java 8 中使用流
案例来自于Java8 实战.Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, Java 8 in Action[M], Manning Publications, 2014流操作流允许你以声明式方式处理数据集合(通过类似于查询语句的方式来表达), 其内部可以透明地并行处理.Java 8中的集合支持一个新的stream方法,它会返回一个流(接口定义...
2019-05-18 23:28:20 197
原创 Java 8 Lambda表达式
Lambda表达式默认方法加入默认方法主要是为了框架设计者改进现有的接口, 例如如果要对List对象添加一个新的方法, 通常需要将该方法加入Collection的接口, 但这会导致所有实现Collection接口的类都要实现该方法, 这显然是不现实的.如果接口给出了默认实现, 则避免了这个矛盾, 不需要改动现有的代码.例如java8的List接口中sort的默认方法实现:default ...
2019-04-17 21:37:03 151
原创 朴素贝叶斯模型
首先重述一下朴素贝叶斯模型(Naive Bayes model)的定义, 该模型包含kkk个特定的标签, 一个ddd维向量用于表示d个属性特征. 其包含以下参数:q(y)q(y)q(y), 表示看见标签yyy的概率, 其满足约束q(y)≥0q(y)\ge0q(y)≥0并且∑y=1kq(y)=1\sum_{y=1}^kq(y)=1∑y=1kq(y)=1.qj(x∣y)q_j(x|y)qj(...
2019-02-24 22:11:19 453
原创 几道动态规划题目
几道常见的动态规划题动态规划是一种解决问题的思想,通过把原问题可以分解为几个子问题来解决,即全局的最优解一定是某个局部的最优解,我们需要一张表来保存前一次计算的结果,以便递推出原问题的解。0-1背包固定容量的背包,希望能够装入价值最大的物品。假设m(i,j)m(i,j)m(i,j)是背包容量为jjj,可选择物品为0~i时0-1 背包问题的最优值。wiw_iwi为第i个物品的容量,viv_i...
2018-11-11 17:56:00 233
原创 PageRank做简单的文本摘要
PageRank做简单的文本摘要公式PageRank算法把所有评论的句子集合视作一个图结构G=(V,E)G=(V,E)G=(V,E),把评论中的单个句子视为节点。对于任意节点iii和节点jjj,e(i→j)e(i→j)e(i→j)表示这两个节点之间边的权重,我们使用两句子之间的余弦相似度来计算:e(i→j)=vi⋅vj|vi|⋅|vj|e(i→j)=vi⋅vj|vi|⋅|vj|e(...
2018-09-09 20:28:24 1042
原创 pyrouge在Ubuntu下的使用
pip install pyrouge如报错:Cannot open exception db file for reading: data/WordNet-2.0.exc.db则执行以下命令:cd /home/yzhao/soft/ROUGE-1.5.5/RELEASE-1.5.5/datarm WordNet-2.0.exc.db./WordNet-2.0-Excep...
2018-03-04 19:17:19 3731 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人