TL; DR摘要:我需要一个命令行应用程序,我可以使用它来获取同义词和其他相关单词。它需要多语言,跨平台工作。任何人都可以为我推荐一个合适的程序,或者帮助我找到我已经找到的程序?谢谢。
更长的版本:
我的任务是用PHP编写一个系统,可以为用户输入的单词提供替代建议。我需要找到一个同义词库应用程序/ API或类似的东西,我可以用来生成这些建议。
重要的是,它需要多语言(英语,丹麦语,法语和德语)。这排除了我使用Google设法找到的大部分软件。它还需要跨平台(它需要在Linux和Windows上运行)。
我的研究让我有两个很有希望的候选人:WordNet和Stardict。
到目前为止,我一直专注于WordNet,使用shell_exec()
函数从PHP调用它,我已经设法使用它来创建一个非常有前途的原型PHP页面,但到目前为止只有英文版。我正在努力学习如何多语言使用它。
Wordnet网站有其他语言的Wordnet项目的外部链接(例如丹麦语的DanNet),但是虽然它们通常被称为Wordnet,但它们似乎使用各种数据库格式和软件,这使得它们成为可能。不适合我。我需要一个可以从我的PHP程序中调用的一致接口。
从这个角度来看,Stardict看起来更有希望:它们以标准数据库格式为一个应用程序提供多种语言的词典。但Stardict的缺点是它主要是一个GUI应用程序。从命令行调用它会启动GUI。显然有一个命令行版本(SDCV),但它似乎已经过时了(2006年最新更新),仅适用于Linux。
任何人都可以帮助我解决这两个程序中的问题吗?或者,任何人都可以建议我可以使用的任何其他替代软件或API吗?
非常感谢。
答案 0 :(得分:7)
答案 1 :(得分:7)
您可以尝试利用PostgreSQL的全文搜索功能:
http://www.postgresql.org/docs/9.0/static/textsearch.html
您可以使用任何可用语言和各种排序规则对其进行配置,以满足您的需求。 PostgreSQL 9.1添加了一些额外的整理功能,如果方法看起来合理,您可能需要考虑这些功能。
基本步骤是(针对每种语言):
创建所需的表格(适当地整理)。为了我们的目的,单个列就足够了,例如:
create table dict_en (
word text check (word = lower(word)) primary key
);
获取所需的词典/同义词库文件(来自aspell / Open-Office的文件应该有效)。
使用相关文件配置文本搜索(请参阅上面的链接,即第12.6节)。
将整个字典插入表格中。 (当然在某处有一个csv文件......)
最后索引向量,例如:
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节中,如果是这种情况,我相信你会知道如何调整上述内容。
无论实施细节如何,我相信这种方法应该有效。
答案 2 :(得分:0)
这似乎是一种选择,但我不确定它的多语言是否: http://developer.dictionary.com/products/synonyms
我还发现以下网站与您的最终目标类似,也许您可以尝试联系所有者并询问他是如何做到的: http://www.synonymlab.com/