大規模詞庫的詞彙檢索是乙個非常耗時的操作,所以其資料結構一般都是需要經過仔細設計的。單位裡原有乙個堆結構,最近將它模板化,並在它基礎上做模糊查詢。但原來沒有詞庫的歸併演算法,這些日子不得不重新實現乙個。演算法的難點在於尋找合適的子塊進行
move
操作以及調整該子塊的所有相關指標。
下面是測試例子之一:
int_tmain(int
argc, _tchar* argv)
else
return 0;
}
下面是該例子的輸出:
index1.string:lee lieve life and zoe
index2.string:love book zero a land
index3 = index1 + index2
***************index1***************
wordindex:
a[0,1)
l[2,4)
z[10,11)
heapindex:
0n0[1,2)
1d-1[0,0)
2e0[4,5)
3i0[5,7)
4e-1[0,0)
5e0[7,8)
6f0[9,10)
7v0[8,9)
8e-1[0,0)
9e-1[0,0)
10o0[11,12)
11e-1[0,0)
***************index2***************
wordindex:
a1ch_word
b[0,1)
l[3,5)
z[9,10)
heapindex:
0o0[1,2)
1o0[2,3)
2k-1[0,0)
3a0[5,6)
4o0[7,8)
5n0[6,7)
6d-1[0,0)
7v0[8,9)
8e-1[0,0)
9e0[10,11)
10r0[11,12)
11o-1[0,0)
***************index3***************
wordindex:
a[0,1)
1ch_word
b[2,3)
l[5,9)
z[19,21)
heapindex:
0n0[1,2)
1d-1[0,0)
2o0[3,4)
3o0[4,5)
4k-1[0,0)
5a0[9,10) 6
e0[11,12)
7i0[12,14)
8o0[17,18)
9n0[10,11)
10d-1[0,0)
11e-1[0,0)
12e0[14,15)
13f0[16,17)
14v0[15,16)
15e-1[0,0)
16e-1[0,0)
17v0[18,19)
18e-1[0,0)
19e0[21,22)
20o0[23,24)
21r0[22,23)
22o-1[0,0)
23e-1[0,0)
press any key to continue
不禁想到
segword
中要做詞彙雜湊的想法。好的雜湊檢索明確的詞彙時速度應該比這個堆快,而且歸併與插入的代價也遠比這個低,但雜湊中如何進行快速的模糊查詢(比如「
z+o+
」)?
search花絮之語義處理
語義處理是自然語言處理前沿的熱點,其關鍵作用正逐漸成為學科領域的共識,而我們的中文資訊處理強項也在於語義處理,所以很自然就想把這一優勢具體體現到搜尋專案中來 但毫無疑問這是乙個摸索的過程。最初我負責標題分析的研究,曾隨機抽取了一些標題示例,例如 移動儲存裝置 的例子 移動儲存裝置 與 讀寫識別裝置 ...
DP之石子堆合併問題
1 相鄰 在乙個圓形操場的四周擺放著n堆石子 n 100 現要將石子有次序地合併成一堆。規定每次只能選取相鄰的兩堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。選擇一種合併石子的方案,使得做n 1次合併,得分的總和最小。1 2 在乙個圓形操場的四周擺放著n堆石子 n 100 現要將石子有...
Codeup堆 合併果子(堆)
在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。...