4 Aug

文本情感分类(二):深度学习模型

语言处理

语言处理

《文本情感分类(一):传统模型》一文中,笔者简单介绍了进行文本情感分类的传统思路。传统的思路简单易懂,而且稳定性也比较强,然而存在着两个难以克服的局限性:一、精度问题,传统思路差强人意,当然一般的应用已经足够了,但是要进一步提高精度,却缺乏比较好的方法;二、背景知识问题,传统思路需要事先提取好情感词典,而这一步骤,往往需要人工操作才能保证准确率,换句话说,做这个事情的人,不仅仅要是数据挖掘专家,还需要语言学家,这个背景知识依赖性问题会阻碍着自然语言处理的进步。

点击阅读全文...

14 Sep

《量子力学与路径积分》习题解答V0.1

忘了告诉大家,笔者是师范生,目前大四了,按照计划,我已经在一所高中实习了,因此,这两个月更新可能不怎么多,回复也不及时,请大家见谅。

趁这两个月时间,每天做一点《量子力学与路径积分》中的习题,整理与大家分享。目前是V0.1版,暂时只有第二三章的大部分习题解答。

《量子力学与路径积分》习题解答

《量子力学与路径积分》习题解答

点击阅读全文...

17 Oct

《量子力学与路径积分》习题解答V0.2

由于在实习中,事情比较多,做题时间比较少。并且越往后题目难度越大,因此习题解答的更新速度也慢了。现在是0.2版本,基本完成了前五章的习题,并且整理了版面,还加入了新版《量子力学与路径积分》的勘误。

如有问题,请指出,谢谢。

下载:《量子力学与路径积分》习题解答V0.2.pdf

21 Oct

把Python脚本放到手机上定时运行

毫无疑问,数据是数据分析的基础,而对于我等平民来说,获取大量数据的方式自然是通过爬虫采集,而对于笔者来说,写爬虫最自然的方式就是用Python写了。短短几行代码,就可以完成一个实用的爬虫,多清爽。(请参考:《记录一次爬取淘宝/天猫评论数据的过程》

爬虫要住在哪里?

接下来的一个问题是,这个爬虫放到哪里运行?为了爬取每天更新的数据,往往需要每天都要运行一次爬虫,特别地,是在某个点定时运行。这样的话,老挂在自己的电脑运行是不大现实,因为自己的电脑总有关机的时候。也许有读者会想到放在云服务器里边,这是个方法,但是需要额外的成本。受到小虾大神的启发,我开始想把它放到路由器里边运行,某些比较好的路由器是可以外接U盘,且可以刷open-wrt系统的(一个Linux内核的路由器系统,可以像普通Linux那样装Python)。这对我来说是一种很吸引人的做法,但是我对Linux环境下的编译并不熟悉,尤其是路由器环境下的操作;另外路由器配置很低,一般都只是16M闪存、64M内存,如果没有耐心,那么是很难受得了的。

点击阅读全文...

9 Jan

《量子力学与路径积分》习题解答V0.4

流年

流年

《量子力学与路径积分》的习题解答终于艰难地推进到了0.4版本,目前已经基本完成了前7章的习题。

今天已经是2016年1月9号了,2015年已经远去,都忘记跟大家说一声新年快乐了,实在抱歉。在这里补充一句:祝大家新年快乐,事事如意!

笔者已经大四了,现在是临近期末考,又临近毕业。最近忙的事情有很多,其中之一是我加入了一个互联网小公司的创业队伍中,负责文本挖掘,偶尔也写写爬虫,等等,感觉自己进去之后,增长了不少见识,也增加了不少技术知识,较之我上一次实习,又有不一样的高度。现在里边有好几样事情排队着做,可谓忙得不亦悦乎了。还有,我也开始写毕业论文了,早点写完能够多点时间,学学自己喜欢的东西,毕业论文我写的是路径积分相关的内容,自我感觉写得还是比较清楚易懂的,等时机成熟了,发出来,向大家普及路径积分^_^。此外,每天做点路径积分的习题,也要消耗不少时间,有些比较难的题目,基本一道就做几个早上才能写出比较满意的答案。总感觉想学的想做的事情有很多,可是时间很少。

点击阅读全文...

25 Jun

OCR技术浅探:6. 光学识别

经过第一、二步,我们已经能够找出图像中单个文字的区域,接下来可以建立相应的模型对单字进行识别.

模型选择

在模型方面,我们选择了深度学习中的卷积神经网络模型,通过多层卷积神经网络,构建了单字的识别模型.

卷积神经网络是人工神经网络的一种,已成为当前图像识别领域的主流模型. 它通过局部感知野权值共享方法,降低了网络模型的复杂度,减少了权值的数量,在网络结构上更类似于生物神经网络,这也预示着它必然具有更优秀的效果. 事实上,我们选择卷积神经网络的主要原因有:

1. 对原始图像自动提取特征 卷积神经网络模型可以直接将原始图像进行输入,免除了传统模型的人工提取特征这一比较困难的核心部分;

2. 比传统模型更高的精度 比如在MNIST手写数字识别任务中,可以达到99%以上的精度,这远高于传统模型的精度;

3. 比传统模型更好的泛化能力 这意味着图像本身的形变(伸缩、旋转)以及图像上的噪音对识别的结果影响不明显,这正是一个良好的OCR系统所必需的.

点击阅读全文...

29 Jun

文本情感分类(三):分词 OR 不分词

去年泰迪杯竞赛过后,笔者写了一篇简要介绍深度学习在情感分析中的应用的博文《文本情感分类(二):深度学习模型》。虽然文章很粗糙,但还是得到了不少读者的反响,让我颇为意外。然而,那篇文章中在实现上有些不清楚的地方,这是因为:1、在那篇文章以后,keras已经做了比较大的改动,原来的代码不通用了;2、里边的代码可能经过我随手改动过,所以发出来的时候不是最适当的版本。因此,在近一年之后,我再重拾这个话题,并且完成一些之前没有完成的测试。

为什么要用深度学习模型?除了它更高精度等原因之外,还有一个重要原因,那就是它是目前唯一的能够实现“端到端”的模型。所谓“端到端”,就是能够直接将原始数据和标签输入,然后让模型自己完成一切过程——包括特征的提取、模型的学习。而回顾我们做中文情感分类的过程,一般都是“分词——词向量——句向量(LSTM)——分类”这么几个步骤。虽然很多时候这种模型已经达到了state of art的效果,但是有些疑问还是需要进一步测试解决的。对于中文来说,字才是最低粒度的文字单位,因此从“端到端”的角度来看,应该将直接将句子以字的方式进行输入,而不是先将句子分好词。那到底有没有分词的必要性呢?本文测试比较了字one hot、字向量、词向量三者之间的效果。

模型测试

本文测试了三个模型,或者说,是三套框架,具体代码在文末给出。这三套框架分别是:

1、one hot:以字为单位,不分词,将每个句子截断为200字(不够则补空字符串),然后将句子以“字-one hot”的矩阵形式输入到LSTM模型中进行学习分类;

2、one embedding:以字为单位,不分词,,将每个句子截断为200字(不够则补空字符串),然后将句子以“字-字向量(embedding)“的矩阵形式输入到LSTM模型中进行学习分类;

3、word embedding:以词为单位,分词,,将每个句子截断为100词(不够则补空字符串),然后将句子以“词-词向量(embedding)”的矩阵形式输入到LSTM模型中进行学习分类。

点击阅读全文...

1 Jul

从Boosting学习到神经网络:看山是山?

前段时间在潮州给韩师的同学讲文本挖掘之余,涉猎到了Boosting学习算法,并且做了一番头脑风暴,最后把Boosting学习算法的一些本质特征思考清楚了,而且得到一些意外的结果,比如说AdaBoost算法的一些理论证明也可以用来解释神经网络模型这么强大。

AdaBoost算法

Boosting学习,属于组合模型的范畴,当然,与其说它是一个算法,倒不如说是一种解决问题的思路。以有监督的分类问题为例,它说的是可以把弱的分类器(只要准确率严格大于随机分类器)通过某种方式组合起来,就可以得到一个很优秀的分类器(理论上准确率可以100%)。AdaBoost算法是Boosting算法的一个例子,由Schapire在1996年提出,它构造了一种Boosting学习的明确的方案,并且从理论上给出了关于错误率的证明。

以二分类问题为例子,假设我们有一批样本$\{x_i,y_i\},i=1,2,\dots,n$,其中$x_i$是样本数据,有可能是多维度的输入,$y_i\in\{1,-1\}$为样本标签,这里用1和-1来描述样本标签而不是之前惯用的1和0,只是为了后面证明上的方便,没有什么特殊的含义。接着假设我们已经有了一个弱分类器$G(x)$,比如逻辑回归、SVM、决策树等,对分类器的唯一要求是它的准确率要严格大于随机(在二分类问题中就是要严格大于0.5),所谓严格大于,就是存在一个大于0的常数$\epsilon$,每次的准确率都不低于$\frac{1}{2}+\epsilon$

点击阅读全文...