简介
结巴分词
在自然语言处理中,分词是一个极为重要的基础性工作,结巴分词是中文分词的一种实现。
项目地址:Github。
快速安装方法:easy_install jieba。
余弦相似性定理
根据Cosine similarity - wikipedia可知,对于两个N维向量,我们可以通过求其夹角来判断其相似程度,公式如下:
similarity=cos(θ)=A⋅B∥A∥∥B∥=∑i=1nAi×Bi∑i=1n(Ai)2−−−−−−−√×∑i=1n(Bi)2−−−−−−−√\text{similarity}=\cos(\theta)={A\cdot B\over\|A\|\|B\|}=\frac{ \sum\limits_{i=1}^{n}{A_i \times B_i}}{\sqrt{\sum\limits_{i=1}^{n}{(A_i)^2}}\times \sqrt{\sum\limits_{i=1}^{n}{(B_i)^2}}}
对于两个句子,我们可以根据句子里的词语成分进行统计,将得到的词频看作这个句子所代表的向量,因此就可以应用余弦相似性定理对两个句子进行比较。
我们知道,两个向量夹角越趋于0∘0^{\circ}则越相似,反之,夹角越趋于90∘90^{\circ}则说明方向越不相交,越不相似。
程序
待比较内容
我使用以下两段文字作为比较内容:
1.txt
...
2014年4月24日星期四
2014年4月21日星期一
Posted by Unknown on 星期一, 四月 21, 2014 with No comments
声明
此文章为个人翻译,原文出自:码农周刊。
除非特殊说明,以下代码皆为Python3.4。
译文
Python使用C3算法解决多重继承问题。
根据C3算法,以下代码在处理多重继承的时候,会在class B之前检查class A的同名方法foo。
更多详细信息可以查看大神Guido van Rossum的博客。
In:
class A(object):
def foo(self):
print("class A")
class B(object):
def foo(self):
print("class B")
class C(A, B):
pass
C().foo()
Out:
class A
以上例子显示出class C首先检查其父类class A是否存在方法foo()并尝试调用(因此成功调用了)。
在我收到的一封email中有一个更为巧妙的嵌套例子来阐述Guido van Rossum的观点:
In:
class A(object):
def foo(self):
print("class A")
class B(A):
pass
class C(A):
...
订阅:
博文 (Atom)