TL;DR 摘要:我需要一个命令行应用程序,我可以用它来获取同义词和其他相关单词。它需要是多语言的并且跨平台工作。任何人都可以为我推荐一个合适的程序,或者帮助我使用我已经找到的程序吗?谢谢。
更长的版本:我的任务是用 PHP 编写一个系统,该系统可以针对用户输入的单词提出替代建议。我需要找到一个同义词库应用程序/API 或类似的应用程序,我可以用它来生成这些建议。
重要的是,它需要是多语言的(英语、丹麦语、法语和德语)。这排除了我使用谷歌找到的大部分软件。它还需要跨平台(需要在 Linux 和 Windows 上运行)。
我的研究让我找到了两个有前途的候选人:WordNet http://wordnet.princeton.edu/wordnet/ and Stardict http://stardict.sourceforge.net/.
到目前为止,我一直关注 WordNet,使用 PHP 从 PHP 调用它shell_exec()
函数,我已经成功地使用它创建了一个非常有前途的原型 PHP 页面,但到目前为止只有英文版本。我正在努力解决如何使用多语言的问题。
Wordnet 站点具有其他语言的 Wordnet 项目的外部链接(例如丹麦语),但虽然它们通常被称为 Wordnet,但它们似乎使用多种数据库格式和软件,这使得它们不适合我。我需要一个可以从 PHP 程序调用的一致接口。
从这个角度来看,Stardict 看起来更有前途:它们为一个应用程序以标准数据库格式提供多种语言的词典。
但 Stardict 的缺点是它主要是一个 GUI 应用程序。从命令行调用它会启动 GUI。显然有一个命令行版本(SDCV http://sdcv.sourceforge.net/),但它似乎已经过时了(最后一次更新 2006 年),并且仅适用于 Linux。
任何人都可以帮助我解决这些程序中的任何一个问题吗?或者,谁能推荐我可以使用的任何其他替代软件或 API?
非常感谢。
您可以尝试利用 PostgreSQL 的全文搜索功能:
http://www.postgresql.org/docs/9.0/static/textsearch.html 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 节中进行,我相信如果出现这种情况,您会知道如何调整上述内容。
但无论实施细节如何,我相信该方法应该有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)