Pythonライブラリpysummarizationを用いたAI(LSTM)による文書要約

python

仕事をするうえで重要な能力の一つが、わかりやすく端的に伝えることだと思います。
これってAI技術を使えませんか?

このような疑問にお答えします。

近年、AIは様々な分野で成果を出しています。
そのなかには、文書の要約もAI技術と自然言語処理技術を用いて実現されています。

今回は、自然言語処理とニューラルネットワーク言語モデルを用いた文書自動要約を行います。
文書要約の手法は様々な手法が提案されていますが、今回はLSTMをベースとしたSequence-to-Sequence(Seq2Seq)学習による文書自動要約を行います。

文書要約手法について整理します。

文書要約について

文書要約手法は抽出型と生成型に分けられます。

  • 抽出型要約・・・原文書の一部を抽出して要約を生成。文書内から代表的な文を抽出し、要約として抜き出す手法
  • 生成型要約・・・原文書の内容に基づき、新たな要約文を生成する方法

今回使用するLSTMベースのモデルは生成型の手法になります。

Pythonライブラリpysummarizationを用いて文書要約を実現します。
pysummarizationでは、pydbmを応用して、LSTMをベースとしたエンコーダ/デコーダを実装し、Seq2Seq学習により要約の精度を向上させています。

それでは、文書要約ツールの準備を行います。

文書要約ツールの準備

日本語文書の処理にMeCabを使用します。
今回は、開発環境としてwindows osでAnacondaを使用します。

Anacondaについては、下記の記事を参照ください。

日本語処理のためのライブラリ準備

こちらからMeCabをインストールします。

  • https://github.com/ikegami-yukino/mecab/releases/tag/v0.996

「mecab-0.996-64.exe」を選択してダウンロードしました。

MeCabをインストールした場所を環境変数に設定します。
本稿では、C:\Program Filesにインストールしています。

  • C:\Program Files\MeCab\bin

コマンドプロンプトを起動し、以下のコマンドを実行します。

文章を入力してみてください。入力文章の形態素解析の結果が出力された場合は、MeCabのインストール成功です。

次に、Anacondaプロンプトを起動し、以下のコマンドを実行します。

先程のMeCabをインストールしたフォルダ内(C:\Program Files\MeCab\bin)の「libmecab.dll」をコピーして、Anacondaのインストール先/Lib/site-packagesに配置します。

起動したAnacondaプロンプトに対して、下記のコマンドを実行して、pythonインタプリタを起動します。

下記のコマンドを実行して、MeCabが使用できるか否かを確認します。

このコマンドを実行して、エラーが発生しなければ、pythonでも利用可能になっています。

さらに、Pythonライブラリnumpy, nltkをインストールします。numpy: v1.13.3 or higher. nltk: v3.2.3 or higher.
本稿では、numpy 1.18.1, nltk 3.4.5をインストールしています。

次に、文書要約で使用するpysummarizationをインストールします。

これで準備は完了です。文書要約のプログラムは以下になります。

文書要約プログラム

出力結果

入力は、Pythonに関するWikipedia記事の一部を使用しました。

  • https://ja.wikipedia.org/wiki/Python

[原文書]
文法を極力単純化してコードの可読性を高め、読みやすく、また書きやすくしてプログラマの作業性とコードの信頼性を高めることを重視してデザインされた、汎用の高水準言語である。

核となる本体部分は必要最小限に抑えられている。一方で標準ライブラリやサードパーティ製のライブラリ、関数など、さまざまな領域に特化した豊富で大規模なツール群が用意され、インターネット上から無料で入手でき、自らの使用目的に応じて機能を拡張していくことができる。

またPythonは多くのハードウェアとOS (プラットフォーム) に対応しており、複数のプログラミングパラダイムに対応している。Pythonはオブジェクト指向・命令型・手続き型・関数型などの形式でプログラムを書くことができる。動的型付け言語であり、参照カウントベースの自動メモリ管理(ガベージコレクタ)を持つ。

これらの特性によりPythonは広い支持を獲得し、Webアプリケーションやデスクトップアプリケーションなどの開発はもとより、システム用の記述 (script) や、各種の自動処理、理工学や統計・解析など、幅広い領域における有力なプログラム言語となった。プログラミング作業が容易で能率的であることは、ソフトウェア企業にとっては投入人員の節約、開発時間の短縮、ひいてはコスト削減に有益であることから、産業分野でも広く利用されている。Googleなど主要言語に採用している企業も多い。

Pythonのリファレンス実装であるCPythonは、フリーかつオープンソースのソフトウェアであり、コミュニティベースの開発モデルを採用している。CPythonは、非営利団体であるPythonソフトウェア財団が管理している。その他の実装としては、PyPyやIronPythonなどが有名である。

Pythonは、オランダ人のグイド・ヴァンロッサムが開発した。名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン (Monty Python’s Flying Circus)』である。Pythonという英単語が意味する爬虫類のニシキヘビがPython言語のマスコットやアイコンとして使われている。


[文書要約結果]
文法を極力単純化してコードの可読性を高め、読みやすく、また書きやすくしてプログラマの作業性とコードの信頼性を高めることを重視してデザインされた、汎用の高水準言語である。

核となる本体部分は必要最小限に抑えられている。

一方で標準ライブラリやサードパーティ製のライブラリ、関数など、さまざまな領域に特化した豊富で大規模なツール群が用意され、インターネット上から無料で入手でき、自らの使用目的に応じて機能を拡張していくことができる。

Pythonはオブジェクト指向・命令型・手続き型・関数型などの形式でプログラムを書くことができる。

これらの特性によりPythonは広い支持を獲得し、Webアプリケーションやデスクトップアプリケーションなどの開発はもとより、システム用の記述 (script) や、各種の自動処理、理工学や統計・解析など、幅広い領域における有力なプログラム言語となった。

プログラミング作業が容易で能率的であることは、ソフトウェア企業にとっては投入人員の節約、開発時間の短縮、ひいてはコスト削減に有益であることから、産業分野でも広く利用されている。

Pythonのリファレンス実装であるCPythonは、フリーかつオープンソースのソフトウェアであり、コミュニティベースの開発モデルを採用している。

CPythonは、非営利団体であるPythonソフトウェア財団が管理している。

その他の実装としては、PyPyやIronPythonなどが有名である。

Pythonは、オランダ人のグイド・ヴァンロッサムが開発した。

======================================================

今回は、pysummarizationを用いてLSTMベースの文書要約を行いました。
文書要約の手法は、様々な手法が提案されていますから、試してみるのもいいかもしれませんね。

こちらを参考にさせていただきました。

  • https://pypi.org/project/pysummarization/
  • https://github.com/ikegami-yukino/mecab/releases/tag/v0.996
  • https://qiita.com/menon/items/f041b7c46543f38f78f7
タイトルとURLをコピーしました