December 17, 2003

文章要約プログラムを書いてみよう!
 その1 〜はじまり、はじまり〜 

Posted at December 17, 2003 06:27 AM in 文章要約プログラムを書いてみよう! .

makesummary.PNG

 

 今期受講している「自然言語処理論」で、文章を要約するプログラムを書け、という課題が出た。出たのは良いのだが、まず課題自体の難易度がわりあい高いことと、講義では文章要約とはほとんど関連のないことを扱っており、前提となる知識が与えられていないこと、加えてなにより古郡先生が講義のなかでまったくこの課題について指針を示していないことから、これを容易にこなせるひとはあまりいないと思われる。幸いにして僕は尾内研のゼミで文章要約の基礎的な話題を扱っていたため、とりあえず最低限のものをすんなり書くことができた。そこで、何をどうして良いかまったく目星がつかないというひとのために、簡単な解説を書いておこうと思ったわけ。訳の分からない課題を与えられて途方に暮れているひとの目にこれが止まればいいなーと思いつつ、それでは始めましょう。

 まず、今回、僕が実際に書いたプログラムをお見せするのが良いとおもう。元々のプログラムはC#で書かれているのだが、それをASP.NETに移したものがこれ。ブラウザ上で動かすことができるので、試してみてもらいたい。
 テキストボックスが2つある。上に要約したい文章を貼り付けて、"Make Summary"ボタンを押すと、下に要約された文章が出力される。デフォルトでスポーツ新聞社のWebサイトから拾ってきた記事が貼ってあるので、そのままボタンを押せば動作を見られるようになっている。要約の精度はともかくとして、とりあえずそれっぽい動作ができているということがわかるとおもう。

 このプログラムが文章の要約にどんなアルゴリズムを使っているのか。これを書くのにどんな作業が必要なのか。流れをおおざっぱに書き出すと、以下のようになる。

 1. コーパスを集める
 2. コーパスを形態素解析して、名詞の出現頻度データを作る
 3. 要約したい文章を形態素解析し、名詞のリストとその登場回数を得る
 4. TF/IDFっていうアルゴリズムに通して、名詞ごとの重要度を得る
 5. 4の結果からセンテンスごとに重要度を設定し、上位n%を抜き出して要約とする

 こうやって書かれてみても、予備知識がないと、「なにを言ってるのか意味不明」って感じでしょうか。次節から、個々の事柄について、詳しく説明をしていきます。一通り読み終えれば、とりあえずレポートになるだけのプログラムは書けるようになっているはず……たぶん。乞うご期待。



Trackback

You can ping this entry by using http://windy.ac/MT/mt-tb.cgi/294 .

Comments

激しくおもしろい。cool。

願わくば指定したURLからテキスト引っ張ってこれたりすると遊んでて楽しい。
レポートに関係ないから、実装しても無益ですが。うひひ

Posted by reservoir at December 17, 2003 10:32 AM

>願わくば指定したURLからテキスト引っ張ってこれたりすると遊んでて楽しい。

それができると素敵なんだが、HTMLを扱うコードを書かなくちゃならないのがだるいっす。
HTMLをちゃんとパースしてやらないでも、「日本語のブロックを抜き出す→要約する→置換」という流れでもいけそうだが、それでも面倒なこときわまりない。
君がやってみたいというなら、ソースコードは提供するぞい。

Posted by ぶでいぬ(井原) at December 17, 2003 07:38 PM

Greatist!

Posted by free mature sex story at August 20, 2005 01:46 AM

Post a comment










Remember personal info?