用对等单词替换句子

本文关键字:句子 替换 单词 对等 | 更新日期: 2023-09-27 18:27:53

我想用等价词换句子;例如:

参考数据库:

put <-> set
returns <-> switch
between <-> among
paragraphs <-> null
between paragraphs <-> among paragraphs

句子:

在段落之间放入回报

替换句子:

设置段落之间的切换

是;查找和更换简单而精细。但问题是:我在记录中有"段落"answers"介于段落能超过100万行。

当前使用:实体框架,C#,MVC,SQL Server 2014

任何帮助都将是美妙的。谢谢

更新:

句子:

string str = "The number of cases in the Ebola outbreak passes 10,000, with 4,922 deaths, the World Health Organization's latest report says."

数据库有1000000条记录;我可以从数据库中获取所有行,并将所有行foreach转换为文本。这是愚蠢的方法。我需要一种语句到数据库的方法如何选择包含语句的行?

我有一个方法,比如用()空白分割所有文本,然后尝试在数据库中进行选择。但它会通过带有空白的长文本。"案件数量";它会像"the","number","of","cases"一样单独搜索。。。记录也没用。

用对等单词替换句子

您可以用类似trie的结构来组织替换数据库。所有的单词表达都在第一层。多单词表达式存储为表达式中前面单词的后代。在您的示例中:

root
    -> put: set
    -> returns: switch
    -> between: among
        -> paragraphs: among paragraphs
    -> paragraphs: sections

词根将是一本单词词典。每个节点都有一个子字典(在大多数情况下为null)和一个替换值。替换在中间词中可能为null,例如在ìn -> this -> case中,this不会有替换,因为in -> this本身不是有效的替换。

把你的句子分成两半,并反复阅读单词。如果你找到了一个可能的替换开始,请按照trie并确定该位置可能的最长替换。替换它,并从下一个单词开始继续迭代。

 between you and me -> among you and me
 between other paragraphs -> among other sections
 between paragraphs -> among paragraphs

当你拆分单词时,保持单词之间的空格和标点符号,只有在单词之间没有标点符号的情况下才跟随trie节点,这样像这样的句子

 There must be something in between; paragraphs 1 and 2 seem to indicate that.

正确对待。

如果您有许多句子需要用同一数据库中的替换项替换,那么这种方法应该是有效的。数据库trie只能生成一次。如果你只有几句话要替换,或者数据库经常更改,这不是一个好方法。

您可以在sql server 中使用REPLACE函数

SELECT REPLACE('abcdefghicde','cde','xxx') GO

xxx 代替cde

在您的应用程序中,sql可能是

UPDATE tablename set col=REPLACE(col,' put ',' set ') //Please notice there are 2 ' ' beside the word