Wikipedia Dump File
Wikipedia, Wiktionary は定期的にダンプファイル(=中身を全部抜き出したもの.dump truck のダンプと同じ語)を出力しており,誰でもダウンロードできるようになっています.(すごい仕組みですね)
ダウンロード可能なファイルは「インデックスファイル」と「ダンプ本体のファイル」の二種類から構成されています.両方のファイルをダウンロードする必要があります.
「インデックスファイル」は本の目次に相当するもので「ここに内容が書かれている」という情報が書かれています.
nlp4j-wiki
ダンプファイルの読み込みには以下のライブラリを利用します。
ダンプデータを利用するメリット
WikiPediaを検索するだけであれば「Media Wiki」というAPIが用意されており,REST APIを利用することでデータを取り出せるようになっています.
ただし呼び出し回数に制限があり,すべてのデータを取得するといったことは事実上不可能です.
ダンプデータの読み出しであれば制限はありませんので,自然言語処理の研究などに用いるような場合でもとても利用がしやすくなります.
データの用意
以下からダウンロードします.直近の4か月分のみがダウンロード可能になっているようです.
日本語版 Wiktionary
日本語版 Wiktionary 2022年3月版
日本語版 Wikipedia
※追記
トップページから辿ると少しわかりにくいので補足
Dump の記録が表示されるので該当のリンクをクリック
Maven
私が日曜大工で開発しているNLP4Jというライブラリに機能をまとめてありますので短いコードで内容を読むことができます.
ここでは「学校」というエントリーについて読みだしています.
<!-- https://mvnrepository.com/artifact/org.nlp4j/nlp4j-wiki -->
<dependency>
<groupId>org.nlp4j</groupId>
<artifactId>nlp4j-wiki</artifactId>
<version>1.1.0.0</version>
</dependency>
コード
以下のコードではWiktionaryのデータを読んでいます.
Wiktionaryのほうがデータが小さいため気軽に試すことができます.
コンソールへの出力は「Wiki形式」「Plain Text形式」「HTML形式」を出力できるようにしてあります.もともとのデータは「Wiki形式」ですが,ライブラリ内部で変換して「Plain Text」「HTML」にも変換できるようにしてあります.
package nlp4j.wiki.examples;
import java.io.File;
import nlp4j.wiki.WikiDumpReader;
import nlp4j.wiki.WikiPage;
public class WikiDumpReaderExample2 {
public static void main(String[] args) throws Exception {
String wikidumpfile_name = "/usr/local/data/wiki/" + "jawiktionary-20220301-pages-articles-multistream.xml.bz2";
String wikiindexfile_name = "/usr/local/data/wiki/"
+ "jawiktionary-20220301-pages-articles-multistream-index.txt.bz2";
String entry = "学校";
File wikidumpfile = new File(wikidumpfile_name);
File wikiindexfile = new File(wikiindexfile_name);
WikiDumpReader dumpReader = new WikiDumpReader(wikidumpfile, wikiindexfile);
{
WikiPage page = dumpReader.getItem(entry);
System.err.println("<text>");
System.err.println(page.getText()); // (1) Wiki 形式
System.err.println("</text>");
System.err.println("<plaintext>");
System.err.println(page.getPlainText()); // (2) Plain Text に近い形式
System.err.println("</plaintext>");
System.err.println("<html>");
System.err.println(page.getHtml()); // (3) HTML 形式
System.err.println("</html>");
}
dumpReader.close();
}
}
出力1 (Wiki形式)
<text>
{{半保護S}}
=={{ja}}==
{{ja-DEFAULTSORT|がっこう}}
{{wikipedia}}
[[Category:{{ja}}]]
==={{noun}}===
[[Category:{{ja}}_{{noun}}]]
[[Category:{{ja}}_学校|*]]
'''[[学]][[校]]'''(がっこう 旧字体:[[學校]])
#なんらかの[[教育]]が体系的に行われる[[組織]]又はその[[設備]]。[[学舎]]、[[まなびや]]。
#語義1のうち、教育する事項について[[履修]][[課程]]を定め、[[学生]]又は[[児童]]、[[生徒]]の[[修学]]状況を管理し、それを証する[[機関]]。ただし教育機関であっても学習塾や予備校などは除く。
#(法律)日本の学校教育法においては[[幼稚園]]、[[小学校]]、[[中学校]]、[[義務教育学校]]、[[高等学校]]、[[中等教育学校]]、[[特別支援学校]]、[[大学]][[及び]][[高等専門学校]]とされる(同法第一条)。
#[[授業]]。
#*今日は学校がある日だ。
===={{rel}}====
* [[学校教育]]
* [[幼稚園]]
* [[小学校]]
* [[中学校]]
* [[高等学校]]
* [[専門学校]]
* [[大学]]/[[大学校]]
* [[学院]]、[[学園]]、[[学館]]
===={{trans}}====
{{top}}
*[[{{af}}]]<!--*Afrikaans-->: [[skool]]
*[[{{ar}}]]<!--*Arabic-->: {{ARchar|[[مدرسة]]}} (madrása) {{f}}
*[[{{be}}]]<!--*Belarusian-->: [[школа]] (škóla) {{f}}
*[[{{bg}}]]<!--*Bulgarian-->: [[училище]] (učílišče) {{n}}
*[[{{br}}]]<!--*Breton-->: [[skol]] {{f}}, skolioù {{p}}
*[[{{ca}}]]<!--*Catalan-->: [[escola]] {{f}}
*[[{{cs}}]]<!--*Czech-->: [[škola]] {{f}}
*[[{{cy}}]]<!--*Welsh-->: [[ysgol]] {{f}}
*[[{{da}}]]<!--*Danish-->: [[skole]]
*[[{{de}}]]<!--*German-->: [[Schule]] {{f}}
*[[{{el}}]]<!--*Greek-->: [[σχολείο]] (skholío) {{n}}
*{{en}}: [[school]]
*[[{{eo}}]]<!--*Esperanto-->: [[lernejo]]
*[[{{es}}]]<!--*Spanish-->: [[escuela]] {{f}}
*[[{{et}}]]<!--*Estonian-->: [[kool]]
*[[{{eu}}]]<!--*Basque-->: [[eskola]], [[ikastola]]
*[[{{fi}}]]<!--*Finnish-->: [[koulu]]
*[[{{fr}}]]<!--*French-->: [[école]] {{f}}, [[collège]] {{m}}
*[[{{ga}}]]<!--*Irish-->: [[scoil]] {{f}}
*[[{{gd}}]]<!--*Scottish Gaelic-->: [[sgoil]]
*[[{{he}}]]<!--*Hebrew-->: [[בית ספר]] (bet sefer) {{m}}
*[[{{hu}}]]<!--*Hungarian-->: [[iskola]]
*[[{{ia}}]]<!--*Interlingua-->: [[schola]]
*[[{{id}}]]<!--*Indonesian-->: [[sekolah]]
*[[{{io}}]]<!--*Ido-->: [[skolo]]
*[[{{it}}]]<!--*Italian-->: [[scuola]] {{f}}
*[[{{ko}}]]: {{朝鮮語訳|word=학교|hanja=學校|rom=hak.kyo}}
*[[{{ku}}]]<!--*Kurdish-->: [[dibistan]] {{f}}, [[fêrgeh]] {{f}}, [[xwendingeh]] {{f}}, [[qutabxane]] {{f}}, [[medrese]] {{f}}, [[mekteb]] {{f}}, [[perwerdegeh]] {{f}}
*[[{{lt}}]]<!--*Lithuanian-->: [[mokykla]] {{f}}
*[[{{nl}}]]<!--*Dutch-->: school {{f}}
*[[{{pl}}]]<!--*Polish-->: [[szkoła]] {{f}}
*[[{{ps}}]]<!--*Pushto-->: {{FAchar|[[مکتب]]}} (mekteb) {{f}}
*[[{{pt}}]]<!--*Portuguese-->: [[escola]] {{f}}
*[[{{qu}}]]<!--*Quechua-->: [[yachay wasi]]
*[[{{ro}}]]<!--*Romanian-->: [[şcoală]] {{f}}
*[[{{ru}}]]<!--*Russian-->: [[школа]] (škóla) {{f}}
*[[{{sk}}]]<!--*Slovak-->: [[škola]] {{f}}
*[[{{sl}}]]<!--*Slovene-->: [[šola]] {{f}}
*[[{{sq}}]]<!--*Albanian-->: [[shkollë]] {{f}}
*[[{{sh}}]]: {{セルビア・クロアチア語訳|cyr=школа|lat=škola|gen=f}}
*[[{{sv}}]]<!--*Swedish-->: [[skola]]
*[[{{sw}}]]<!--*Swahili-->: [[shule]]
*[[{{te}}]]<!--*Telugu-->: [[పాఠశాల]] (paaTaSaala), [[విద్యాలయం]] (vidyaalayam)
*[[{{th}}]]<!--*Thai-->: {{Lang|th|[[โรงเรียน]]}}
*[[{{tl}}]]<!--*Tagalog-->: [[skwelahan]], [[paaralan]] {{n}}
*[[{{tr}}]]<!--*Turkish-->: [[okul]]
*[[{{zh}}]]<!--*Chinese-->: [[#{{zh}}|学校]] ([[學校]] xué xiào)
{{bottom}}
----
=={{zh}}==
{{wikipedia|lang=zh}}
[[category:{{zh}}|xue2xiao4]]
==={{noun}}===
[[Category:{{zh}}_{{noun}}|xue2xiao4]]
[[Category:{{zh}}_学校|*]]
[[Category:学校|*]]
{{ZHsim|'''学校'''}} {{zh-ts|'''[[學校]]'''}} (xuéxiào)
#(日本語に同じ)学校
[[Category:HSKレベル1級|xue2xiao4]]
[[Category:HSKレベル甲|xue2xiao4]]
</text>
出力2 (Plain Text形式)
<plaintext>
1.
---
[[Category:]]
1.1.
-----
[[Category:_]] [[Category:_学校|*]]**学校**(がっこう 旧字体:學校)
なんらかの教育が体系的に行われる組織又はその設備。学舎、まなびや。
語義1のうち、教育する事項について履修課程を定め、学生又は児童、生徒の修学状況を管理し、それを証する機関。ただし教育機関であっても学習塾や予備校などは除く。
(法律)日本の学校教育法においては幼稚園、小学校、中学校、義務教育学校、高等学校、中等教育学校、特別支援学校、大学及び高等専門学校とされる(同法第一条)。
授業。
今日は学校がある日だ。
1.1.1.
-------
学校教育
幼稚園
小学校
中学校
高等学校
専門学校
大学/大学校
学院、学園、学館
1.1.2.
-------
[[]]: skool
[[]]: (madrása)
[[]]: школа (škóla)
[[]]: училище (učílišče)
[[]]: skol , skolioù
[[]]: escola
[[]]: škola
[[]]: ysgol
[[]]: skole
[[]]: Schule
[[]]: σχολείο (skholío)
: school
[[]]: lernejo
[[]]: escuela
[[]]: kool
[[]]: eskola, ikastola
[[]]: koulu
[[]]: école , collège
[[]]: scoil
[[]]: sgoil
[[]]: בית ספר (bet sefer)
[[]]: iskola
[[]]: schola
[[]]: sekolah
[[]]: skolo
[[]]: scuola
[[]]:
[[]]: dibistan , fêrgeh , xwendingeh , qutabxane , medrese , mekteb , perwerdegeh
[[]]: mokykla
[[]]: school
[[]]: szkoła
[[]]: (mekteb)
[[]]: escola
[[]]: yachay wasi
[[]]: şcoală
[[]]: школа (škóla)
[[]]: škola
[[]]: šola
[[]]: shkollë
[[]]:
[[]]: skola
[[]]: shule
[[]]: పాఠశాల (paaTaSaala), విద్యాలయం (vidyaalayam)
[[]]:
[[]]: skwelahan, paaralan
[[]]: okul
[[]]: [[#|学校]] (學校 xué xiào)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.
---
[[category:|xue2xiao4]]
2.1.
-----
[[Category:_|xue2xiao4]] [[Category:_学校|*]] (xuéxiào)
(日本語に同じ)学校
</plaintext>
出力3 (HTML形式)
<html>
<p><a href="" title="Template:半保護S">Template:半保護S</a>
</p><table id="toc" class="toc" summary="Contents">
<tr>
<td>
<div id="toctitle">
<h2>Contents</h2>
</div>
<ul>
<ul>
<li class="toclevel-1"><a href="#Template:ja">Template:ja</a>
<ul>
<li class="toclevel-2"><a href="#Template:noun">Template:noun</a>
<ul>
<li class="toclevel-3"><a href="#Template:rel">Template:rel</a>
</li>
<li class="toclevel-3"><a href="#Template:trans">Template:trans</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="#Template:zh">Template:zh</a>
<ul>
<li class="toclevel-2"><a href="#Template:noun_2">Template:noun</a>
</li>
</ul>
</li>
</ul>
</ul></td></tr></table><hr/>
<h2><span class="mw-headline" id="Template:ja"><a href="" title="Template:ja">Template:ja</a></span></h2>
<p><a href="" title="Template:ja-DEFAULTSORT">Template:ja-DEFAULTSORT</a>
<a href="" title="Template:wikipedia">Template:wikipedia</a>
[[Category:<a href="" title="Template:ja">Template:ja</a>]]
</p><h3><span class="mw-headline" id="Template:noun"><a href="" title="Template:noun">Template:noun</a></span></h3>
<p>[[Category:<a href="" title="Template:ja">Template:ja</a>_<a href="" title="Template:noun">Template:noun</a>]]
[[Category:<a href="" title="Template:ja">Template:ja</a>_学校|*]]
<b><a href="" title="学">学</a><a href="" title="校">校</a></b>(がっこう 旧字体:<a href="" title="學校">學校</a>)
</p>
<ol>
<li>なんらかの<a href="" title="教育">教育</a>が体系的に行われる<a href="" title="組織">組織</a>又はその<a href="" title="設備">設備</a>。<a href="" title="学舎">学舎</a>、<a href="" title="まなびや">まなびや</a>。</li>
<li>語義1のうち、教育する事項について<a href="" title="履修">履修</a><a href="" title="課程">課程</a>を定め、<a href="" title="学生">学生</a>又は<a href="" title="児童">児童</a>、<a href="" title="生徒">生徒</a>の<a href="" title="修学">修学</a>状況を管理し、それを証する<a href="" title="機関">機関</a>。ただし教育機関であっても学習塾や予備校などは除く。</li>
<li>(法律)日本の学校教育法においては<a href="" title="幼稚園">幼稚園</a>、<a href="" title="小学校">小学校</a>、<a href="" title="中学校">中学校</a>、<a href="" title="義務教育学校">義務教育学校</a>、<a href="" title="高等学校">高等学校</a>、<a href="" title="中等教育学校">中等教育学校</a>、<a href="" title="特別支援学校">特別支援学校</a>、<a href="" title="大学">大学</a><a href="" title="及び">及び</a><a href="" title="高等専門学校">高等専門学校</a>とされる(同法第一条)。 </li>
<li><a href="" title="授業">授業</a>。
<ul>
<li>今日は学校がある日だ。</li>
</ul></li>
</ol>
<h4><span class="mw-headline" id="Template:rel"><a href="" title="Template:rel">Template:rel</a></span></h4>
<ul>
<li><a href="" title="学校教育">学校教育</a></li>
<li><a href="" title="幼稚園">幼稚園</a></li>
<li><a href="" title="小学校">小学校</a></li>
<li><a href="" title="中学校">中学校</a></li>
<li><a href="" title="高等学校">高等学校</a></li>
<li><a href="" title="専門学校">専門学校</a></li>
<li><a href="" title="大学">大学</a>/<a href="" title="大学校">大学校</a></li>
<li><a href="" title="学院">学院</a>、<a href="" title="学園">学園</a>、<a href="" title="学館">学館</a></li>
</ul>
<h4><span class="mw-headline" id="Template:trans"><a href="" title="Template:trans">Template:trans</a></span></h4>
<p><a href="" title="Template:top">Template:top</a>
</p>
<ul>
<li>[[[[:Template:af]]]]: <a href="" title="Skool">skool</a></li>
<li>[[[[:Template:ar]]]]: <a href="" title="Template:ARchar">Template:ARchar</a> (madrása) <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:be]]]]: <a href="" title="Школа">школа</a> (škóla) <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:bg]]]]: <a href="" title="Училище">училище</a> (učílišče) <a href="" title="Template:n">Template:n</a></li>
<li>[[[[:Template:br]]]]: <a href="" title="Skol">skol</a> <a href="" title="Template:f">Template:f</a>, skolioù <a href="" title="Template:p">Template:p</a></li>
<li>[[[[:Template:ca]]]]: <a href="" title="Escola">escola</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:cs]]]]: <a href="" title="Škola">škola</a> <a href="" title="Template:f">Template:f</a> </li>
<li>[[[[:Template:cy]]]]: <a href="" title="Ysgol">ysgol</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:da]]]]: <a href="" title="Skole">skole</a></li>
<li>[[[[:Template:de]]]]: <a href="" title="Schule">Schule</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:el]]]]: <a href="" title="Σχολείο">σχολείο</a> (skholío) <a href="" title="Template:n">Template:n</a></li>
<li><a href="" title="Template:en">Template:en</a>: <a href="" title="School">school</a></li>
<li>[[[[:Template:eo]]]]: <a href="" title="Lernejo">lernejo</a></li>
<li>[[[[:Template:es]]]]: <a href="" title="Escuela">escuela</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:et]]]]: <a href="" title="Kool">kool</a></li>
<li>[[[[:Template:eu]]]]: <a href="" title="Eskola">eskola</a>, <a href="" title="Ikastola">ikastola</a></li>
<li>[[[[:Template:fi]]]]: <a href="" title="Koulu">koulu</a></li>
<li>[[[[:Template:fr]]]]: <a href="" title="École">école</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Collège">collège</a> <a href="" title="Template:m">Template:m</a></li>
<li>[[[[:Template:ga]]]]: <a href="" title="Scoil">scoil</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:gd]]]]: <a href="" title="Sgoil">sgoil</a></li>
<li>[[[[:Template:he]]]]: <a href="" title="בית ספר">בית ספר</a> (bet sefer) <a href="" title="Template:m">Template:m</a></li>
<li>[[[[:Template:hu]]]]: <a href="" title="Iskola">iskola</a></li>
<li>[[[[:Template:ia]]]]: <a href="" title="Schola">schola</a></li>
<li>[[[[:Template:id]]]]: <a href="" title="Sekolah">sekolah</a></li>
<li>[[[[:Template:io]]]]: <a href="" title="Skolo">skolo</a></li>
<li>[[[[:Template:it]]]]: <a href="" title="Scuola">scuola</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:ko]]]]: <a href="" title="Template:朝鮮語訳">Template:朝鮮語訳</a></li>
<li>[[[[:Template:ku]]]]: <a href="" title="Dibistan">dibistan</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Fêrgeh">fêrgeh</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Xwendingeh">xwendingeh</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Qutabxane">qutabxane</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Medrese">medrese</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Mekteb">mekteb</a> <a href="" title="Template:f">Template:f</a>, <a href="" title="Perwerdegeh">perwerdegeh</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:lt]]]]: <a href="" title="Mokykla">mokykla</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:nl]]]]: school <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:pl]]]]: <a href="" title="Szkoła">szkoła</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:ps]]]]: <a href="" title="Template:FAchar">Template:FAchar</a> (mekteb) <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:pt]]]]: <a href="" title="Escola">escola</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:qu]]]]: <a href="" title="Yachay wasi">yachay wasi</a></li>
<li>[[[[:Template:ro]]]]: <a href="" title="Şcoală">şcoală</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:ru]]]]: <a href="" title="Школа">школа</a> (škóla) <a href="" title="Template:f">Template:f</a> </li>
<li>[[[[:Template:sk]]]]: <a href="" title="Škola">škola</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:sl]]]]: <a href="" title="Šola">šola</a> <a href="" title="Template:f">Template:f</a></li>
<li>[[[[:Template:sq]]]]: <a href="" title="Shkollë">shkollë</a> <a href="" title="Template:f">Template:f</a> </li>
<li>[[[[:Template:sh]]]]: <a href="" title="Template:セルビア・クロアチア語訳">Template:セルビア・クロアチア語訳</a></li>
<li>[[[[:Template:sv]]]]: <a href="" title="Skola">skola</a></li>
<li>[[[[:Template:sw]]]]: <a href="" title="Shule">shule</a></li>
<li>[[[[:Template:te]]]]: <a href="" title="పాఠశాల">పాఠశాల</a> (paaTaSaala), <a href="" title="విద్యాలయం">విద్యాలయం</a> (vidyaalayam)</li>
<li>[[[[:Template:th]]]]: <a href="" title="Template:Lang">Template:Lang</a></li>
<li>[[[[:Template:tl]]]]: <a href="" title="Skwelahan">skwelahan</a>, <a href="" title="Paaralan">paaralan</a> <a href="" title="Template:n">Template:n</a></li>
<li>[[[[:Template:tr]]]]: <a href="" title="Okul">okul</a></li>
<li>[[[[:Template:zh]]]]: [[#<a href="" title="Template:zh">Template:zh</a>|学校]] (<a href="" title="學校">學校</a> xué xiào)</li>
</ul>
<p><a href="" title="Template:bottom">Template:bottom</a></p><hr />
<h2><span class="mw-headline" id="Template:zh"><a href="" title="Template:zh">Template:zh</a></span></h2>
<p><a href="" title="Template:wikipedia">Template:wikipedia</a>
[[category:<a href="" title="Template:zh">Template:zh</a>|xue2xiao4]]
</p><h3><span class="mw-headline" id="Template:noun_2"><a href="" title="Template:noun">Template:noun</a></span></h3>
<p>[[Category:<a href="" title="Template:zh">Template:zh</a>_<a href="" title="Template:noun">Template:noun</a>|xue2xiao4]]
[[Category:<a href="" title="Template:zh">Template:zh</a>_学校|*]]
<a href="" title="Template:ZHsim">Template:ZHsim</a> <a href="" title="Template:zh-ts">Template:zh-ts</a> (xuéxiào)
</p>
<ol>
<li>(日本語に同じ)学校</li>
</ol>
<p>
</p>
</html>
続き
ここでお気づきの方もあるかもしれませんが,Wiki Pageの情報には「これはいらないのでは?」という情報も多く含まれております.Wiktionary でも「日本語の意味」が取得できれば十分な場合も多いですよね.
そこでNLP4Jでは不要な情報をフィルタリングする機能も用意しております.フィルタリング機能についてはまた別の機会にご紹介したいと思います.