摘要: 从2014年8月开始在博客园写博客,至今已经积累了82篇,集中在机器学习、NLP、数据结构与算法、大数据、编程语言等方面。在此做个总结,以后还会陆续更新…… 1. 机器学习 【十大经典数据挖掘算法】系列: 1. "C4.5" 2. "K Means" 3. "SVM" 4. "Apriori" 5.阅读全文
posted @ 2017-03-22 08:52 Treant 阅读(599) 评论(4) 编辑
摘要: 1. 介绍 "thulac4j" 是THULAC的Java 8工程化实现,相比于官方版THULAC Java,我们做了如下工作: 1. 规范化分词词典,并去掉一些无用词; 2. 重写DAT(双数组Trie树)的构造算法,生成的DAT size减少了8%左右,从而节省了内存; 3. 优化分词算法,提高阅读全文
posted @ 2017-03-09 17:04 Treant 阅读(665) 评论(10) 编辑
摘要: 为了记录在竞赛中入门深度学习的过程,我开了一个新系列【从传统方法到深度学习】。 1. 问题 Kaggle竞赛 "Bag of Words Meets Bags of Popcorn" 是电影评论(review)的情感分析,可以视作为短文本的二分类问题(正向、负向)。标注数据集长这样: 评价指标是AU阅读全文
posted @ 2017-05-24 16:54 Treant 阅读(167) 评论(0) 编辑
摘要: 从3月中旬开始准备换工作,陆陆续续面了五六家公司,到现在终于尘埃落定了,借本文简单地梳理一下面试经历。目标城市定在杭州,所以下面都是杭州的岗位啦。 挖财 挖财算是杭州第二大的互联网金融公司。本人比较早就知道挖财这家公司的,因为我是看挖财的Scala大神王宏江的文章长大的。面试是范大哥内推的,面的岗位阅读全文
posted @ 2017-04-17 16:56 Treant 阅读(181) 评论(0) 编辑
摘要: 1. 什么是新词 现在大部分的分词工具已经做到了准确率高、粒度细,但是对于一些新词(new word)却不能做到很好地识别,比如: 快的打车优惠券 英雄联盟怎么不可以打排位 “快的”、“英雄联盟”应该被作为一个词,却被切成了两个词,失去了原有的语义。未登录词(out of vocabulary, O阅读全文
posted @ 2017-04-12 15:43 Treant 阅读(425) 评论(0) 编辑
摘要: 1. 排序 排序(sort)是一种常见的算法,把数据根据特定的顺序进行排列。经典的排序算法如下: 冒泡排序(bubble sort) 插入排序(insertion sort) 选择排序(selection sort) 快速排序(quick sort) 堆排序(heap sort) 归并排序(merg阅读全文
posted @ 2017-04-10 10:59 Treant 阅读(73) 评论(0) 编辑
摘要: 很久以前,我用过 "TFIDF" 做过行业关键词提取。TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息。现在本文将介绍一种考虑了相邻词的语义关系、基于图排序的关键词提取算法TextRank。 1. 介绍 TextRank由Mihalcea与Tarau于EMNLP'04 "1]提出来,阅读全文
posted @ 2017-03-27 13:06 Treant 阅读(418) 评论(0) 编辑
摘要: 从2014年8月开始在博客园写博客,至今已经积累了82篇,集中在机器学习、NLP、数据结构与算法、大数据、编程语言等方面。在此做个总结,以后还会陆续更新…… 1. 机器学习 【十大经典数据挖掘算法】系列: 1. "C4.5" 2. "K Means" 3. "SVM" 4. "Apriori" 5.阅读全文
posted @ 2017-03-22 08:52 Treant 阅读(599) 评论(4) 编辑
摘要: "FNLP" 是由Fudan NLP实验室的邱锡鹏老师开源的一套Java写就的中文NLP工具包,提供诸如分词、词性标注、文本分类、依存句法分析等功能。 【开源中文分词工具探析】系列: 1. "中文分词工具探析(一):ICTCLAS (NLPIR)" 2. "中文分词工具探析(二):Jieba" 3.阅读全文
posted @ 2017-03-16 14:29 Treant 阅读(640) 评论(2) 编辑
摘要: 1. 介绍 "thulac4j" 是THULAC的Java 8工程化实现,相比于官方版THULAC Java,我们做了如下工作: 1. 规范化分词词典,并去掉一些无用词; 2. 重写DAT(双数组Trie树)的构造算法,生成的DAT size减少了8%左右,从而节省了内存; 3. 优化分词算法,提高阅读全文
posted @ 2017-03-09 17:04 Treant 阅读(665) 评论(10) 编辑
摘要: "THULAC" 是一款相当不错的中文分词工具,准确率高、分词速度蛮快的;并且在工程上做了很多优化,比如:用DAT存储训练特征(压缩训练模型),加入了标点符号的特征(提高分词准确率)等。 【开源中文分词工具探析】系列: 1. "中文分词工具探析(一):ICTCLAS (NLPIR)" 2. "中文分阅读全文
posted @ 2017-02-22 15:57 Treant 阅读(734) 评论(0) 编辑
摘要: 结构化感知器(Structured Perceptron, SP)是由Collins "1]在EMNLP'02上提出来的,用于解决序列标注的问题。中文分词工具[THULAC" 、 "LTP" 所采用的分词模型便是基于此。 1. 结构化感知器 模型 "CRF" 全局化地以最大熵准则建模概率$P(Y|X阅读全文
posted @ 2017-02-19 17:03 Treant 阅读(242) 评论(0) 编辑
摘要: 1. 链表 数组是一种顺序表,index与value之间是一种顺序映射,以$O(1)$的复杂度访问数据元素。但是,若要在表的中间部分插入(或删除)某一个元素时,需要将后续的数据元素进行移动,复杂度大概为$O(n)$。链表(Linked List)是一种链式表,克服了上述的缺点,插入和删除操作均不会引阅读全文
posted @ 2017-02-10 13:05 Treant 阅读(297) 评论(0) 编辑
摘要: 1. 数组 直观地看,数组(Array)为一个二元组``的集合——对于每一个index,都有一个value与之对应。C语言中,以“连续的存储单元”实现数组: 数组提供以$O(1)$的复杂度访问元素,下标从0开始。但是,数组的插入、删除操作却非常耗时,因为这涉及到了元素间的移动。 常见的矩阵,可用二维阅读全文
posted @ 2017-02-08 14:51 Treant 阅读(223) 评论(0) 编辑
摘要: 我准备开始一个新系列【LeetCode题解】,用来记录刷题,顺便复习一下数据结构与算法。 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点——左孩子结点与右孩子结点。C实现的二叉树: DFS DFS的思想非常朴素:根据结点的连接关系,依次访问每一阅读全文
posted @ 2017-01-25 13:33 Treant 阅读(263) 评论(0) 编辑
摘要: Top K问题在数据分析中非常普遍的一个问题(在面试中也经常被问到),比如: 从20亿个数字的文本中,找出最大的前100个。 解决Top K问题有两种思路, 最直观:小顶堆(大顶堆 最小100个数); 较高效:Quick Select算法。 LeetCode上有一个问题 "215. Kth Larg阅读全文
posted @ 2017-01-21 10:54 Treant 阅读(260) 评论(0) 编辑
摘要: 1. 前言 随机森林 Random Forests (RF) 是由Breiman "1]提出的一类基于决策树[CART" 的集成学习(ensemble learning)。论文 [5] 在121数据集上比较了179个分类器,效果最好的是RF,准确率要优于基于高斯核SVM和多项式LR。RF自适应非线性阅读全文
posted @ 2017-01-18 11:19 Treant 阅读(260) 评论(0) 编辑
摘要: 原本准备在元旦写完『2016年总结』,因为个人事(lan)情(duo)而未写完。最近手头不是太忙,正好补完吧,算是给工作第二个年头的纪念。 1. 2016总结 先给个简短的总结: 1. 写了 52 篇博客,主要集中在大数据、机器学习、Java、Python; 2. 读了一些书,工作后自己的读书习惯发阅读全文
posted @ 2017-01-16 16:57 Treant 阅读(236) 评论(4) 编辑
摘要: 在提出基于滑动窗口的LZ77算法后,两位大神Jacob Ziv与Abraham Lempel于1978年在发表的论文 [1]中提出了LZ78算法;与LZ77算法不同的是LZ78算法使用动态树状词典维护历史字符串。 "【数据压缩】LZ77算法原理及实现" "【数据压缩】LZ78算法原理及实现" 1. 阅读全文
posted @ 2017-01-13 16:37 Treant 阅读(470) 评论(0) 编辑
摘要: "Ansj" 是由孙健(ansjsun)开源的一个中文分词器,为 "ICTLAS的Java版本" ,也采用了Bigram + HMM分词模型(可参考我之前写的 "文章" ):在Bigram分词的基础上,识别未登录词,以提高分词准确度。虽然基本分词原理与ICTLAS的一样,但是Ansj做了一些工程上的阅读全文
posted @ 2017-01-11 19:21 Treant 阅读(982) 评论(0) 编辑
摘要: 双数组Trie树(Double array Trie, DAT)是由三个日本人提出的一种Trie树的高效实现 [1],兼顾了查询效率与空间存储。Ansj便是用DAT(虽然作者宣称是三数组Trie树,但本质上还是DAT)构造词典用作初次分词,极大地节省了内存占用。本文将简要地介绍DAT,并实现了基于D阅读全文
posted @ 2017-01-09 14:49 Treant 阅读(1178) 评论(0) 编辑
摘要: 【开源中文分词工具探析】系列: 1. "中文分词工具探析(一):ICTCLAS (NLPIR)" 2. "中文分词工具探析(二):Jieba" 3. "中文分词工具探析(三):Ansj" 4. "开源中文分词工具探析(四):THULAC" 5. "开源中文分词工具探析(五):FNLP" 1. 前言 阅读全文
posted @ 2016-12-29 18:08 Treant 阅读(859) 评论(0) 编辑