我正在研究一個允許導入的文件被本地化爲其他語言的系統。識別字符串中的相似性
這主要是一個私人項目獲得MVC3,的EntityFramework,LINQ,諸如此類的竅門。因此,我喜歡做一些瘋狂的事情來增加最終結果,其中之一就是對類似字符串的認識。
想象一下,你有一個字符串下面的列表 - 從遊戲我已經在過去曾與借來的:
- Megabeth:聖滾輪統一 - 包括頭部,軀幹和腿
- Megabeth:聖滾筒均勻頭
- Megabeth:聖滾輪統一腿
- Megabeth:聖滾輪統一軀幹
- Megabeth:PAX東部2012統一 - 包括頭部,軀幹和腿
- Megabeth:PAX東部2012統一主管
- Megabeth:PAX東部2012統一腿
- Megabeth:PAX東部2012統一軀幹
正如你可以看到,當用戶已經翻譯了第4串,以下4個份額有很多相似之處,在這種情況下:
- Megabeth
- 統一
- 包括頭部,軀幹和腿
- 頭
- 腿
- 軀幹
考慮的第一個4串確實已經翻譯,當用戶從列表中選擇5號線,是什麼樣的算法或技術可以用來向用戶顯示「類似字符串」的子標題下的第一個字符串(以及其他可能的字符)?
編輯 - 在Levenshtein距離有點評論: 我目前針對數據庫中的10K字符串。 Levenshtein Distance將每個字符串的字符串進行比較,因此在這種情況下爲10k x(10k -1)個可能的組合。我如何以可行的方式來解決這個問題?有沒有更好的解決方案,這個特定的算法?
有趣的問題。我不知道該從哪裏開始回答這個問題,但是生病了,看着。 – Gallen
編輯距離。其品種很多。而且相當直接。如果矩陣變大,可能在計算上很昂貴。 – DarthVader
你可以連接所有的字符串,然後通過空格分隔(使用正則表達式),然後用'.Distint()'將其轉換並用替換執行翻譯。與此相關的問題是,並非所有的語言都會逐字翻譯。 – Jay