自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (5)
  • 收藏
  • 关注

转载 文本关键词提取算法总结

1.TF-IDF昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类。我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的词频,而不是本文章内出现的次数,IDF还是在所有文章里出现的倒文档频率。原理:1、先给本聚类内的所有文档进行分词,然后用一个字典保存每个词出现的次数2、遍历每个词,得到每个词在所有文档里

2016-03-29 20:31:40 9204

原创 Python获取豆瓣新书列表

# -*- encoding:utf-8 -*-from bs4 import BeautifulSoupimport urllibimport urllib.requestimport reUrl = 'https://book.douban.com/latest?icn=index-latestbook-all'page = urllib.request.urlopen(Url

2016-03-29 19:14:50 710

原创 HanLP里使用DAT存取字典的方法

CoreBiGramTableDictionary.java和CoreDictionary.java结构思路词典里文件的格式:wordA@wordB     frequencyCoreBiGramTableDictionary.java文件用一个TreeMap>来读取词典。用一个名为pair的int型数组来存储。因为一个wordA可能对应有多个wordB,所以用一个名为st

2016-03-28 21:41:36 1675

原创 Python搜索路径

Python搜索路径:当前目录PythonPathPath,亦即Python的安装路径

2016-03-28 13:07:27 440

转载 Python正则表达式指南

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百度谷歌或维基,whatever。尊重作者的劳动,转载请注明作者及原文地址 >.html1. 正则表达式基础

2016-03-27 15:16:36 487

转载 文本分类与聚类(text categorization and clustering)

1. 概述广义的分类(classification或者categorization)有两种含义:一种含义是有指导的学习(supervised learning)过程,另一种是无指导的学习(unsupervised learning)过程。通常前者称为分类,后者称为聚类(clustering),后文中提到的分类都是指有指导的学习过程。给定分类体系,将文本集中的每个文本分到某个或者某几

2016-03-27 15:11:42 14478 2

原创 《TextRank: Bringing Order into Texts》

摘要TextRank是一个图排序模型,还是一个非监督方法。可用于关键字提取和短语提取。TextRank模型TextRank基于全图,递归获取全局信息,来决定每个顶点的重要性。其中,d是阻尼系数,通常取0.85。(论文Brin and Page,1998)。TextRank算法运行结束后,每个顶点的最终取值与初始值得选择是无关的。初始值得选择只会影响算法迭代到收敛的次数。

2016-03-24 22:10:52 2789 1

转载 Wu-Manber实现

WM.h#ifndef WM_H#define WM_H#include #include #include#define HASHTABLESIZE (256*256)#define MAXLEN 256typedef struct wm_pattern_struct{ struct wm_pattern_struct *next; unsigned char *psPa

2016-03-21 19:57:02 1308

转载 AC-BM算法

AC-BM算法将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀。匹配时,采取自后向前的方法,并借用BM算法的坏字符跳转(Bad Character Shift)和好前缀跳转(Good Prefix Shift)技术。   坏字符跳转即当字符串树中的字符与被匹配内容x失配时,将字符串树跳转到下一个x的出现位置,如果x的字符

2016-03-19 19:27:34 2193

转载 ACBM算法

ACBM算法:ACBM算法是在AC自动机的基础之上,引入了BM算法的多模扩展,实现的高效的多模匹配。和AC自动机不同的是,ACBM算法不需要扫描目标文本串中的每一个字符,可以利用本次匹配不成功的信息,跳过尽可能多的字符,实现高效匹配。 比如:{P} = {her,where,redo},匹配过程如下:  可以看

2016-03-19 14:10:19 2825

转载 Java Collection

在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也可以以这个集合框架为基础,定义更高级别的数据抽象,比

2016-03-17 16:20:44 333

原创 Wu-Manber字符串多模式匹配

Wu-Manber算法采用跳跃不可能匹配字符和hash散列的方法,加速匹配的进行。该方法需要对所有模式进行预处理,构建SHIFT,HASH和PREFIX这3个表。SHIFT表同Boyer-Moore算法里的转移表,用来存储字符集中所有块字符在文本中出现时的转移距离;HASH表用来存储匹配窗口内尾块字符散列值相同的模式串;PREFIX表用来存储匹配窗口内首块字符散列值相同的模式串。在对模式串进行匹配

2016-03-16 21:13:06 845

转载 Boyer-Moore算法

上一篇文章,我介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。下面,我根据Moore教授自己的

2016-03-15 14:16:41 438

转载 再谈AC算法

在我的《AC算法详解》一文中,还存在一个很大的疏漏,那就是用蛮力法计算自动机的fail跳转表,这实际上是一个极度低效的方法。在Aho,Corasick两人的论文中,给出的是逐层求fail表的方法,两人证明了这个方法可以在O(n)(其中n为所有模式串的总长度和)时间复杂度内计算出模式集合P的fail跳转表,下面,我就来补完这一算法的执行步骤。还是以之前的模式集合P{he,she,his,hers,e

2016-03-12 14:04:29 443

转载 再谈KMP/BM算法(II)

KMP算法中next[i]与Zi(S)的对应关系我在《KMP算法详解》一文中已经介绍了next[i]的含义,对于S[i],next[i]的意义是,如果存在k使得S[1...i-k]=S[k...i-1]且S[i-k+1]!=S[i],那么next[i]=i-k+1。实际上对于满足条件的k,其Z值Zk(S)就满足k+Zk(S)=i,next[i]=Zk(S)+1,所以我们可以用如下方法根据模

2016-03-12 14:03:53 385

转载 再谈KMP/BM算法(I)

之前我的《BM算法详解》一文中有一个巨大的缺憾,就是没能给出计算模式串好后缀跳转表的高效算法。Robert S.Boyer和J Strother Moore两人的论文中,不知什么原因,并没有给出这样的算法,蛮力算法O(n^3)的时间复杂度使得BM算法的实用性大打折扣。实际上线性时间内计算出模式串的好后缀跳转表的算法是存在,但是在介绍这个算法之前,我要向大家推荐一本字符串处理方面的权威著作《Al

2016-03-12 14:03:20 1889

转载 DoubleArrayTrie详解

Trie结构是模式匹配中经常用到的经典结构,在字符串处理中发挥着重要的作用,比如分词算法,就会利用Trie结构将分句的已知词条先识别出来,然后再判断剩下的未识别部分是否是新的未知词。经典的Trie结构如下图所示,是一个典型的多叉树结构,为了保证用Trie结构进行模式匹配的效率,Trie结构的每一个节点往往会容纳输入字符集的所有字母构成的数组,以便实现高速查找,这样的缺点

2016-03-12 14:02:28 606

转载 模式匹配之路

之前我的文章中,介绍了KMP,BM,AC,WM等几个经典的模式匹配算法,本文我将对常用的模式匹配算法做一小结。模式匹配算法的关系图如下所示:这里有几个我的文章中暂时没有涵盖的算法,这里做一简要说明。Rabin-Karp算法,这是一个基于散列值的模式匹配算法,根据散列算法,将长度为m的模式串计算一个散列值,然后对于目标串中各长度为m的子串分别计算散列值,与模式串的散列结果

2016-03-12 14:01:55 759 1

转载 AC算法详解

AC算法是Alfred V.Aho(《编译原理》(龙书)的作者),和Margaret J.Corasick于1974年提出(与KMP算法同年)的一个经典的多模式匹配算法,可以保证对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关。正如KMP算法在单模式匹配方面的突出贡献一样,AC算法对于多模式匹配算法后续的发

2016-03-12 14:00:13 1032

转载 WM算法详解

提到多模式匹配算法,就得说一下Wu-Manber算法,其在多模式匹配领域相较于Aho-Corasick算法,就好象在单模式匹配算法中BM算法相较于KMP算法一样,在绝大多数场合,Wu-Manber算法的匹配效率要好于Aho-Corasick算法。这个算法是由吴升(台湾)和他的导师Udi Manber在九十年代提出。当然,要想充分理解WM算法如何加快多模式匹配的效率,还需要对BM算法的深刻了解,可以

2016-03-12 13:56:32 436

转载 KMP算法详解

KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够

2016-03-12 13:55:56 268

转载 BM算法详解

1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色,下面我们就来详细了解一下这一出色的单模式匹配算法,在此之前推荐读者读一下我的另一篇文章《KMP算法详解》,对于透彻理解BM算法大有裨益。在讲解Boyer-Moore算法之前,我们还是要提一提KMP算法的老例子,

2016-03-12 13:53:08 628

翻译 《how to write and publish a scientific paper》 Chapter 4

怎么准备标题第一印象很重要:一个标题因此应该在它的限制范围内有明确和精准的定义来表明接下来将要表达什么——T.Clifford Allbutt标题的重要性在准备一篇论文的标题时,作者应该记着一个突出的事实:标题会被成千上万的人阅读。

2016-03-09 15:45:29 529

翻译 《how to write and publis a scientific paper》 Chapter 3

什么是科技论文写作?没有发表,科学就死了。——Gerara Piel科技论文写作的定义一篇科技论文编写和发表的目的是描述独创的研究结果。这个简短的定义必须被保证,然而,一篇科技论文不必非要像三世纪那样按照一种固定的格式来发布。为了合适地定义“科技论文”,我们必须定义产生科技论文的机制,也就是说,通过发表。进一步说,即使一篇科技论文经历了所有别的测试,如果它发表在错误的地方,

2016-03-09 14:22:45 369

翻译 《How to Write and publish a scientific paper》 Chapter 2

科技论文的起源

2016-03-08 10:15:41 515

翻译 《How to Write and Publish a Scientfic Paper》 Chapter 1

清晰表达的需求科技论文写作的关键字是清晰。成功的科学实验是清晰陈述问题和创造性的表达结论的结果。理想化的,清晰应该是任何类型的交流的关键,然而,当某些事情第一次被陈述时,本质要求是清晰。大多数发表在我们的首要研究期刊上的科学论文,都被精确的出版,因为他们确实贡献了新知识。因此,我们应该在科技论文写作里要求清晰表达。

2016-03-07 22:28:12 455

原创 Dijkstra算法

Algorithm copied from Wikipedia.org: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Algorithm==================================================================================================

2016-03-05 15:46:09 342

转载 Aho-Corasick暂存第二篇

简介AC(Aho-Corasick)算法是一个经典的多模式串匹配算法,它借鉴了KMP算法的思想,可以由有限状态机(Finite State Automata:FSA)来表示。AC算法的基本原理是:先根据多模式串建立一个有限状态自动机FSA,在进行模式匹配时,设当前状态为Scur,输入串中的当前符号为C,运行FSA,试图得到下一状态Snext。如果Snext无效,即发生失配,则根据规

2016-03-02 15:03:57 488

转载 Aho-Corasick

1、概述Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。好了,我们先看下最原始的多模式匹配算法:主串T,n=strlen(T)。模式串Pi mi = strlen(p

2016-03-02 15:01:28 475

深入理解计算机系统(3th)随书代码

深入理解计算机系统第三版随书代码,深情分享,共同学习。

2018-03-24

文本挖掘(英文版)

2016-04-03

计算理论试卷答案

计算理论试卷答案

2016-01-03

Lucene创建与搜索索引

Lucene创建与搜索索引。个人做的流程总结。

2015-10-18

算法导论课程表

算法导论课程表,配合算法导论学习,可以功力倍增,事半功倍

2015-09-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除