13

TL;DR 摘要:我需要一个可以用来获取同义词和其他相关词的命令行应用程序。它需要是多语言的并且可以跨平台工作。任何人都可以为我推荐一个合适的程序,或者帮助我找到我已经找到的程序吗?谢谢。


更长的版本: 我的任务是用 PHP 编写一个系统,该系统可以为用户输入的单词提供替代建议。我需要找到一个词库应用程序/API 或类似的东西,我可以用来生成这些建议。

重要的是,它需要多语言(英语、丹麦语、法语和德语)。这排除了我使用谷歌设法找到的大多数软件。它还需要是跨平台的(它需要在 Linux 和 Windows 上工作)。

我的研究让我找到了两个有前途的候选人:WordNetStardict

到目前为止,我一直专注于 WordNet,使用该shell_exec()函数从 PHP 调用它,并且我已经设法使用它创建了一个非常有前途的原型 PHP 页面,但到目前为止只有英文版。我正在为如何使用多语言而苦苦挣扎。

Wordnet 站点有其他语言的 Wordnet 项目的外部链接(例如丹麦语的DanNet),但是虽然它们通常被称为 Wordnet,但它们似乎使用各种数据库格式和软件,这使得它们不适合我。我需要一个可以从我的 PHP 程序中调用的一致接口。

从这个角度来看,Stardict 看起来更有希望:它们以标准 DB 格式为一个应用程序提供多种语言的字典。

但 Stardict 的缺点是它主要是一个 GUI 应用程序。从命令行调用它会启动 GUI。显然有一个命令行版本(SDCV),但它似乎已经过时(最后更新 2006 年),并且仅适用于 Linux。

任何人都可以帮助我解决这些程序中的任何一个问题吗?或者,任何人都可以建议我可以使用的任何其他替代软件或 API 吗?

非常感谢。

4

3 回答 3

7

这里有一个用于词库 API 用法的 PHP 示例...

http://thesaurus.altervista.org/testphp

适用于意大利语、英语、法语、德语、西班牙语和葡萄牙语。

于 2011-04-28T11:18:38.327 回答
7

您可以尝试利用 PostgreSQL 的全文搜索功能:

http://www.postgresql.org/docs/9.0/static/textsearch.html

您可以使用任何可用的语言和各种排序规则对其进行配置以满足您的需求。PostgreSQL 9.1 添加了一些额外的整理功能,如果该方法看起来合理,您可能想要研究一下。

基本步骤是(对于每种语言):

  1. 创建所需的表(适当整理)。为了我们的缘故,一列就足够了,例如:

    create table dict_en (
      word text check (word = lower(word)) primary key
    );
    
  2. 获取所需的字典/同义词库文件(那些来自 aspell/Open-Office 的应该可以工作)。

  3. 使用相关文件配置文本搜索(参见上面的链接,即第 12.6 节)。

  4. 将整个字典插入表中。(当然某处有一个csv文件......)

  5. 最后索引向量,例如:

    create index on dict_en using gin (to_tsvector('english', word));
    

您现在可以运行使用此索引的查询:

-- Find words related to `:word`
select word
from dict_en
where to_tsvector('english', word) @@ plainto_tsquery('english', :word)
and word <> :word;

您可能需要为每种语言创建单独的数据库或模式,如果 Postgres 由于语言参数而拒绝为表达式编制索引,则可能需要添加一个附加字段 (tsvector)。(我很久以前阅读了全文文档)。12.2 节对此进行了详细说明,如果是这种情况,我相信您会知道如何调整上述内容。

不过,无论实施细节如何,我相信该方法应该有效。

于 2011-05-15T06:26:45.783 回答
0

这似乎是一种选择,虽然我不确定它是否是多语言的:http: //developer.dictionary.com/products/synonyms

我还发现了以下站点,它与您的最终目标相似,也许您可​​以尝试联系所有者并询问他是如何做到的: http ://www.synonymlab.com/

于 2011-05-16T17:22:32.807 回答