03 2016 档案

摘要:1.TF-IDF 昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类。我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的词频,而不是本文章内出现的次数,IDF还是在所有文章里出现的倒文档频率。 原理:1、先给本聚... 阅读全文
posted @ 2016-03-29 20:31 StevenLuke 阅读(732) 评论(0) 推荐(0)
摘要:# -*- encoding:utf-8 -*-from bs4 import BeautifulSoupimport urllibimport urllib.requestimport reUrl = 'https://book.douban.com/latest?icn=index-late... 阅读全文
posted @ 2016-03-29 19:14 StevenLuke 阅读(138) 评论(0) 推荐(0)
摘要:CoreBiGramTableDictionary.java和CoreDictionary.java结构思路 词典里文件的格式:wordA@wordB frequency CoreBiGramTableDictionary.java文件用一个TreeMap>来读取词典。用一... 阅读全文
posted @ 2016-03-28 21:41 StevenLuke 阅读(216) 评论(0) 推荐(0)
摘要:Python搜索路径: 当前目录PythonPathPath,亦即Python的安装路径 阅读全文
posted @ 2016-03-28 13:07 StevenLuke 阅读(127) 评论(0) 推荐(0)
摘要:本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。 注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百度谷歌或维基,what... 阅读全文
posted @ 2016-03-27 15:16 StevenLuke 阅读(110) 评论(0) 推荐(0)
摘要:1. 概述 广义的分类(classification或者categorization)有两种含义:一种含义是有指导的学习(supervised learning)过程,另一种是无指导的学习(unsupervised learning)过程。通常前者称为分类,后者称为聚类(clustering)... 阅读全文
posted @ 2016-03-27 15:11 StevenLuke 阅读(779) 评论(0) 推荐(0)
摘要:摘要 TextRank是一个图排序模型,还是一个非监督方法。可用于关键字提取和短语提取。 TextRank模型 TextRank基于全图,递归获取全局信息,来决定每个顶点的重要性。 其中,d是阻尼系数,通常取0.85。(论文Brin and Page,1998)。 TextRank算法运行结... 阅读全文
posted @ 2016-03-24 22:10 StevenLuke 阅读(575) 评论(0) 推荐(0)
摘要:WM.h #ifndef WM_H#define WM_H#include #include #include#define HASHTABLESIZE (256*256)#define MAXLEN 256typedef struct wm_pattern_struct{ struct wm_... 阅读全文
posted @ 2016-03-21 19:57 StevenLuke 阅读(333) 评论(0) 推荐(0)
摘要:AC-BM算法将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀。匹配时,采取自后向前的方法,并借用BM算法的坏字符跳转(Bad Character Shift)和好前缀跳转(Good Prefix Shift)技术。 ... 阅读全文
posted @ 2016-03-19 19:27 StevenLuke 阅读(334) 评论(0) 推荐(0)
摘要:ACBM算法: ACBM算法是在AC自动机的基础之上,引入了BM算法的多模扩展,实现的高效的多模匹配。和AC自动机不同的是,ACBM算法不需要扫描目标文本串中的每一个字符,可以利用本次匹配不成功的信息,跳过尽可能多的字符,实现高效匹配。 比如:{P} = {her,where,red... 阅读全文
posted @ 2016-03-19 14:10 StevenLuke 阅读(429) 评论(0) 推荐(0)
摘要:在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算法进... 阅读全文
posted @ 2016-03-17 16:20 StevenLuke 阅读(133) 评论(0) 推荐(0)
摘要:Wu-Manber算法采用跳跃不可能匹配字符和hash散列的方法,加速匹配的进行。该方法需要对所有模式进行预处理,构建SHIFT,HASH和PREFIX这3个表。SHIFT表同Boyer-Moore算法里的转移表,用来存储字符集中所有块字符在文本中出现时的转移距离;HASH表用来存储匹配窗... 阅读全文
posted @ 2016-03-16 21:13 StevenLuke 阅读(1611) 评论(0) 推荐(0)
摘要:上一篇文章,我介绍了KMP算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授... 阅读全文
posted @ 2016-03-15 14:16 StevenLuke 阅读(191) 评论(0) 推荐(0)
摘要:在我的《AC算法详解》一文中,还存在一个很大的疏漏,那就是用蛮力法计算自动机的fail跳转表,这实际上是一个极度低效的方法。在Aho,Corasick两人的论文中,给出的是逐层求fail表的方法,两人证明了这个方法可以在O(n)(其中n为所有模式串的总长度和)时间复杂度内计算出模式集合P的fa... 阅读全文
posted @ 2016-03-12 14:04 StevenLuke 阅读(174) 评论(0) 推荐(0)
摘要: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,... 阅读全文
posted @ 2016-03-12 14:03 StevenLuke 阅读(195) 评论(0) 推荐(0)
摘要:之前我的《BM算法详解》一文中有一个巨大的缺憾,就是没能给出计算模式串好后缀跳转表的高效算法。Robert S.Boyer和J Strother Moore两人的论文中,不知什么原因,并没有给出这样的算法,蛮力算法O(n^3)的时间复杂度使得BM算法的实用性大打折扣。实际上线性时间内计算出模... 阅读全文
posted @ 2016-03-12 14:03 StevenLuke 阅读(413) 评论(0) 推荐(0)
摘要:Trie结构是模式匹配中经常用到的经典结构,在字符串处理中发挥着重要的作用,比如分词算法,就会利用Trie结构将分句的已知词条先识别出来,然后再判断剩下的未识别部分是否是新的未知词。 经典的Trie结构如下图所示, 是一个典型的多叉树结构,为了保证用Trie结构进行模式匹配的效率,T... 阅读全文
posted @ 2016-03-12 14:02 StevenLuke 阅读(347) 评论(0) 推荐(0)
摘要:之前我的文章中,介绍了KMP,BM,AC,WM等几个经典的模式匹配算法,本文我将对常用的模式匹配算法做一小结。 模式匹配算法的关系图如下所示: 这里有几个我的文章中暂时没有涵盖的算法,这里做一简要说明。 Rabin-Karp算法,这是一个基于散列值的模式匹配算法,根据散列算法,将长度为... 阅读全文
posted @ 2016-03-12 14:01 StevenLuke 阅读(199) 评论(0) 推荐(0)
摘要:AC算法是Alfred V.Aho(《编译原理》(龙书)的作者),和Margaret J.Corasick于1974年提出(与KMP算法同年)的一个经典的多模式匹配算法,可以保证对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,... 阅读全文
posted @ 2016-03-12 14:00 StevenLuke 阅读(1037) 评论(0) 推荐(0)
摘要:提到多模式匹配算法,就得说一下Wu-Manber算法,其在多模式匹配领域相较于Aho-Corasick算法,就好象在单模式匹配算法中BM算法相较于KMP算法一样,在绝大多数场合,Wu-Manber算法的匹配效率要好于Aho-Corasick算法。这个算法是由吴升(台湾)和他的导师Udi Man... 阅读全文
posted @ 2016-03-12 13:56 StevenLuke 阅读(576) 评论(0) 推荐(0)
摘要:KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳... 阅读全文
posted @ 2016-03-12 13:55 StevenLuke 阅读(242) 评论(0) 推荐(0)
摘要:1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色,下面我们就来详细了解一下这一出色的单模式匹配算法,在此之前推荐读者读一下我的另一篇文章 在讲解Boyer-Mo... 阅读全文
posted @ 2016-03-12 13:53 StevenLuke 阅读(974) 评论(0) 推荐(0)
摘要:怎么准备标题 第一印象很重要:一个标题因此应该在它的限制范围内有明确和精准的定义来表明接下来将要表达什么——T.Clifford Allbutt 标题的重要性 在准备一篇论文的标题时,作者应该记着一个突出的事实:标题会被成千上万的人阅读。 也许很少人会读整个论文,但是很多人会读标题。 ... 阅读全文
posted @ 2016-03-09 15:45 StevenLuke 阅读(225) 评论(0) 推荐(0)
摘要:什么是科技论文写作? 没有发表,科学就死了。——Gerara Piel 科技论文写作的定义 一篇科技论文编写和发表的目的是描述独创的研究结果。这个简短的定义必须被保证,然而,一篇科技论文不必非要像三世纪那样按照一种固定的格式来发布。 为了合适地定义“科技论文”,我们必须定义产生科技论文的机制... 阅读全文
posted @ 2016-03-09 14:22 StevenLuke 阅读(233) 评论(0) 推荐(0)
摘要:科技论文的起源 那些好的科学家努力要消除的,好的艺术家探寻着挑起——神秘,那个对一个人是致命的,对另外的人是至关重要的东西。 ********************************************************************* 我知道我翻译的很渣。 ****... 阅读全文
posted @ 2016-03-08 10:15 StevenLuke 阅读(228) 评论(0) 推荐(0)
摘要:什么是科技论文写作 清晰表达的需求 科技论文写作的关键字是清晰。成功的科学实验是清晰陈述问题和创造性的表达结论的结果。理想化的,清晰应该是任何类型的交流的关键,然而,当某些事情第一次被陈述时,本质要求是清晰。大多数发表在我们的首要研究期刊上的科学论文,都被精确的出版,因为他们确实贡献了新知识... 阅读全文
posted @ 2016-03-07 22:28 StevenLuke 阅读(187) 评论(0) 推荐(0)
摘要:Algorithm copied from Wikipedia.org: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Algorithm ===============================================... 阅读全文
posted @ 2016-03-05 15:46 StevenLuke 阅读(121) 评论(0) 推荐(0)
摘要:简介 AC(Aho-Corasick)算法是一个经典的多模式串匹配算法,它借鉴了KMP算法的思想,可以由有限状态机(Finite State Automata:FSA)来表示。AC算法的基本原理是: 先根据多模式串建立一个有限状态自动机FSA,在进行模式匹配时,设当前状态为Scur,输入串... 阅读全文
posted @ 2016-03-02 15:03 StevenLuke 阅读(181) 评论(0) 推荐(0)
摘要:1、概述 Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转化为了状态转移。此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个是时间复杂度为O(n),时间复杂度与关键字的数目和长度无关。 好了,我们先看下最原始的多模式... 阅读全文
posted @ 2016-03-02 15:01 StevenLuke 阅读(242) 评论(0) 推荐(0)