WordNet 是普林斯顿大学的一个研究项目,目标是建立英语词汇及其词法关系的数据库。这样的工具可以为 XML 语义应用程序建立很好的基础,比如 Uche Ogbuji 在本专栏以前文章中所提到的能识别同义词的搜索的例子。本期文章中他回顾了基本原理,给出了查询 XML 文档格式的 WordNet 2.0 的代码,这是构建更通用的 XML WordNet 应用程序的第一步。
我曾经在以前的一期文章中提到过 WordNet,主要讨论了在 RDF 格式中的应用。从那以后,又发生了很多变化:WordNet 项目从 1.7 版发展到了 2.0 版,词汇的分类有一些细微的变化;以前讨论的 RDF 表示仍然停留在 WordNet 1.6 ;其间 2.0 版发生了一些变化,不能保持以前所有版本的向后兼容性。
随着越来越多的开发人员开始关注解决语义透明性问题的方法——这也是整个 Thinking XML 专栏的核心,语义 Web 技术悄然成为主流。在这一领域,更多地讨论从这类技术的实用性转移到了最佳实践和应用程序接口问题。一些有兴趣的团体,包括我本人,继续寻找利用语义 Web 技术但又不把一切都明确用 RDF 序列化编码的方法。WordNet 是一个很大的基于数据的项目,数据的基础都有非常严格的定义。其应用也非常广泛。(以前的文章中我曾经介绍过如何使用 WordNet 为特定的应用程序搜索功能增加更多的智能。)因此,它也不可避免地成为了关于应用语义 Web 技术的讨论焦点。
我们将通过一系列文章来重新考察 WordNet 2.0 及其在 XML 和 RDF 技术中的应用,这是第一部分。
建立 WordNet 基础设施
很多 WordNet 项目由于过时的数据版本而日渐衰微,很多情况是因为没有解决数据库格式的转化问题。我认为,这正说明了讨论可重用的创建格式方法的必要性,比如 XML WordNet 文件(可能包括 XML/RDF)。一种好办法是编写代码,从喜欢的编程语言中利用访问 WordNet 数据库的很多项目。对于我而言,这种语言自然就是 Python。在 Python 中有两个适用于 WordNet 的 Python 项目,PyWN 是其中的一个,它也是基于老版本的,因此我选择使用 PyWordNet(请参阅参考资料)。我已经安装了 Python 2.4, 下载 PyWordNet 2.0.1 之后使用 python setup.py install 安装它。
PyWordNet 没有附带 WordNet 数据库文件,这些文件必须单独下载。不需要构建 WordNet 包,只要将下载的文件解压到适当位置就足够了。PyWordNet 需要的文件放在 dict 子目录中。 PyWordNet 在 WNHOME 环境变量所指定的位置查找 WordNet 文件,如果没有在 UNIX 机器上指定该变量,则在默认位置 /usr/local/wordnet2.0 中查找。设置好这些之后,可以运行 python -c "from wntools import *" 看看是否正常。我在运行中发现了 4 个以下显然无害的错误消息: