从 WordNet 站点链接到的 PHP 扩展非常陈旧且过时——它声称可以与 PHP4 一起使用,所以我认为它已经多年没有人关注了。
没有任何其他 API 可用于 WordNet->PHP,所以我推出了自己的解决方案。
WordNet 可以从命令行运行,所以 PHP 的 shell_exec() 函数可以读取输出。
如果您从命令行(cd 到 Wordnet 的目录,然后只需 wn)不带任何参数运行 WordNet,它将显示 Wordnet 支持的可能功能列表。
仍然在命令行中,如果您随后尝试其中一个/一些功能,您将看到 Wordnet 如何输出其结果。例如,如果您想要单词“star”的同义词,您可以尝试-synsn 函数:
wn star -synsn
这将产生看起来有点像这样的输出:
名词star的同义词/上位词(按估计频率排序)
八种感觉
感觉 1 星
=> 天体,天体
Sense 2 王牌、行家、冠军、感觉、行家、专家、大师、天才、能手、明星、超级明星、神童、神童、巫师、奇才
=> 专家
感觉 3 星
=> 天体,天体
感觉 4 星
=> 平面图,二维图
Sense 5 星,校长,领导
=> 演员、演员、演员、演员、角色扮演者
Sense 6 头条新闻,明星
=> 表演者,表演艺术家
Sense 7 星号,星号
=> 字符、字形、图形符号
Sense 8 星型拓扑,星型
=> 拓扑、网络拓扑
在 PHP 中,您可以使用 shell_exec() 函数读取相同的输出。
$result = shell_exec('/path/to/wn '.$word.' -synsn');
现在$result 应该包含上面引用的文本块。
此时,您必须进行一些适当的编码。您需要获取该文本块并将其解析为您想要的数据。
这就是棘手的地方。由于数据是以一种设计为供人类而非程序读取的格式呈现的,因此难以准确解析。
请务必注意,不同的搜索选项显示的输出略有不同。而且,返回的一些结果可能有些深奥。我最终编写了一个加权系统来对结果进行评分,但它完全符合我的需求,因此您需要对其进行试验以提出您自己的系统。
我希望这对你有足够的帮助。 :)