Java 字典與辭典 API(JADT)是 alphaWorks 發布的標準類別庫,提供透明、以 Java 為中心的方式存取字典、非結構化單詞及其相關資訊。JADT 目標在為字典提供者制定標準技術規範,使其能支援 Java 平台。本文為系列第一部分,從應用開發者角度介紹 JADT 基礎架構、核心資料結構、驅動程式模型與七大語言服務的使用方法。
適用場景:多語言應用、本地化/國際化、編輯器拼寫檢查與詞彙建議、翻譯應用等。
單詞容器,不直接存取後端資源。支援迭代、前綴/後綴/子字串查找,可作為集合進一步篩選:
WordList wordlist = wordlister.findWithPrefix("un");
wordlist.start();
while (wordlist.hasMoreWords()) {
Word word = wordlist.getNext();
// 處理單詞
}
WordList wordlist2 = wordlist.findWithSuffix("ing"); // 進一步篩選
代表母語使用者可識別的語言單元,封裝拼寫、類型、來源、發音、記錄:
Word word = wordlist.getNext();
String spelling = word.getWord(); // 取得拼寫
保存單詞附加資訊(描述、類型、用法、地區、發音等),以鏈式物件實現,可串聯多筆結果:
DictionaryRecord dr = dict.getMeaning("dictionary");
dr.start();
while (dr != null) {
String name = dr.getWordName();
String pron = dr.getPronunciation();
String type = dr.getType();
String meaning = dr.getDescription();
dr = dr.getNextRecord();
}
JADT 內建兩個預設驅動程式:JADTTextDriver(文字格式資料)、JADTXMLDriver(XML 格式資料)。使用流程四步驟:
Class.forName("com.ibm.jadtdrivers.TextDriver.JADTTextDriverFactory"),工廠自動註冊。JADTDriverFactory fac = JADTDriverFactoryManager.getJADTDriverFactory("JADTTextDriverFactory")。JADTDriver driver = fac.createJADTDriver()。driver.setProperty("JADTTextDriverDir", "c:\\datadir")(未設定則用預設值)。完成後即可呼叫驅動程式的七大服務方法。
Dictionary dict = driver.getDictionary("english", "english");
DictionaryRecord dr = dict.getMeaning("dictionary");
// 迭代 dr 取得多重釋義...
WordBook wb = driver.getWordBook("english");
// 同義詞
DictionaryRecord syn = wb.getSynonyms("dictionary");
while (syn != null) { /* ... */ syn = syn.getNextRecord(); }
if (wb.isSynonyms("dictionary", "lexicon")) { /* 兩詞互為同義 */ }
// 反義詞、上位詞、下位詞、整體名詞、部分名詞皆提供 getXxx() 與 isXxx() 成對方法
SpellChecker sc = driver.getSpellChecker("english");
boolean ok = sc.check(new TextWord("dictionar")); // false
DictionaryRecord corr = sc.correct(new TextWord("dictionar")); // 取得正確拼寫
DictionaryRecord sug = sc.suggestSimilar(new TextWord("dictionar")); // 相似詞建議
WordLister wl = driver.getWordLister("english");
WordList pref = wl.findWithPrefix("perf"); // 相同前綴
WordList suff = wl.findWithSuffix("ces"); // 相同後綴
WordList sub = wl.findWithSubstring("tiona"); // 共同子字串
Anagrammizer an = driver.getAnagrammizer("english");
DictionaryRecord ana = an.anagrammise(new TextWord("clear")); // 所有變位詞
boolean isAna = an.isAnagram("clear", "clare"); // 判斷是否互為變位詞
GrammarChecker gc = driver.getGrammarChecker("english");
gc.check(sentence); // 判斷語法正確性
gc.correct(sentence); // 糾正語法
gc.suggestSimilar(sentence); // 建議修正方式
Translator tr = driver.getTranslator("english", "french");
tr.translate(word); // 單詞翻譯
tr.translateSentence(sentence); // 句子翻譯
// 可用於資源綁定檔案的多語言轉換
JADT 附帶示範程式展示 Text/XML 兩種驅動程式功能。執行方式:
java com.ibm.jadtsample.JADTSampleApplication
需於資源檔案部署目錄下執行。執行畫面如下:

本文從使用者角度完整介紹了 JADT 的架構、資料結構、驅動程式操作流程與七大語言服務的實際呼叫範例。第二部分將從字典提供者角度,詳細說明如何實作 JADT 驅動程式與各服務介面,敬請期待。