从php调用wordnet(Wordnet类或PHP API)
题
我正在尝试编写一个程序来查找两个文档之间的相似性,并且由于即时消息仅使用英语,所以我决定使用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
应该包含上面引用的文本块。这时,您必须进行一些适当的编码。您需要获取该文本块并将其解析为所需的数据。
这是棘手的地方。由于数据是以旨在供人类而非程序读取的格式呈现的,因此准确地进行解析非常困难。
重要的是要注意,不同的搜索选项显示的输出略有不同。而且,返回的某些结果可能有些神秘。我最终编写了一个加权系统来对结果进行评分,但是它非常适合我的需求,因此您需要尝试使用它来设计自己的系统。
我希望这对您有足够的帮助。 :)