PHP 的同义词库类或 API [编辑]

2024-06-19

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 添加了一些额外的排序功能,如果该方法看起来合理,您可能需要研究一下。

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

  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 节中进行,我相信如果出现这种情况,您会知道如何调整上述内容。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 的同义词库类或 API [编辑] 的相关文章

  • 将布尔值转换为整数值php

    PHP 是否有任何内置函数可以接受布尔值并返回其等效整数 0 代表假 1 代表真 当然 您可以轻松创建一个函数来执行此操作 我只是问 PHP 内部是否有内置函数 我已经尝试过了intval 并将其投射到 int 但它们不起作用 在 TRUE
  • 使 DateTime::createFromFormat() 返回子类而不是父类

    我正在延长DateTime添加一些有用的方法和常量 使用时new创建一个新对象一切都很好 但是使用静态方法时createFromFormat它总是返回原来的DateTime对象 当然没有任何子方法可用 我正在使用以下代码来规避此问题 这是最
  • Laravel 5.1 完成后如何捕获作业队列详细信息?

    在 Laravel 5 1 中 我希望在作业完成时收到通知 并提供有关作业的详细信息 具体来说 user id and customer id 我正在使用Queue after方法中的方法AppServiceProvider作为 Larav
  • 删除重复字符

    我如何删除重复字符 例如删除字母k in cakkkke让它成为cake 执行此操作的一种简单方法是循环遍历字符串的每个字符 如果该字符不是前一个字符的重复 则将字符串的每个字符附加到新字符串 下面是一些可以执行此操作的代码 newStri
  • mysql - 如果日期不与现有日期重叠,则将日期范围插入日期列

    我有以下表结构 表名 available id autoincremetn acc id start date end date 1 175 2015 05 26 2015 05 31 2 175 2015 07 01 2015 07 07
  • DB_DEBUG 设置为 FALSE 的数据库连接设置

    我正在尝试连接到我的数据库 但收到以下消息 无法使用提供的设置连接到数据库服务器 文件名 core Loader php 线路号码 346 所以在阅读了很多之后 我发现在数据库连接中将 db default db debug 设置为 FAL
  • JavaScript 可以直接调用 PHP 函数吗?还是需要单独的 php 文件来调用该函数?

    我正在做一些基本的 Ajax 东西 不是 jquery 只是学习基础知识 并且我设置了一个通用结构 其中 html 调用一个 javascript 函数 该函数将数据发送到并运行特定的 php 页面 但是如果我只需要运行一个已经在funct
  • mysql utf8_general_ci 区分大小写

    我有一个 mysql 数据库 我使用 utf8 general ci 不区分大小写 在我的表中 我有一些列 例如 ID 和区分大小写的数据 例如 iSZ6fX 或 AscSc2 为了区分大写和小写 最好只在这些列上设置 utf8 bin 如
  • CakePHP 控制器的实际测试?

    我正在使用 SimpleTest 1 0 1 用 CakePHP 刚刚发布的 1 2 4 编写一个新应用程序 我已经阅读了相关章节Cookbook http book cakephp org view 366 Testing control
  • PHPUnit 测试套件包含路径

    使用 phpunit 时 我在包含路径方面遇到了一些麻烦 不是针对 phpunit 本身 而是针对我的代码和测试目录 我有以下代码结构 Application StringCalculator php tests StringCalcula
  • 使用 XAMPP 在 Windows 10 中安装 go-pear.phar 时出错

    我在尝试安装时总是遇到错误go pear phar 这是点击后的错误Enter对这个问题1 13 all or Enter to continue 1 13 all or Enter to continue ERROR Please ent
  • 对模型使用 Zend_Autoloader

    有人知道如何使用 新 Zend Autoloader 来加载模型吗 目前我的配置如下所示 应用程序 ini Autoloader Namespace autoloadernamespaces 0 Sl Bootstrap php Start
  • 如何在 PHP 中识别请求的页面

    有没有简单的方法来识别最初处理请求的文件 忽略获取参数并处理 至少是基本的 映射 例如 to index php 理想情况下 我正在寻找类似的东西 SERVER REQUEST URI 但无论 get 参数如何 它都会返回相同的值 并且该值
  • 原则 2 使用 QueryBuilder 进行条件多行更新

    这个问题有一些答案 但实际上 它们似乎都无法帮助完成一项简单的任务 我需要使用 Doctrine2 QueryBuilder 根据一个查询中的条件更新多行 最明显的方法应该是错误的 userAgeList user name a gt 30
  • htaccess 文件中的动态重写

    我正在我的 htaccess 文件中进行一些重写和重定向 我这样做的原因是因为我正在为现有网站开发新的设计和布局 因此我需要重定向以保持谷歌排名等 所以旧的 现有的 URL 看起来像这样 news internet shopper numb
  • 将父产品名称添加到 WooCommerce 中的每个购物车项目名称中

    我想在购物车页面中显示父产品名称和子产品名称 购物车项目 以供我使用分组产品 我在链接产品 gt 添加子产品的分组产品下选择父产品数据作为分组产品 模板中的代码cart php echo apply filters woocommerce
  • 浏览器关闭后从数据库中删除

    我正在开发一个电子商务应用程序 但问题是 当用户将产品添加到购物车并在订购前关闭浏览器时 购物车会带走所有产品 所有购物车项目都保存在表中 如果用户关闭浏览器而不订购 我只想刷新购物车 您可以使用 Javascript 事件捕获浏览器关闭并
  • PHP中如何找出特定进程仍在运行

    我正在编写一个脚本 该脚本构建其他脚本的队列 并应该管理它们的启动 管理器脚本应该知道哪个子进程已经完成 因此它可以启动在队列中等待的其他脚本 我添加了一个 echo 获取每个子进程的进程 ID 所以我有我的子进程进程 ID 现在正在使用系
  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码

随机推荐