2013-07-26 27 views
0

我一直在尋找和測試各種字符串重建算法即重建無空間的文本到正常的文本。那裏最好的絃樂重建算法? (最好在'最準確')

我的結果發佈在這裏Solution working partially in Ruby,工作於90%重建2或3個字的句子,帶有完整的字典。但是我不能讓它跑得更好,那麼這個!

我覺得我的算法靈感來自dynamic programming不好,並且包含很多補丁工作。

你能否提出另一種算法(用僞代碼),可以用完整的字典萬無一失?

+0

請給更詳細地,和/或一個例子問題和解決方案。您是否想要輸入一串不含空格字符的字母,並嘗試將它們分解爲某些主要單詞列表(例如英語單詞列表)中包含的單詞? –

+0

你能舉一些你想要完成的例子嗎? –

+0

通過蠻力100%成功率 - 經歷所有排列。 – dchhetri

回答

6

您不僅需要一本詞典,因爲您可以從同一個無空格字符串中獲取多個可能的短語。例如,「themessobig」可能是「混亂如此之大」或「主題如此之大」或「這麼大」等等。

這些都是有效的可能性,但有些可能性比其他更有可能。因此,你想要做的是選擇最有可能的語言如何實際使用。爲此,您需要一個龐大的文本語料庫以及一些NLP算法。可能最簡單的一個就是計算一個單詞在另一個單詞之後出現的可能性。因此,對於「混亂這麼大」,這可能會是:

P(the | <START>) * P(mess | the) * P(so | mess) * P(big | so) 

對於「主題這麼大」,可能會是:

P(themes | <START>) * P(so | themes) * P(big | so) 

然後你可以挑選最有可能的可能性。您也可以構造三元組而不是元組(例如P(so | the + mess)),這將需要更大的語料庫才能生效。

這不會是萬無一失的,但您可以通過更好的語料庫或調整算法來獲得更好,更好的效果。

+0

真棒!你回答了我未來可能遇到的一個重大問題。非常感謝。我認爲我的問題可能更清楚。比方說,我想重建「themagicmall」......如果我用最長​​的有效詞startegy去......我得到「他們agic商場」..不好。如果我用最短的有效單詞去得到「the ma ...」不好的原因「ma」是一個有效的單詞......那麼如何製作一個算法來選擇「魔法商場」......將整個句子有效? – rimkashox

+0

我知道如何獲得可能的斷點......這很容易......並在這裏很好地解釋http://cseweb.ucsd.edu/classes/wi12/cse202-a/lecture6-final.pdf,但是如何重建一個正確的帶有這個可能的斷點向量的句子? – rimkashox

+0

我想NLTK會在這裏幫助。 – Marcin