【问题标题】:Calling wordnet from php (Wordnet class or API for PHP)从 php 调用 wordnet(Wordnet 类或 PHP 的 API)
【发布时间】:2011-09-14 00:08:23
【问题描述】:

我正在尝试编写一个程序来查找两个文档之间的相似性,由于我只使用英文,我决定使用 wordnet,但我找不到将 wordnet 与 php 链接的方法,我找不到任何 wordnet api php.

我在论坛上看到有人说(Spudley)他从 php 调用 wordnet(使用 shell_exec() 函数), Thesaurus class or API for PHP [edited]

我真的很想知道使用的方法或一些示例代码,也许是开始使用 wordnet 和 php 的教程。

非常感谢

【问题讨论】:

  • 这两个文档将在服务器中。是吗?您想尝试的文件比较!

标签: php wordnet thesaurus


【解决方案1】:

从 WordNet 站点链接到的 PHP 扩展非常陈旧且过时——它声称可以与 PHP4 一起使用,所以我认为它已经多年没有人关注了。

没有任何其他 API 可用于 WordNet->PHP,所以我推出了自己的解决方案。

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

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

仍然在命令行中,如果您随后尝试其中一个/一些功能,您将看到 Wordnet 如何输出其结果。例如,如果您想要单词“star”的同义词,您可以尝试-synsn 函数:

wn star -synsn

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

名词star的同义词/上位词(按估计频率排序)

八种感觉

感觉 1 星 => 天体,天体

Sense 2 王牌、行家、冠军、感觉、行家、专家、大师、天才、能手、明星、超级明星、神童、神童、巫师、奇才 => 专家

感觉 3 星 => 天体,天体

感觉 4 星 => 平面图,二维图

Sense 5 星,校长,领导 => 演员、演员、演员、演员、角色扮演者

Sense 6 头条新闻,明星 => 表演者,表演艺术家

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

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

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

$result = shell_exec('/path/to/wn '.$word.' -synsn');

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

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

这就是棘手的地方。由于数据是以一种设计为供人类而非程序读取的格式呈现的,因此难以准确解析。

请务必注意,不同的搜索选项显示的输出略有不同。而且,返回的一些结果可能有些深奥。我最终编写了一个加权系统来对结果进行评分,但它完全符合我的需求,因此您需要对其进行试验以提出您自己的系统。

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

【讨论】:

  • 得到结果后,似乎我们必须自己编写所有函数才能获得我们需要的输出,特别是不同的结果会有点困难,但我会尝试一些编码看看,谢谢很多的帮助。 :))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
相关资源
最近更新 更多