首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JADT 入門指南(一):在 Java 應用程式中整合字典與辭典服務

     編輯:Java 相關知識

Java 字典與辭典 API(JADT)是 alphaWorks 發布的標準類別庫,提供透明、以 Java 為中心的方式存取字典、非結構化單詞及其相關資訊。JADT 目標在為字典提供者制定標準技術規範,使其能支援 Java 平台。本文為系列第一部分,從應用開發者角度介紹 JADT 基礎架構、核心資料結構、驅動程式模型與七大語言服務的使用方法。

JADT 總覽與特色

  • 提供存取字典、辭典、拼寫檢查、單詞列表、翻譯、語法檢查、變位詞等服務的統一介面
  • 支援多語言轉換介面
  • 採驅動程式架構:應用程式獨立於具體資料提供者實作
  • 提供字典提供者與驅動程式開發者的 API
  • 支援任意後端資料源(資料庫、檔案系統、XML 等),只需實作對應驅動程式
  • 語言中立、平台無關(純 Java 實作)

適用場景:多語言應用、本地化/國際化、編輯器拼寫檢查與詞彙建議、翻譯應用等。

核心資料結構

WordList(單詞列表)

單詞容器,不直接存取後端資源。支援迭代、前綴/後綴/子字串查找,可作為集合進一步篩選:

WordList wordlist = wordlister.findWithPrefix("un");
wordlist.start();
while (wordlist.hasMoreWords()) {
    Word word = wordlist.getNext();
    // 處理單詞
}
WordList wordlist2 = wordlist.findWithSuffix("ing"); // 進一步篩選

Word(單詞)

代表母語使用者可識別的語言單元,封裝拼寫、類型、來源、發音、記錄:

Word word = wordlist.getNext();
String spelling = word.getWord(); // 取得拼寫

DictionaryRecord(字典記錄)

保存單詞附加資訊(描述、類型、用法、地區、發音等),以鏈式物件實現,可串聯多筆結果:

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 驅動程式模型與控制流程

JADT 內建兩個預設驅動程式:JADTTextDriver(文字格式資料)、JADTXMLDriver(XML 格式資料)。使用流程四步驟:

  1. 載入驅動程式工廠:Class.forName("com.ibm.jadtdrivers.TextDriver.JADTTextDriverFactory"),工廠自動註冊。
  2. 取得工廠實例:JADTDriverFactory fac = JADTDriverFactoryManager.getJADTDriverFactory("JADTTextDriverFactory")。
  3. 建立驅動程式:JADTDriver driver = fac.createJADTDriver()。
  4. 設定驅動程式屬性:如資料目錄路徑 driver.setProperty("JADTTextDriverDir", "c:\\datadir")(未設定則用預設值)。

完成後即可呼叫驅動程式的七大服務方法。

七大語言服務使用範例

1. 字典服務

Dictionary dict = driver.getDictionary("english", "english");
DictionaryRecord dr = dict.getMeaning("dictionary");
// 迭代 dr 取得多重釋義...

2. 辭典服務

WordBook wb = driver.getWordBook("english");
// 同義詞
DictionaryRecord syn = wb.getSynonyms("dictionary");
while (syn != null) { /* ... */ syn = syn.getNextRecord(); }
if (wb.isSynonyms("dictionary", "lexicon")) { /* 兩詞互為同義 */ }
// 反義詞、上位詞、下位詞、整體名詞、部分名詞皆提供 getXxx() 與 isXxx() 成對方法

3. 拼寫檢查器

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")); // 相似詞建議

4. 單詞列表服務

WordLister wl = driver.getWordLister("english");
WordList pref = wl.findWithPrefix("perf");    // 相同前綴
WordList suff = wl.findWithSuffix("ces");     // 相同後綴
WordList sub  = wl.findWithSubstring("tiona"); // 共同子字串

5. 變位詞器

Anagrammizer an = driver.getAnagrammizer("english");
DictionaryRecord ana = an.anagrammise(new TextWord("clear")); // 所有變位詞
boolean isAna = an.isAnagram("clear", "clare"); // 判斷是否互為變位詞

6. 語法檢查器

GrammarChecker gc = driver.getGrammarChecker("english");
gc.check(sentence);        // 判斷語法正確性
gc.correct(sentence);      // 糾正語法
gc.suggestSimilar(sentence); // 建議修正方式

7. 翻譯器

Translator tr = driver.getTranslator("english", "french");
tr.translate(word);           // 單詞翻譯
tr.translateSentence(sentence); // 句子翻譯
// 可用於資源綁定檔案的多語言轉換

示範應用程式

JADT 附帶示範程式展示 Text/XML 兩種驅動程式功能。執行方式:

java com.ibm.jadtsample.JADTSampleApplication

需於資源檔案部署目錄下執行。執行畫面如下:

示範應用程式畫面

結語

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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved