<p>C#实现在:</p>
<p><a href="http://blog.csdn.net/Felomeng/archive/2009/03/25/4023990.aspx">http://blog.csdn.net/Felomeng/archive/2009/03/25/4023990.aspx</a></p>
<p>向量空间模型(VSM:<strong>Vector space model</strong>)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理。</p>
<p>假设共有十个词:w<sub>1</sub>,w<sub>2</sub>,......,w<sub>10</sub>,而共有三篇文章,d<sub>1</sub>,d<sub>2</sub>和d<sub>3</sub>。统计所得的词频表(杜撰的,为了便于演示用法)如下:</p>
<table border="1" cellspacing="0" cellpadding="0"><tbody>
<tr>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>w<sub>1</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>2</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>3</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>4</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>5</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>6</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>7</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>8</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>9</sub></p>
</td>
<td width="54" valign="top">
<p>w<sub>10</sub></p>
</td>
</tr>
<tr>
<td width="54" valign="top">
<p>d<sub>1</sub></p>
</td>
<td width="54" valign="top">
<p>1</p>
</td>
<td width="54" valign="top">
<p>2</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>5</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>7</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>9</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
</td>
</tr>
<tr>
<td width="54" valign="top">
<p>d<sub>2</sub></p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>3</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>4</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>6</p>
</td>
<td width="54" valign="top">
<p>8</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
</td>
</tr>
<tr>
<td width="54" valign="top">
<p>d<sub>3</sub></p>
</td>
<td width="54" valign="top">
<p>10</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>11</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>12</p>
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
</td>
<td width="54" valign="top">
<p>13</p>
</td>
<td width="54" valign="top">
<p>14</p>
</td>
<td width="54" valign="top">
<p>15</p>
</td>
</tr>
</tbody></table>
<p>常用的向量空间公式见下图:</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/Felomeng/EntryImages/20090413/gss.jpg" alt="" width="598" height="364"></p>
<p>假设计算d<sub>1</sub>和d<sub>2</sub>的相似度,那么a<sub>i</sub>和b<sub>i</sub>分别表示d<sub>1</sub>和d<sub>2</sub>中各个词的词频,我们以Cosine为例:</p>
<p><img src="http://p.blog.csdn.net/images/p_blog_csdn_net/Felomeng/EntryImages/20090413/gs.jpg" alt="" width="671" height="68"></p>
<p>(得数请读者自己计算,各个数代表什么从上表中可以轻易看出)</p>
<p>为什么叫向量空间模型呢?其实我们可以把每个词给看成一个维度,而词的频率看成其值(有向),即向量,这样每篇文章的词及其频率就构成了一个i维空间图,两个文档的相似度就是两个空间图的接近度。假设文章只有两维的话,那么空间图就可以画在一个平面直角坐标系当中,读者可以假想两篇只有两个词的文章画图进行理解。</p>
<p>我们看到,上面公式的计算量是很大的,尤其当文档中词数量巨大时。那么怎么样来提高运算的效率呢?我们可以采取降维的方法。其实只要理解了向量空间模型原理,就不难理解降维的概念。所谓降维,就是降低维度。具体到文档相似度计算,就是减少词语的数量。常见的可用于降维的词以功能词和停用词为主(如:"的","这"等),事实上,采取降维的策略在很多情况下不仅可以提高效率,还可以提高精度。这也不难理解,比如下面两句话(可能举地不是特别恰当,见谅):</p>
<ol>
<li>这是我的饭。</li>
<li>那是你的饭。</li>
</ol>
<p>如果把"这"、"那"、"你"、"我"、"是"、"的"都当功能词处理掉,那么相似度就是100%。如果都不去掉,相似度可能只有60%。而这两句话的主题显示是一样的。</p>
<p>倒排词频平滑(Inverse Document Frequency)方法,就是用整个语料中所有词语的词频来调整某篇语料中词语的权重,可以理解为把某篇内词语的频率与全局词频相乘后再代入公式(因为相似度是个相对值,所以只要保证它的值落在0和1之间即可)。</p>
<p>这是一个简单的向量空间模型,实际应用中使用的见《<a href="http://blog.csdn.net/Felomeng/archive/2009/04/09/4059128.aspx" target="_blank">改进向量空间模型</a>》。</p>
分享到:
相关推荐
简单向量空间模型可用于文档相似度的计算,也可以用于检索信息,配有详细的注释
利用java代码实现向量空间模型,通过词频,文档频率计算相似度的值。
文本相似度的计算作为其他文本信息处理的基础和关键,其计算准确率和...另一方面,利用特征项在特征选择阶段的权重对TDIDF方法进行加权处理,在不增加开销的情况下扩大了文档集的规模,还提高了相似度计算的精确度。
VSM向量空间模型 VSM向量空间模型(Vector Space Model)是一种常用的文本表示方法,由Salton等人于20世纪70年代提出。该模型将文本内容处理简化为向量空间中的向量运算,并以空间上的相似度表达语义的相似度。 在...
使用向量空间模型以最快速度计算文本之间的相似度,JAVA源码+数据
向量空间模型(VSM)的JAVA实现,从文档表示到相似度计算,使用两种相似度计算方式:cos和tf-idf算法
针对VSM不能揭示隐藏在不同特征词后面的相同概念语义、反映文档中的潜在语义关系、在相似度计算中精度较低的问题, 提出一种基于领域本体的文档向量空间模型DOBVSM(domain ontology-based vector space model)。...
本系统基于 C#语言和数据库技术,采用著名的向量空间模型 VSM 方法,对文本分 词、词频统计及相似度计算三大功能进行模块化的设计,条理清晰,实现了文档相似度的 计算,对检测学生的抄袭行为有很大的实用价值。
针对VSM不能揭示隐藏在不同特征词后面的相同概念语义、反映文档中的潜在语义关系、在相似度计算中精度较低的问题, 提出一种基于领域本体的文档向量空间模型DOBVSM(domain ontology-based vector space model)。...
传统的机器学习方法大多是采用文本向量空间模型(Vector Space Model, VSM)结合机器学习分类器实现短文本分类。张野等[1]采用互信息、交叉熵、卡方分布、文本证据权重等方法提取文本特征,得到文本的向量表示,然后...
在结构化链接矢量模型(SLVM)的基础上,提出了一种优化的缩减结构化矢量空间模型(RS-VSM),可以将结构信息更有效地合并到特征矢量中,并优化文档相似度的计算。 与传统的学习机(例如,支持向量机)相比,我们将...
针对传统话题检测方法不能很好处理微博中用语不规范、随意性强、指代不明确以及存在大量网络用语的问题,提出了一种基于...然后,利用该“贡献度”作为空间向量模型(VSM)改进后的参数值计算文档间相似度来提取突发话题