我正在尝试写一个程序来查找两个文档之间的相似性,因为我只使用英语,所以我决定使用wordnet,但我找不到一种方法将wordnet与php链接,我无法从php中找到任何wordnet api。
我在论坛上看到有人说(斯普德利)他从php调用wordnet (使用shell_exec()函数),Thesaurus class or API for PHP [edited]
我真的很想知道使用的方法或一些示例代码,也许是开始在php中使用wordnet的教程。
非常感谢
发布于 2011-06-13 23:44:28
从WordNet站点链接到的PHP扩展非常旧,而且已经过时了--它声称可以与PHP4一起使用,所以我认为它已经多年没有出现过了。
没有任何其他API可用于WordNet->PHP,所以我推出了自己的解决方案。
PHP可以从命令行运行,因此WordNet的shell_exec()函数可以读取输出。
如果您从命令行运行WordNet (cd进入Wordnet的目录,然后只运行wn)而不带任何参数,它将显示Wordnet支持的可能函数的列表。
仍然是在命令行中,如果您随后尝试其中的一个/某些函数,您将看到Wordnet如何输出其结果。例如,如果您想要单词'star‘的同义词,您可以尝试使用-synsn函数:
wn star -synsn这将产生类似如下所示的输出:
名词星形的
同义词/上位词(按估计频率排序)
星的八种感官
感觉1星=>天体,天体
Sense 2王牌,熟练,冠军,感觉,maven,mavin,virtuoso,genius,hotshot,star,superstar,wiz,wiz => expert
Sense 3星=>天体,天体
Sense 4星=>平面图形,二维图形
Sense 5明星,校长,=>首席演员,角色演员
Sense 6头条,明星=>表演者,表演艺术家
Sense 7星号、星形=>字符、字素、图形符号
Sense 8星型拓扑、星型=>拓扑、网络拓扑
在PHP中,您可以使用shell_exec()函数读取相同的输出。
$result = shell_exec('/path/to/wn '.$word.' -synsn');现在,$result应该包含上面引用的文本块。
在这一点上,您必须进行一些适当的编码。您需要获取该文本块并对其进行解析以获得所需的数据。
这就是它变得棘手的地方。因为数据是以人类而不是程序读取的格式呈现的,所以很难准确地进行解析。
重要的是要注意,不同的搜索选项呈现其输出略有不同。而且,返回的一些结果可能有些晦涩难懂。我最终编写了一个加权系统来对结果进行评分,但它相当具体地满足了我的需求,因此您需要对其进行实验,以提出您自己的系统。
我希望这对你有足够的帮助。:)
https://stackoverflow.com/questions/6332254
复制相似问题