我正在尝试编写一个程序来查找两个文档之间的相似性,并且由于即时消息仅使用英语,所以我决定使用wordnet,但是我无法找到将wordnet与php链接的方法,因此无法找到任何wordnet apiphp。

我在论坛上看到有人说(Spudley)他从php调用了wordnet(使用shell_exec()函数), 用于PHP的同义词库类或API [编辑]

我真的很想知道所使用的方法或一些示例代码,或者是一个教程,可能会开始在php中使用wordnet。

非常感谢

有帮助吗?

解决方案

从WordNet站点链接到的PHP扩展非常老旧并且过时了-它声称可以与PHP4一起使用,因此我认为它已经使用多年了。

WordNet-> PHP没有其他可用的API,因此我推出了自己的解决方案。

WordNet可以从命令行运行,因此PHP的shell_exec()函数可以读取输出。

如果您从命令行(从CD到Wordnet的目录,然后只是wn)运行WordNet,而没有任何参数,它将显示Wordnet支持的可能功能列表。

仍然在命令行中,如果您尝试其中一个/某些功能,您将看到Wordnet如何输出其结果。例如,如果您想要单词'star'的同义词,则可以尝试使用-synsn函数: 通用标签

这将产生看起来像这样的输出:

名词星的同义词/双音(按估计的频率排序)

8种星星感

感知1星 =>天体,天体

Sense 2 ace,熟练,冠军,感觉,maven,mavin,virtuoso,天才,热门,明星,巨星,whiz,whizz,巫师,wiz =>专家

Sense 3星 =>天体,天体

Sense 4星 =>平面图,二维图

感官5星,负责人,领导 =>演员,组织,演员,剧情片,角色扮演者

Sense 6顶篷,星形 =>表演者,表演艺术家

Sense 7星号,星形 =>字符,字素,图形符号

Sense 8星拓扑,星 =>拓扑,网络拓扑

在PHP中,您可以使用shell_exec()函数读取相同的输出。 通用标签

现在$result应该包含上面引用的文本块。

这时,您必须进行一些适当的编码。您需要获取该文本块并将其解析为所需的数据。

这是棘手的地方。由于数据是以旨在供人类而非程序读取的格式呈现的,因此准确地进行解析非常困难。

重要的是要注意,不同的搜索选项显示的输出略有不同。而且,返回的某些结果可能有些神秘。我最终编写了一个加权系统来对结果进行评分,但是它非常适合我的需求,因此您需要尝试使用它来设计自己的系统。

我希望这对您有足够的帮助。 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top