グラフ解析アルゴリズムで文章を要約する

August 27, 2017

前説

柏市の議会議事録は http://www.kaigiroku.net/kensaku/kashiwa/kashiwa.html にて公開されています。 議会にて日頃どんなことが議論されているかを知るにはこれを読むのが一番確実(のハズ)です。

しかし、議事録はあくまで議事録なので、一字一句正確に内容を知るには向いていますが、 議論されている内容をざっくりと把握するには向きません。

他の議会がどうなのかわからないのですが、質問やその回答に該当する発言を見ていると、一つの発言内に多数の話題が含まれることがあります。 一例ですが、一人の発言が句点で分割して100行くらいにわたる量に及ぶことがあります。

正直読むの辛いです。

せめて要約があれば、、、と。

そこで自然言語処理です。今回は DivRank 1 というグラフ解析アルゴリズムで 自動要約をしてみます。

ライブラリとして実装されていて使いやすかった & 元論文を読んだ、の2点が選定理由です。

DivRank

DivRank 自体はグラフ構造上の頂点をランク付けするアルゴリズムで、頂点の名声、威信(論文ではprestige) と多様性のバランスが とれることが特徴です。論文から引用した以下の図がわかりやすいです。

div_rank_image

PageRank だと大きなコミュニティに入っている頂点のランクが高くなるのですが、同じコミュニティに属している頂点なので、上位の 頂点から得られる情報は冗長性が高そうです。 DivRank を使うと、c) のように異なるコミュニティに属する点が上位にランク付けされた結果が得られるとのことです。 詳しくは、論文の方を見てください。

グラフ解析の手法をテキスト要約に適用するには、文章をグラフで表す必要があります。 論文では、文章の各文をグラフの頂点とみなし、すべての文と文の間で類似度を計算し、0.1以上の頂点間に辺を生成します。 類似度の計算は、論文ではTF-IDFのcosine類似度を使っています。 生成されたグラフに対して DivRank を適用し、トップK個の文が要約文となります。

先ほどの図でいうと、トップ3の文を抜き出して要約すると、各コミュニティ(似ている文集合)から一文ずつ文が選ばれることになります。 そのような文の集合は、元の文書の要約とみなせるだろう、というのがアイデアです。

利用ライブラリ

textacy を使います。 DivRank 自体が実装されていたので、楽チンです。

実験

【 平成29年  第1回定例会(2 月定例会)-02月24日-議案提案説明-01号 】のP.2 にある市長の開会の挨拶を要約してみます。

まず、前処理として市長の挨拶を”。“で文にわけて mecab で形態素に分解しておきます。 その上で、各形態素をスペースで結合した文字列を要素とする配列 base_sentences を作り、以下のコードを実行します。 textacy 自体は日本語の言語モデルに対応していないので、スペース区切りでトークンを分けた状態で解析にかけます。

# base_sencentes
# [
#   'ことし は 、 大変 明るい xxx',
#   '昨年 夏 の xxx',
#   ...
# ]
graph = textacy.network.sents_to_semantic_network(base_sentences, normalize='lemma', edge_weighting='cosine')
removed_edges = [edge for edge in graph.edges(data=True) if edge[2]['weight'] < 0.1]
graph.remove_edges_from(removed_edges)

scored_nodes = textacy.keyterms.rank_nodes_by_divrank(graph, r=None)
# 高い順にsort
ranked_nodes = sorted(scored_nodes.items(), key=lambda x:x[1])

トップ10の文章を表示すると、

また、学校経営力の向上を図るため、次世代リーダーの人材育成として千葉大学及び聖徳大学の教職大学院に指導主事を派遣してまいります。
この更新に合わせて、老朽化が著しい校内LANの再構築や教育用パソコンの増設なども行ってまいります。
さて、柏市政について申し上げます。
また、小中学校の普通教室等への空調設備導入については、新年度より13年間のメンテナンスつきリース方式で空調設備の整備を開始します。
小学校の外国語活動で体験した英語の楽しさや英語を話す・聞く力を損なうことなく、中学校においても視覚や聴覚に訴えるデジタル教材を活用することで、小中学校を通じ
て英語の言語能力を育む支援をしてまいります。
就学援助の拡充については、入学後に支給していた中学校の制服購入費などの入学準備費用の一部を中学校入学準備金として入学前の支給に変更を行ったところですが、さら
なる保護者の経済的負担軽減を目的に、新たに小中学校のPTA会費を就学援助費として支給してまいります。
今回の統合に伴い、青果部門の仲卸業者は3社から5社に、買い受け人総数88人・1組合から149人・5組合となるとともに、その他関連部門として運輸・一般食品部門の新規参入業者もあることから、青果部門のみならず市場全体の活性化が見込まれるものと考えております。
南柏二丁目に立地する老朽建築物が周辺地域の住環境に著しく悪影響を及ぼしていることから、空家特別措置法の規定に基づき、所有者に対し2月1日付けで命令書を送付し
、建築物の除却を講じるよう促しているところです。
まず、児童生徒に対する教育の充実についてです。
旧そごう柏店の跡地利用については、東葛地域の商業の中核を担う「かしわ」のために、永続的な発展に寄与する方向で商業施設としての活用を検討いただくよう、株式会社
そごう・西武に対し強く要請してまいりました。

学校の設備支援、就学援助、市場の活性化、空家対策、そごう跡地について、といった辺りでしょうか。 元の文章を読むと他の話題も出ているので、10行では足りないかもしれません。

また、「まず、xxx」といった文章は要約に出てきても嬉しくないです。前処理で除外できると良さそうです。

改善ポイント

議事録をよく見ると、話題が変わると段落が変わっている(全角空白で文が始まる)ように見えます。 この特徴に注目すれば大まかに発言内の話題数がわかるので、要約として抽出する文数を調節できそうです。

次やること

今回は特定の発言だけ対象にしました。 欲しいのは議事録中に発生するすべての質問や答弁(要するに長い発言)ごとの要約なので、

  • 議事録からの発言抽出
  • 発言の形態素解析
  • 要約文の生成

をシステム化していきます。


  1. Mei, Q., Guo, J., & Radev, D. (2010, July). Divrank: the interplay of prestige and diversity in information networks. In Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 1009-1018). ACM. http://clair.si.umich.edu/~radev/papers/SIGKDD2010.pdf ↩︎

comments powered by Disqus