法律文書において共起される単語ペアを列挙する。
前記事までn-gramで頑張っていたけれど本記事ではおとなしくMeCab利用。
参考
以下を参考にさせて頂いた。ただし、元記事ではグラフまでやっているが、本記事では頻出のペアを表示するまで。
3. Pythonによる自然言語処理 2-1. 共起ネットワーク
異なる点
元記事から手を加えた点だけ記載する。
利用しない単語
元記事では、名詞の共起をやっていた。本記事でもその点は同じ。名詞の中でも数(数詞)ではないものは削除した(あらかじめ削除したほうが良かったかも)点は異なる。法律の文書に〇〇条などの表現が邪魔になりそうな感じがした。
noun_list = [[v.split()[2] for v in m.parse(line).splitlines() if (len(v.split())>=3 and v.split()[3][:2]=='名詞' and v.split()[3][3::]!='数')] for line in lines]
追加したのは以下の部分のみ(だったと思う)。
and v.split()[3][3::]!='数'
v.split()[3]がMeCabの品詞で「名詞-一般」や「名詞-数」など。v.split()[3][3::]が「一般」や「数」の部分。
##出力データ作成
cnt_pairsはタプルのリスト。元記事と変数名は同じ。
[((単語X1, 単語X2), 出現回数N1), ((単語X3, 単語X4), 出現回数N2), ...]のような感じになっている。
[tap[0] for tap in cnt_pairs.items() if tap[1] > 300]
出現回数が300以上のものをリスト化している。
[('規定', 'こと'),
('項', '規定'),
('規定', '者'),
('者', 'こと'),
('者', '者'),
('場合', '者'),
('場合', 'こと'),
('者', 'とき'),
('とき', 'こと'),
('者', '人'),
('者', '請求'),
('人', '人'),
('人', 'こと'),
('条', '規定'),
('とき', '者'),
('条', '条'),
('条', '項'),
('項', '条'),
('人', '者'),
('規定', '規定'),
('権', '者'),
('者', '権'),
('条', '準用'),
('債務', '者'),
('債務', 'こと'),
('相続', '相続'),
('相続', '人'),
('債権', 'こと'),
('債権', '者'),
('者', '債務'),
('者', '債権'),
('債務', '債務')]