如果你看的比较困惑的话,可以参考
Python 实现字符识别—Part1:关于PIL库的使用
http://www.jianshu.com/p/0a94d8ea2bf3
Python 实现字符识别—Part2:关于图形格式的基础知识和我的一个问题(欢迎大神来指点迷津)
http://www.jianshu.com/p/252ff113d1d0
Python 实现字符识别—Part3:关于完成验证码识别的前置操作,字符的提取和图像的分割
http://www.jianshu.com/p/4ff1559c1cf6
Python 实现字符识别—Part4 : 关于空间向量搜索算法paper的介绍
http://www.jianshu.com/p/b13b3905cc7d
Python 实现字符识别—Part5:关于使用空间向量搜索算法实现字符识别
http://www.jianshu.com/p/1905bf78f0bd
完成了字符的切分之后,下面就到了字符的识别。字符识别的方法有很多种,机器学习,深度学习,神经网络等。
下面要写得是通过特征向量来做的字符识别,主要是通过《Basic Vector Space Search Engine Theory》(基本向量空间搜索引擎)这篇文章提出的方法。
文章的下载连接:http://ondoc.logand.com/d/2697/pdf
举个例子,来简单的概括一下这篇paper:
如果比较两个html网页的相似度(这应该是 谷歌提出的Page Rank算法系列里面的一个算法,用来解决网页相似度的问题)。比如在做搜索引擎的时候,经常会遇到爬虫 爬到两个不同的url,指向同一个网页。
在处理这些网页的时候,很重要的一个算法就是去重。去除内容相同的网页,或者是类似的网页。这样就需要一个提出一种机制来衡量 两个网页的相似度。这篇文章,简单的概括就是讲这个的。
举个例子
网页1 :
<html>
<h1> write the code ,change the world </h1>
</html>
网页2:
<html>
<h1> copy the code ,paste the code </h1>
</html>
首先这个算法得出 term space (这个不知道怎么翻译,就不翻译了)
- 去除网页种的html标签
- 合并相同的单词,比如‘running’,‘runer’,‘runs’ (缩小向量空间的大小)
- 删除stop word,比如‘the’ (因为这些词并不会改变语义)
- 统计term space 出现的次数
那么这样网页1的term space 是 (write ,code,change,world),出现的次数是(1,1,1,1)
网页2的term space 是(copy ,code , paste),出现的次数是(1,2,1)
所以,
网页1的向量是 v1=(1,1,1,0,1,0)
网页2的向量是 v2=(0,0,2,1,0,1)
这是时候,网页3来了,要比较和他网页1和网页2的相似度
网页3的内容是
<html>
<h1> copy the code ,paste</h1>
</html>
那么网页3的向量是 Q=(0,0,1,1,0,1)
下面,通过这个公式来计算相似度:
网页3和网页1的计算结果是:0.28
网页3和网页2的计算结果是:0.943
所以,网页3和网页2相似度更高。 这个就是 向量空间搜索的方法。但是这个方法的有点是
不需要大量的训练迭代;不会过拟合;可以查看测试集合和所有训练集的拟合度;
缺点:慢。如果训练集很大的话,比其他深度学习的方法要慢很多。
下一篇文章应该写得是,关于向量空间搜索的算法在字符识别上面的应用。
Python 实现字符识别—Part1
http://www.jianshu.com/p/0a94d8ea2bf3
Python 实现字符识别—Part2
http://www.jianshu.com/p/252ff113d1d0
Python 实现字符识别—Part3
http://www.jianshu.com/p/4ff1559c1cf6
Python 实现字符识别—Part4
http://www.jianshu.com/p/b13b3905cc7d
Python 实现字符识别—Part5
http://www.jianshu.com/p/1905bf78f0bd