[英]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 -> case
, this
將不會有可更換的,因為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.