XSLTを使ってXMLデータからオープン拡張辞書形式に変換する方法(1)

Microsoft Office IME2010からオープン拡張辞書と呼ばれる新しい辞書フォーマットがサポートされました。オープン拡張辞書はXML形式で記述することが可能になり、容易に編集することが可能となります。すでに何らかの単語リストをXML形式で持っていれば、XSLT(XML Stylesheet Language Transformations)を使って簡単にオープン拡張辞書を作成することできます。本記事ではXMLデータからオープン拡張辞書を作成する方法について解説したいと思います。

オープン拡張辞書フォーマット

オープン拡張辞書のXML形式のドキュメントはダウンロード可能です。以下のURLにアクセスし、上から2番目の” PackageForDLC\Open Extended Dictionary Format-Japanese.xps“をダウンロードしてください。

http://www.microsoft.com/downloads/details.aspx?FamilyID=f138dcd4-edb3-4319-bb69-82784e3ea52f&DisplayLang=ja

辞書を作成するには、大きく分けると2つの情報が必要になります。

  1. 辞書に関する情報(DictionaryHeaderタグ)
  2. 辞書に登録する単語情報(DictionaryEntryタグ)

XML形式は以下のようになります。

    <ns1:Dictionary xmlns:ns1="http://www.microsoft.com/ime/dctx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

      <ns1:DictionaryHeader>

              辞書に関する情報

      </ns1:DictionaryHeader>

      <ns1:DictionaryEntry>

              単語Aの定義

      </ns1:DictionaryEntry>

      <ns1:DictionaryEntry>

              単語Bの定義

      </ns1:DictionaryEntry>

              .

    </ns1:Dictionary>            

 

辞書データの作成準備

では、実際に辞書を作ってみたいと思います。作り方を説明するための具体的な例として、WikipediaXMLファイルから辞書(Wikipedia Dictionaryと命名)を作ってみたいと思います。WikipediaXMLファイルは以下の場所からダウンロードすることができます。Jawiki-latest-abstract.xmlを使います。

http://download.wikimedia.org/jawiki/latest/

(注)WikipediaのデータはCreative Commons Attribution-ShareAlike licenseに従って配布されています。詳細はリンク先をご覧ください。

すでに説明したとおり、辞書を作成するには以下の2つのデータが必要です。

  1. 辞書に関する情報
    • 辞書の名前、バージョン、copyright、等
  2. 辞書に登録する単語情報
    • 単語の表記、よみ、品詞、等

1.については辞書を生成する前にあらかじめ用意しておく必要があります。2.についてはすでにXMLデータを持っているという前提で、XSLTを使って変換します。こちらについては後程解説します。

辞書情報

辞書情報は以下の6つのデータをあらかじめ用意しておく必要があります。それぞれの意味についてはデータフォーマットドキュメントの8ページ以降に書いてありますので、そちらをご覧ください。

  1. 辞書GUID(重複しない)
  2. プロパティウィンドウに出てくる辞書名
  3. 候補ウィンドウに出てくる辞書名
  4. 辞書の説明
  5. Copyright
  6. 辞書を置く場所(URL)

今回作成するWikipedia Dictionaryはこのようにしました。

  1. 辞書作成時にGUIDを自動生成します
    • GUIDはPowerShellを使って生成することができます。以下のコマンドをPowerShellコンソールで入力し、出力された文字列の前後にかっこ({})をつけてください。Windows7をお使いであれば、PowerShellは「アクセサリ」の下に「Windows PowerShell」があるので起動してください。

[guid]::NewGuid().Guid.ToUpper()

  1. Wikipedia辞書(あ~と)
    • 単語を登録できる上限が36万語なので、この上限を回避するために念のため「あ」から「と」ではじまる単語だけを収録することとします。
  2. Wikipedia辞書(あ~と)
  3. Wikipediaから生成した辞書です
  4. この辞書は Creative Commons Attribution/Share-Alike License(http://creativecommons.org/licenses/by-sa/3.0/) の下で利用できます。
  5. http://download.wikimedia.org/jawiki/
    1. 辞書の置き場ではなく、XMLファイルの置き場ですが、暫定的にこちらにしています。

さて、このデータをオープン拡張辞書フォーマットの辞書ヘッダ部分(DictionaryHeaderタグ)に割り当てると、次のようになります。なお、青字の部分は説明なので、実際のXMLファイルには含まれません。

      <ns1:DictionaryHeader>

        <ns1:DictionaryGUID>{B309E2A5-B617-4E0B-88FB-FB9D09598850}</ns1:DictionaryGUID> 生成したGUIDを”{“と”}”で囲います

        <ns1:DictionaryLanguage>ja-jp</ns1:DictionaryLanguage> 日本語の辞書なので”ja-jp”を指定してください

        <ns1:DictionaryVersion>1</ns1:DictionaryVersion> 辞書のバージョン番号です。とりあえず1にしています。

        <ns1:SourceURL>http://download.wikimedia.org/jawiki/</ns1:SourceURL> 辞書の置き場所を指定してください。

        <ns1:CommentInsertion>true</ns1:CommentInsertion> 作成する辞書ではコメントを表示できるようにするので、trueにしています

        <ns1:DictionaryInfo Language="ja-jp"> 日本語の辞書情報を書きます

          <ns1:ShortName>Wikipedia辞書(あ~と)</ns1:ShortName> 候補ウィンドウに出てくる辞書名を指定します

          <ns1:LongName>日本のWikipedia辞書(あ~と)</ns1:LongName> プロパティに出てくる辞書名を指定します

          <ns1:Description>Wikipediaから生成した辞書です</ns1:Description> 辞書の説明を指定します

          <ns1:Copyright>この辞書はウィキペディア(http://ja.wikipedia.org/)のテキストを利用しています。テキストはクリエイティブ・コモンズ表示-継承ライセンス(CC-BY-SA)の下で利用可能です。追加の条件が適用される場合があります。詳細はウィキペディア利用規約を参照してください。ライセンスのURLhttp://creativecommons.org/licenses/by-sa/3.0/deed.ja </ns1:Copyright> Copyrightを指定します。

          <ns1:CommentHeader1>概要</ns1:CommentHeader1>

        </ns1:DictionaryInfo>

        <ns1:DictionaryInfo Language="en-us"> 英語の辞書情報を書きます。なくてもよいです。

          <ns1:ShortName>Wikipedia Dictionary(あ~と)</ns1:ShortName>

          <ns1:LongName>Japanese Wikipedia Dictionary(あ~と)</ns1:LongName>

          <ns1:Description>This dictionary is based on Japanese Wikipedia data.</ns1:Description>

          <ns1:Copyright>Wikipedia data is available under the Creative Commons Attribution/Share-Alike License (http://creativecommons.org/licenses/by-sa/3.0/legalcode) ; additional terms may apply. See Terms of Use (http://wikimediafoundation.org/wiki/Terms_of_Use) for details. </ns1:Copyright>

          <ns1:CommentHeader1>Abstract</ns1:CommentHeader1>

        </ns1:DictionaryInfo>

      </ns1:DictionaryHeader>

辞書情報に関する説明は以上になります。次回はXSLファイルを作る方法を説明したいと思います。

XSLTを使ってXMLデータからオープン拡張辞書形式に変換する方法(2)