从PHP调用Wordnet(Wordnet类或API for PHP)

5
我正在尝试编写一个程序来查找两个文档之间的相似性,由于我只使用英语,因此决定使用WordNet,但我找不到将WordNet与PHP链接的方法,我还找不到任何来自PHP的WordNet API。我在论坛中看到有人(Spudley)称他从PHP中调用了WordNet(使用shell_exec()函数)。Thesaurus class or API for PHP [edited]。我真的很想知道是用了哪种方法或一些示例代码,也许有教程可以开始使用WordNet和PHP。非常感谢。

这两个文档将会在服务器上。你想尝试文件比较吗? - zod
2个回答

10

从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应该包含上面引用的文本块。

此时,您需要进行一些适当的编码。您需要解析所需数据的文本块。

这是其中比较棘手的部分。因为数据呈现的格式是为人类而非程序设计的,所以准确解析数据会有些难度。

需要注意的是,不同的搜索选项呈现的输出略有不同。并且返回的一些结果可能有些费解。我最终编写了一个加权系统来评分结果,但它相当特定于我的需求,所以您需要尝试编写自己的系统。

希望这足以对您有所帮助。 :)


在得到结果后,似乎我们必须自己编写所有的函数才能获得所需的输出,特别是对于不同的结果,这可能会有些困难,但我会尝试一些编码并查看。非常感谢您的帮助。:)) - prabhath014

0

我知道时间有点晚了,但最近我写了一个库来解决自己的问题

Wordnet php wrapper


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接