从WordNet网站链接的PHP扩展非常古老且已经过时,它声称与PHP4兼容,因此我认为多年来没有人再关注它。
除了自己动手实现解决方案外,没有其他可用于WordNet-> PHP的API。
WordNet可以从命令行运行,因此PHP的shell_exec()
函数可以读取输出。
如果在命令行中运行WordNet(cd到Wordnet的目录,然后只需wn
)而不带任何参数,则会显示可能支持的Wordnet功能列表。
仍然在命令行中,然后尝试其中一个/一些函数,您将看到Wordnet如何输出其结果。例如,如果您想要“star”一词的同义词,则可以尝试使用-synsn
函数:
wn star -synsn
这将生成类似于以下内容的输出:
名词star的同义词/上位词(按估计频率排序)
8个意义
意义1 star => 天体, 星体
意义2 ace, adept, champion, sensation, maven, mavin, virtuoso, genius, hotshot, star, superstar, whiz, whizz, wizard, wiz => 专家
意义3 star => 天体, 星体
意义4 star => 平面图形, 二维图形
意义5 star, principal, lead => 演员, 戏剧演员, 玩家, 角色扮演者
意义6 headliner, star => 表演者, 艺术家
意义7 asterisk, star => 字符, 字形, 图形符号
意义8 star topology, star => 拓扑结构, 网络拓扑结构
在PHP中,您可以使用shell_exec()
函数读取相同的输出。
$result = shell_exec('/path/to/wn '.$word.' -synsn');
现在,$result
应该包含上面引用的文本块。
此时,您需要进行一些适当的编码。您需要解析所需数据的文本块。
这是其中比较棘手的部分。因为数据呈现的格式是为人类而非程序设计的,所以准确解析数据会有些难度。
需要注意的是,不同的搜索选项呈现的输出略有不同。并且返回的一些结果可能有些费解。我最终编写了一个加权系统来评分结果,但它相当特定于我的需求,所以您需要尝试编写自己的系统。
希望这足以对您有所帮助。 :)