Skip to content

日本の法令を校正するための機械学習モデル

Notifications You must be signed in to change notification settings

chuukai/proofread-jlaw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

proofread-jlaw

proofread-jlawは、日本の法令のテキストについて、機械学習を行った結果、作成されたモデルです。 このモデルを作成した目的は、法令文その他の文章にある単語について、別の単語を候補としてあげて、かつ、その蓋然性を確率として提示することにあります。 ユースケースとしては、法制執務において、法案をモデルに読み込ませて候補となる単語を含むテキストを作り、校正者に単語を入れ替えるべき単語の選択肢を提示することで、校正者の負担を軽減することが考えられます。 現在のモデルは、2021年5月10日現在の法令データを使用して、2021年7月23日にリリースしました。

モデルの作り方

環境

Google Colab Pro(有料)

法令データをダウンロード

XML一括ダウンロードのページで左側のメニューから「法令分類データ」を選び、50種のデータをそれぞれダウンロードし、伸張します。

XMLファイルから文章を抜き取り

昭和22年以降に制定された法令

XMLファイル(ファイル名の先頭が322から364,401から431,501から503)からSentenceタグの中身を抜き取ります。私の場合はnkfと、xml-twig-toolsパッケージの中にあるxml_grepを使いました。
コマンドを例示すると

nkf -w ./37/332AC0000000035_20200401_429AC0000000045/332AC0000000035_20200401_429AC0000000045.xml | xml_grep 'Sentence' --text_only /dev/stdin > ./37/332AC0000000035_20200401_429AC0000000045.sentence

となります。

昭和21年以前の法令

文語文になっているため、機械学習の対象としませんでした。

強調点の「ヽ」を削除、「つ」を小書きの「っ」に変換

小書きの「っ」は昭和まで使われておらず、このままでは分かち書きに支障が生じるため、「つ」を小書きの「っ」に変換します。
コマンドを例示すると

cat ./37/332AC0000000035_20200401_429AC0000000045.sentence | sh normalize2.sh > ./37/332AC0000000035_20200401_429AC0000000045.sentence.nml
cat - | perl -p -Mutf8 -CSD -e 's/ヽ//g;' -e 's/であつて/であって/g;' -e 's/であつた/であった/g;' -e 's/のあつた/のあった/g;' -e 's/にあつた/にあった/g;' -e 's/あつては/あっては/g;' -e 's/をもつて/をもって/g;' -e 's/によつて/によって/g;' -e 's/しなかつた/しなかった/g;' -e 's/ねじつた/ねじった/g;' -e 's/をはつた/をはった/g;' -e 's/にそつて/にそって/g;' -e 's/にはつて/にはって/g;' -e 's/つづつた/つづった/g;' -e 's/とつた/とった/g;' -e 's/なつた/なった/g;' -e 's/かかつた/かかった/g;' -e 's/いつて/いって/g;' -e 's/(\p{Han})つ([たて])/$1っ$2/g;'

となります。

ここから先はpublicbunruiwindow.ipynbのソースを見ていただいたほうが早い

ここで「既定文章量」とは、モデル作成にあたってメモリ不足にならないことを目的として、分かち書きされた文字列を結合するときの最大値(単位はbyte)をいいます。Google Colab Proの場合は2,160,000bytesにすると最も学習効率が良いのですが、どうしてもメモリ不足になる場合には1,690,000bytesとして作成しています。
ここで「規定文章量ごとのファイル」とは、上記の規定文章量に基づいて作成されたファイルをいいます。このレポジトリでは01-50wakatiallディレクトリに、私が作成したファイルを置いています。

  1. Mecabとmecab-ipadic-NEologdで個々のファイルを分かち書きしつつ、品詞単位でStopwordを削る。
  2. 機械学習モデルを規定文章量ごとに作成するため、未施行などにより重複した法令から古いもの1つにし、ファイルサイズを調べてbunruiwall-sort-uniq2.csvを作成する。
  3. 個々のファイルを結合して規定文章量ごとのファイルを作成する。
  4. 規定文章量ごとのファイルを対象として、単語をfasttextでベクトル化する。
  5. 規定文章量ごとのファイルにある単語ごとに前5単語後ろ5単語をくっつけてデータセットを作る。
  6. 規定文章量ごとに30回のmodel.fit後に機械学習モデルを保存する。

モデルの利用方法

モデルの概説

モデルはreleaseファイルとして置いていますので、適宜ダウロードしてください。
モデルは01から50までの法令の分類ごとに作成されており、さらに規定文章量に応じて枝番で分けられています。

分類名称 分類番号 枝番(「::」で間を省略)
憲法 01 00w
刑事 02 00w::03w
財務通則 03 00w::02w
水産業 04 00w::02w
観光 05 00w
国会 06 00w::15w
警察 07 00w::02w
国有財産 08 00w
鉱業 09 00w
郵務 10 00w
行政組織 11 00w::06w
消防 12 00w::02w
国税 13 00w::17w
工業 14 00w::07w
電気通信 15 00w::03w
国家公務員 16 00w::04w
国土開発 17 00w::03w
事業 18 00w
商業 19 00w::02w
労働 20 00w::06w
行政手続 21 00w::02w
土地 22 00w
国債 23 00w
金融・保険 24 00w::13w
環境保全 25 00w::04w
統計 26 00w
都市計画 27 00w::02w
教育 28 00w::02w
外国為替・貿易 29 00w
厚生 30 00w::08w
地方自治 31 00w::04w
道路 32 00w
文化 33 00w
陸運 34 00w::02w
社会福祉 35 00w::06w
地方財政 36 00w::07w
河川 37 00w
産業通則 38 00w::05w
海運 39 00w::03w
社会保険 40 00w::05w
司法 41 00w
災害対策 42 00w::02w
農業 43 00w::04w
航空 44 00w
防衛 45 00w::07w
民事 46 00w::05w
建築・住宅 47 00w::02w
林業 48 00w
貨物運送 49 00w
外事 50 00w::02w

About

日本の法令を校正するための機械学習モデル

Resources

Stars

Watchers

Forks

Packages

No packages published