我正在尋找一種方法,在短語中沒有空格(例如twitter上的熱門話題),並根據短語中的單詞放置空格。據推測某種與字典的比較可以起作用?根據單詞/字典插入空格
例如:我有一個功能,用了'septemberwish'這個詞(twitter上的當前趨勢),它會返回'9月wish'。
我正在尋找一種方法,在短語中沒有空格(例如twitter上的熱門話題),並根據短語中的單詞放置空格。據推測某種與字典的比較可以起作用?根據單詞/字典插入空格
例如:我有一個功能,用了'septemberwish'這個詞(twitter上的當前趨勢),它會返回'9月wish'。
這將是棘手。你會很容易得到模糊的單詞合併,其中幾個分離導致有效的單詞。
也就是說,你可以使用拼寫檢查器。請參閱pspell擴展。
一個算法可以在不同的點分離單詞,直到它產生兩個有效的單詞。例如:
septem berwish (split at floor(length/2); both invalid) septemb erwish (split at floor(length/2)+1; both invalid) septe mberwish (split at floor(length/2)-1; both invalid) septembe rwish (split at floor(length/2)+2; both invalid) sept emberwish (split at floor(length/2)-2; first valid, second invalid) september wish (split at floor(length/2)+3; both valid; stop)
對於超過兩個單詞,需要另一種方法。一種可能性是,直到你有一個有效的詞從終端刪除字符,然後做同樣的休息未得到匹配:
septemberwishtwo (invalid) septemberwishtw (invalid) ... september (valid; got the first) wishtwo (invalid) ... wish (valid; got the second) two (valid; got the third)
在最幼稚的做法,開始從開始添加字母字符串,並與給定長度的字典進行比較:例如
s // no match
se // no match
sep // no match
...
september // match! add space, add to output
// continue where we left off
w // no match
wi // no match
wis // no match
wish // match! add space, add to output
end of string, terminate
棘手位:有可能是可以被解析成不同的短語(the-site-that-shall-not-be-named,一個)的字符串。其實,你的例子是一個(雖然一個字不常見):
septemberwish VS septemberwish
我想你可以用常用字小字典先試試,或者第一時間最長的單詞;或者給較不常用的詞語更低的權重。
這也是我的想法,但似乎你必須回過頭來,當它是一個以'a',''等開頭的單詞時。 – grossvogel 2010-08-30 19:27:38
@grossvogel:一些bactracking可能是有序的;儘管在這個特殊情況下,我會說Twitter很方便地爲我們過濾這些單詞(否則「這個」將是*所有時間的趨勢(赦免雙關語))。 – Piskvor 2010-08-30 19:30:12
這將適用於2個字的短語,但難以實施任何短於2個字的詞組?它可能會非常迅速地變得非常複雜! – FinnG 2010-08-30 19:18:52
如果你認爲它是兩個單詞,那麼不是從中間開始纔有用。我對推特一無所知,但是不可能一言難盡? – grossvogel 2010-08-30 19:19:53
pspell的+1,儘管我喜歡從一開始就解析的想法,正如@Piskvor所暗示的那樣。 – grossvogel 2010-08-30 19:24:25