posted by dalnimbest 2016. 8. 1. 11:37

JMDict(Japanese-Multilingual Dictionary)는 Jim Breen교수가 만든 EDict를 기반으로 만든 일본어사전이다. 홈페이지


xml로 구성되어 있으며, 이해하기 위해서는 먼저 dtd를 이해해야 한다.

아래는 기본적으로 사용되는 엘리먼트에 대한 설명이다.


<!DOCTYPE JMdict [
 <!-- root element는 JMDict이다. -->
 <!ELEMENT JMdict (entry*)>
  <!-- JMDict엘리먼트는 entry라는 엘리먼트가 0개 또는 여러개가 있다.-->
 <!ELEMENT entry (ent_seq, k_ele*, r_ele+, info?, sense+)>
  <!-- entry엘리먼트는 ent_seq(일련번호), k_ele(kanji elements, 0 또는 여러개),
  r_ele(reading elements, 1개 또는 여러개), info(general information, 0개 또는 1개),
  sense(sense elements, 1개 또는 여러개) 엘리먼트를 순서대로 가진다. 현재까지는 info 엘리먼트는 없는것으로 보인다.-->
 <!ELEMENT ent_seq (#PCDATA)>
  <!-- ent_seq엘리먼트는 각 entry엘리먼트마다 유일한 일련번호를 가지며,
  그 속성은 파싱가능한 문자열로 이루어진다. (PCDATA) -->
 <!ELEMENT k_ele (keb, ke_inf*, ke_pri*)>
  <!-- k_ele(kanji element)는 keb(한개), ke_inf(0개 또는 여러개), ke_pri(0개 또는 여러개)등의 엘리먼트를 순서대로 가진다.  -->
 <!ELEMENT keb (#PCDATA)>
 <!-- keb는 순수가나로만 이루어진 것을 제외한 단어나 구를 말한다. (대부분 한자이나, 영어등 다른 문자일수도 있다.) -->
 <!ELEMENT ke_inf (#PCDATA)>
 <!-- keb의 철자법(orthography)이나, 送り仮名(okurigana, 한자어 옆의 조사등으로 行(い)く의く를 말한다.)
 -->
 <!ELEMENT ke_pri (#PCDATA)>
 <!-- 단어의 중요도나 빈도등을 나타낸다. news1/2는 마이니치신문으로 부터 단어 빈도를 추출한것으로 news1은 처음 12,000단어 news2는 그다음 12,000단어를 나타낸다. nfxx는 500단어씩 끊어서 단어빈도를 나타낸다. -->
 
 <!--                                                                   -->
 <!ELEMENT r_ele (reb, re_nokanji?, re_restr*, re_inf*, re_pri*)>
 <!-- r_ele는 reading element로 re, re_nokanji, re_restr, re_inf, re_pri로 구성된다. -->
 <!ELEMENT reb (#PCDATA)>
 <!-- reb는 가나 또는 장음(chouon), 반복어(kurikaeshi)등을 표시한다. -->
 <!ELEMENT re_nokanji (#PCDATA)>
 <!-- keb에 해당되는 reb가 실제 kanji의 읽는법과 다를때 사용한다. 주로 외국지명등 외래어 표시때 사용한. (한국/중국 한자를 읽을때 인가?) -->
 <!ELEMENT re_restr (#PCDATA)>
 <!-- keb(한자)가 여러개 있을때 해당되는 reb(읽기)의 keb를 다시 보여준다. 주로 reb가 두개 이상있을때 나타나며, 히라가나, 가타가나로 읽는 reb가 있을때 자주 나타난다. -->
 <!ELEMENT re_inf (#PCDATA)>
 <!-- reb에서 특정한 상황에서 읽기를 해야할때 표시함. entity값이 들어감. -->
 <!ELEMENT re_pri (#PCDATA)>
 <!-- ke_pri와 동일하게, 중요도를 나타낸다. -->
 
 <!--                                                                   -->
 <!ELEMENT sense (stagk*, stagr*, pos*, xref*, ant*, field*, misc*, s_inf*, lsource*, dial*, gloss*, example*)>
 <!-- sense는 단어의 뜻 및 관련된 다른정보를 표시한다. 다의어인 경우에는 sense가 여러개 나타난다.--> 
 <!ELEMENT stagr (#PCDATA)>
 <!-- stagr의 속성에 해당되는 keb/reb에 국한되는 sense를 표시함.-->
 <!ELEMENT xref (#PCDATA)*>
 <!-- 다른 entry와 비슷하거나 관계있을때 사용. 속성은 다른 entry의 keb또는 reb이다.-->
 <!ELEMENT ant (#PCDATA)*>
 <!-- ant의 속성은 현재 entry의 반대어를 나타낸다. (예, 악행 - 선행) -->
 <!ELEMENT pos (#PCDATA)>
 <!-- 품사(Part-of-speech)를 나타내며 속성은 entity에 정의 되어 있다. -->
 <!ELEMENT field (#PCDATA)>
 <!-- 단어가 사용되는 분야을 설정한다.(불교계, 과학계용어등)-->
 <!ELEMENT misc (#PCDATA)>
 <!-- 단어에 대한 기타 정보들 -->
 <!ATTLIST lsource xml:lang CDATA "eng">
 <!-- 단어가 외래어일때 해당국가 표시 -->
 <!ATTLIST lsource ls_type CDATA #IMPLIED>
 <!-- 외래어에 대해서 fully 또는 partially로 설명할때를 구분. 생략하면 full이다.-->
 <!ATTLIST lsource ls_wasei CDATA #IMPLIED>
 <!-- 외래어로부터 일본어가 만들어졌지만, 해당 외래어에서는 그런 용어가 없을때 (콩글리쉬)-->
 <!ELEMENT dial (#PCDATA)>
 <!-- 어느지역 사투리인지-->
 <!ELEMENT gloss (#PCDATA | pri)*>
 <!-- 단어의 뜻 영어가 아닌 다른 언어로 뜻을 표시할때는 xml:lang="fr" 처럼 추가 표기해준다.-->

 <!ELEMENT s_inf (#PCDATA)>
 <!-- sense-information 엘리먼트는 단어에 대해서 추가정보를 준다.-->
 
 <!ENTITY abbr "abbreviation"> 
 <!ENTITY Buddh "Buddhist term">
 <!ENTITY chem "chemistry term">

 <!-- chem은 화확용어임.-->
]>

 

아래는 실제xml내용중 일부이다.

<JMdict>
<entry>
<ent_seq>1171270</ent_seq>
<k_ele>
<keb>右翼</keb>
<ke_pri>ichi1</ke_pri>
<ke_pri>news1</ke_pri>
<ke_pri>nf04</ke_pri>
</k_ele>
<r_ele>
<reb>うよく</reb>
<re_pri>ichi1</re_pri>
<re_pri>news1</re_pri>
<re_pri>nf04</re_pri>
</r_ele>
<sense>
<pos>&adj-no;</pos>
<gloss>right-wing</gloss>
<gloss xml:lang="fr">aile droite (oiseau, armée, parti politique, base-ball)</gloss>
<gloss xml:lang="ru">пра́вое крыло́</gloss>
<gloss xml:lang="ru">пра́вый фланг</gloss>
<gloss xml:lang="de">die Rechte</gloss>
<gloss xml:lang="de">rechter Flügel</gloss>
</sense>
<sense>
<pos>&n;</pos>
<gloss>right field (e.g. in sport)</gloss>
<gloss>right flank</gloss>
<gloss>right wing</gloss>
<gloss xml:lang="de">{Sport}</gloss>
<gloss xml:lang="de">rechte Flanke</gloss>
<gloss xml:lang="de">rechter Flügel</gloss>
</sense>
</entry>