簡體   English   中英

用等價單詞代替句子

[英]Replacing sentences with equivalent words

我想用相等的詞來改變句子; 例如:

參考數據庫:

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

句子:

將收益放在段落之間

替換句子:

在段落之間設置切換

是; 輕松找到並替換。 但是問題是:我在記錄中有“ 段落 ”和“ 段落之間 ”。 如何在短褲前搜索和替換長文本? 性能非常重要,因為參考數據庫可能有超過一百萬行。

當前使用:實體框架,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."

數據庫有1,000,000條記錄; 我可以通過從數據庫獲取所有行,並將所有行都轉換為文本來做到這一點。 這是愚蠢的方法。 我需要一種將句子存儲到數據庫中的方法如何選擇包含句子的行?

我有一種方法,例如使用()空格分割所有文本,然后嘗試在數據庫中進行選擇。 但這會傳遞帶有空格的長文本。 “案件數”; 它將以單獨的搜索方式搜索“ the”,“ number”,“ of”,“ cases” ...並且記錄將無用。

您可以采用類似Trie的結構來組織替換數據庫。 所有單詞表達式都處於第一級。 多單詞表達式存儲為表達式中先前單詞的后代。 在您的示例中:

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

詞根將是單詞詞典。 每個節點都有一個子詞典(在大多數情況下為空)和一個替換值。 替換可以是在中間空的話,例如,在ìn -> this -> casethis將不會有可更換的,因為in -> this本身不是一個有效的替代品。

拆分句子並遍歷單詞。 如果您發現可能要進行更換,請遵循嘗試並在該位置確定最長的更換時間。 替換它並從下一個單詞繼續迭代。

 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.

被正確對待。

如果您有很多句子需要用同一數據庫中的替換詞替換,則此方法應該有效。 數據庫特里必須只構建一次。 如果您只需要替換幾句話,或者數據庫經常更改,那么這不是一個好方法。

您可以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM