使用“向量空间搜索引擎”做字符识别

发表于 Python, 程序语言 2017-02-09 阅读数: 109

参考文档:http://ondoc.logand.com/d/2697/pdf

不要被这标题吓到了,其实核心内容非常简单。

如果我们想要确认验证码是什么,就要有一个识别图片字符的过程。我们这里使用向量空间搜索引擎进行识别。

参考文档中举了一个例子。三篇文章中cat,dog,mouse出现的频率分别是(3,1,4),(1,2,5),(2,3,0).那怎么计算哪两篇比较相似呢?

参考文档给了一个解决方案是将文章cat、dog、mouse出现的频率看做“向量”,然后计算两个向量之间的余弦值(cos),越接近1则越相似。

cos<文章1,文章2> = 0.895

cos<文章2,文章3> = 0.405

cos<文章1,文章3> = 0.490

因此可以看出文章1和文章2更相似。

把它转化成python代码:

class VectorCMP:

    def ValueOfVector(self,Vector):

        total = 0.0

        for count in Vector.items():

            total = total + count ** 2

        return math.sqrt(total)

    def relation(self,Vector1,Vector2):

        DotProduct = 0

        for word,count in Vector1.items():

            if word in Vector2:

                DotProduct = DotProduct + count * Vector2[word]

        return DotProduct/(self.ValueOfVector(Vector1) * self.ValueOfVector(Vector2))

这样就可以用于各种向量空间的比较了。包括下次要讲的验证码识别。

源代码已经上传到公众号的github项目。以后公众号的源代码及图片都能在这里找到:https://github.com/Ckend/GongZhongHao

欢迎关注微信公众号:幻象客www.huanxiangke.com

幻象客 二维码

Add comment