【问题标题】:Replacing words with their synonyms in string用字符串中的同义词替换单词
【发布时间】:2014-01-08 09:22:43
【问题描述】:

这是我尝试做的一个非常基本的例子。

我有这个字符串。

$text = 'stackoverflow is intelligent';

删除停用词后

 $stopwords=array(
  'is', 
  'the', 
 );

$text = preg_replace($stopwords, "", $text);`

输出:

stackoverflow 智能

用空格分解字符串后

$text = explode(" ", $text);

在数组中输出:

stackoverflow,智能

现在我有两个字了

$text[0]; // stackoverflow

$text[1]; // intelligent

在我的 sql 数据库中,我有 3 个列。第一个是单词,第二个是她的同义词,第三个是长度最短的同义词。像这样:

 word         synonym  shortsynonym

 intelligent  clever   smart             

这是问题的难点:

第一步是检查来自字符串的words在数据库中是否有同义词 在这种情况下,我们必须检查

$text[0]; // stackoverflow

$text[1]; // intelligent

在检查两者之后,我们发现$text[0]; // stackoverflow dosent 有一个同义词,所以我们保持原样。 $text[1]; // intelligent 的结果是肯定的。

检查后我想在数据库和replace 中执行搜索,在这种情况下,单词intelligent 和她的同义词,if word 有一个shortest synonym 替换为shortest,@ 987654339@dosent这个词有同义词leave as is。

 possibility1: output: 'stackoverflow is smart'
 possibility2: output: 'stackoverflow is clever'
 possibility3: output: 'stackoverflow is intelligent'

在这种情况下,返回后的输出将是:

 output: `stackoverflow is smart`

(也许这不是一个真正的问题,但我们将不胜感激您的任何帮助。抱歉我的英语不好)

【问题讨论】:

  • 那么not究竟有什么作用呢?
  • 那么,您希望整个程序都能实现这一点吗?
  • 我不知道如何在数据库中执行搜索。 Step1:检查一个词是否有同义词,如果没有,则保持原样。 step2:在step1检查结果为肯定后进行替换。
  • 这是一个非常基本的任务。为什么不看教程?阅读此w3schools.com/php/php_mysql_intro.asp
  • SELECT word,synonym,shortsynonym FROM words WHERE word IN('stackoverflow','intelligent'); 这样简单的东西应该有望为您指明正确的方向。

标签: php mysql regex


【解决方案1】:

检查后我想在数据库中执行搜索并替换 在这种情况下,智能这个词与她的同义词,如果这个词有 最短的同义词替换为最短的,如果单词doseent有 同义词 leave as is。

根据您上面介绍的逻辑,适当的 SQL 将是:

$sql = "SELECT 
`word`, 
IF(NOT ISNULL(`shortsynonym`), `shortsynonym`, IFNULL(`synonym`, `word`)) as replacement 
FROM words 
WHERE `word` IN ('stackoverflow', 'intelligent')";

还没有测试过,但是上面应该可以帮助你...

【讨论】:

    【解决方案2】:

    是程序设计的问题还是编写查询的实际机制有问题?

    如果它是设计的,您可能需要考虑“词库”的大小,如果它很小,那么在程序开始时查询您的数据库并将结果加载到键值数组中可能更有意义。然后,您可以使用该数组,而不是在每个请求上都访问您的数据库。它也应该加快程序的速度。

    如果问题在于编写 sql 查询,您可能需要花时间在项目上阅读一些教程。我会为您的查询推荐 PDO PHP 5.4,如果您学习了它,它会使编写查询变得轻而易举。

    PDO PHP API

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2022-07-05
      相关资源
      最近更新 更多