我在 python 中编写了一个程序来使用 word net 查找单词之间的语义相似性。但我觉得它是静态的。我想给它一个动态的方法。我想从维基百科访问每个单词的定义。我怎样才能访问这样一个词的定义?当我用谷歌搜索时,我发现通过解析维基百科转储文件我们可以获得定义。但我不知道如何解析。是否有人可以实现解析器以从转储文件中获取单词的定义。这是唯一的方法吗?方法是真的。
2 回答
你不需要重新发明轮子。怀卡托大学的研究人员建立了一个非常好的维基百科数据挖掘服务,称为WikipediaMiner。
这个包将常规的 Wikipedia 转储转换为 MySql 数据库格式,并提供对 Wikipedia 部分(如文章、消歧页面和超链接)的面向对象的访问。Wikipedia Miner 还实现了一种算法,用于计算文章之间的语义相关性,Maui使用该算法来消除文档与 Wikipedia 文章之间的歧义,并用于计算语义特征。
除此之外,他们还公开了各种 API。例如,如果您想获取 的定义,Logistic Regression
只需使用它们的exploreArticle
API:
响应 xml 如下所示:
<message service="/services/exploreArticle" id="226631" title="Logistic regression">
<request>
<param name="title">logistic regression</param>
<param name="definition">true</param>
</request>
<definition><![CDATA[In <a href="http://www.en.wikipedia.org/wiki/Statistics">statistics</a>, <b>logistic regression</b> (sometimes called the <b>logistic model</b> or <b><a href="http://www.en.wikipedia.org/wiki/Logit">logit</a> model</b>) is used for prediction of the <a href="http://www.en.wikipedia.org/wiki/Probability">probability</a> of occurrence of an event by fitting data to a logit function <a href="http://www.en.wikipedia.org/wiki/Logistic function">logistic curve</a>.]]>
</definition>
</message>
要比较单词之间的语义相似度,你可以试试他们的compare
API。
例如,与 相比kiwi
,takahe
您使用以下 API 调用:
以下是有关他们用于相关性度量的算法的更多详细信息。
您还可以托管您自己的 wikipediaMiner 服务(详情请点击此处)。在这里找到更多关于如何使用他们的服务的信息。他们的相关出版物在这里。
我认为您实际上是在寻找同义词库,而不是维基百科。其中一些可作为机器可读的语料库使用。然而,我不得不承认,文本定义似乎不是确定单词相似度的良好信息来源,除非在某些特殊情况下。
这些是关于单词相似性度量的大量工作,因此与其重新发明轮子,不如研究最先进的技术和/或工具。维基百科提到了其中一些。