CoreBiGramTableDictionary.java和CoreDictionary.java結(jié)構(gòu)思路
詞典里文件的格式:wordA@wordB? ? ?frequency
CoreBiGramTableDictionary.java文件用一個TreeMap<(int)wordA, TreeMap<(int)wordB, (int)frequency>>來讀取詞典。用一個名為pair的int型數(shù)組來存儲TreeMap<(int)wordB, (int)frequency>。因為一個wordA可能對應(yīng)有多個wordB,所以用一個名為start的int型數(shù)組來記錄wordA后面有多少個wordB(start[i] ~~~ start[i+1])。
wordA和wordB的int數(shù)值從DAT的查詢中來。
詞典里文件的格式:word? ? ?nature1? ? ?frequency1? ? ?nature2? ? ?frequency2 ......
CoreDictionary.java里用一個Attribute的內(nèi)部類來保存詞典里的每一列中word后的那些概率。
Attribute屬性:Nature nature[];
???? ???? ???? ????? ? ?int ????? ? frequency[];
???? ???? ???? ????? ? ?int ????? ? ?totalFrequency;
接著用一個TreeMap<String, Attribute>來存儲一列。
怎么build這個map到DAT里?
build(map<String, Attribute>) --> build(Set<String, Attribute>) --> List<String> keyList, List<Attribute> valueList --> build(keyList, valueList) --> DAT里的Attribute[] v := valueList, 最終到了原有的build()。
OK, finished.
文章來源于網(wǎng)絡(luò)