司法試験
興味を持ったきっかけ
「Better Call Saul(ベター・コール・ソウル)」を見たのがきっかけです。リーガルハイ経由ではないです。
Netflixだと見れますが、残念ながらAmazonではPrime会員でも有料となってしまいます。
Better Call Saulの主人公は「ブレイキング・バッド」で出てくるかなり怪しい弁護士です。この「ブレイキング・バッド」がものすごく面白くて好きだったので準レギュラーのこのうさんくさい弁護士もお気に入りとなってしましました。
違法なことばかりしていても口が達者で、コメディみたいな雰囲気ですが、シリアスなところは本当にシリアスになっていて面白いドラマです。
こんな感じのイメージでしたので実際はどんな試験を受けるんだろうと興味を持ちました。
自分は理系でしたので特に司法試験について詳しいとか、法律に明るいとか、天才で一ヶ月くらいで合格するとかそういうことはないです。
ただの興味を持った一般人くらいです。
失敗したこと2つとうまくいったの1つを紹介します。
見つけた問題
法務省:平成26年司法試験問題
便利な時代で少し検索をかけるだけでどんな問題が出題されていたのかがすぐに見つかりました。
知識は一切ないので下手に理解しようとするより、どういう単語がたくさん出現しているのかを調べた方が頭に残りやすそうだと判断しました。
Pythonの練習
やろうとして失敗したこと 1
Pythonで先ほどの問題のPDFをテキストとして抜き出したかった。そのために「pdfminer」というものをインストールしたがエラーが続出した。
ドキュメントも少なく、ネット上にもエラー報告はたくさんあったが決め手となる解決策は特に見つからなかった。たぶんバージョンの違いとか単純な話だと思うけど力尽きてしまった。
次は「pyPdf」というのを使ってやろうと思う。
すぐに試そうとしたが、このサイトが落ちていてダウンロードすらできなかった。後日頑張ることになった。
http://pybrary.net/pyPdf/
やろうとして失敗したこと 2
Mecabによって単語を切り出して出現回数をカウントしようとした。ここで書いたようにMecabを入れてあれば、Python用のインストールはすぐにできる。
Mecabとは?インストールの方法
このコマンドを打ち込むだけで終了。
pip3 install mecab-python3
試しに次のコードを書いて見て実行すれば動作確認ができる。自分はjupyter notebookで実行しました。
import sys import MeCab m = MeCab.Tagger ("-Ochasen") print(m.parse ("今日もしないとね"))
正しい出力結果は次のようになります。エラーが出なければ無事に終了です。
Jupyter notebook入れ方
ちなみにMecabを使って単語に区切る、という作戦は失敗した。
法律用語は専門的過ぎてMecabが単語の区切り位置をうまく認識できず、デタラメみたいな結果になってしまった。
ユーザー辞書を追加しようとしたが、法律知識がないのと法律用語は山のようにあるため、これも諦めた。
うまくいった?こと
Mecabで単語には区切れないということがわかったので代替案を考えた。法律の問題文を見ていると漢字がやたら多いし、しかも1文字1文字が長い。ドイツ語みたい。
漢字と数字とひらがなに分割すれば、単語の抽出が可能では?と考えた。
参考:文字の種類で切り出す (Python) – プログラミング工場 / Python
書いたコード
import re import sys import MeCab from collections import Counter def parse(text): res = re.compile(u'[一-龠]+|[一-龠]+[a-zA-Z0-9]+') result = res.findall(text) return result def parseNum(text): res = re.compile(u'[一-龠]+[a-zA-Z0-9]+') result = res.findall(text) return result #m = MeCab.Tagger ("-Ochasen") f = open('Law2.txt') data = f.read() # ファイル終端まで全て読んだデータを返す f.close() arraylist=[] arraylist_num=[] lines1 = data.split('n') # 改行で区切る(改行文字そのものは戻り値のデータには含まれない) for line in lines1: for e in parse(line): if len(e) > 1: arraylist.append(e) for line in lines1: for e in parseNum(line): if len(e) > 1: arraylist_num.append(e) arraylist.extend(arraylist_num) counter = Counter(arraylist) for word, cnt in counter.most_common(): print(word , cnt)
作った後に気づいたのが法律では憲法何条とか、条文の番号が必要になってくるじゃんということ。
漢字のみの出現回数でランキングをとったもの、漢字+数字の出現回数でランキングをとったもの、この二つを作成した。そして合体させて最終的なランキングをとった。
短答式試験問題集[公法系科目]では下のようになった。長いので適当にカットした。
出現単語と出現回数のセット。短答式試験だから威力を発揮していないんだろうと前向きに判断した。
他の問題文でもやって見たいけど、その前にまだまだ改良の余地が残っているのがわかった。
最高裁判所がたくさん出てくる問題なのか、わからない。
この結果じゃさっぱりわからない、まだその1だから。
~ fin ~
場合 109 配点 40 各記述 40 解答欄 37 処分 26 規定 24 自由 21 条第 21 後記 20 最高裁判所 20 組合 19 後記1 19 必要 19 判例 19 提起 18 許可 18 以下 18 趣旨 17 基準 16 取消 16 憲法 15