#! /usr/bin/perl

use strict;
use warnings;

use lib qw(../lib);
use CGI qw(escapeHTML);
use Lingua::JA::Summarize;


my $q = new CGI;

print $q->header(-charset => 'euc-jp');

my $text = $q->param('txt') || '';
if ($text) {
    print "Keywords: ";
    my $s = Lingua::JA::Summarize->new;
    $s->analyze($text);
    my @keywords = $s->keywords({
	maxwords => $q->param('maxwords') || 5,
	threshold => $q->param('threshold') || 5,
    });
    if ($q->param('detailed') || 0) {
	foreach my $k (@keywords) {
	    my $info = $s->stats->{$k};
	    printf("%s: (weight: %f, cost: %f, count: %d)<br>\n",
		   escapeHTML($k), $info->{weight}, $info->{cost},
		   $info->{count});
	}
    } else {
	print escapeHTML(join(' ', @keywords));
    }
} else {
    $text = << "EOT";
 ƻϩ¸òÄÌ»ö¸Î¡Ê¿Í¿È»ö¸Î¤Ë¸Â¤ë¡£°Ê²¼Ëܹà¤Ë¤ª¤¤¤ÆÆ±¤¸¡£¡Ë¤ÎĹ´üŪ¿ä°Ü¤ò¤ß¤ë¤È¡¢Àï¸å¡¢¾¼Ï£²£°Ç¯Âå¸åȾ¤«¤é£´£°Ç¯ÂåȾ¤Ð¤´¤í¤Þ¤Ç¤Ï¡¢»à½ý¼Ô¿ô¤¬Ãø¤·¤¯ÁýÂ礷¤Æ¤ª¤ê¡¢£²£¶Ç¯¤«¤é£´£µÇ¯¤Þ¤Ç¤Ë»à½ý¼Ô¿ô¤Ï£³Ëü£µ¡¢£·£°£³¿Í¤«¤é£¹£¹Ëü£·¡¢£¸£¶£±¿Í¤Ø¡¢»à¼Ô¿ô¤Ï£´¡¢£´£²£¹¿Í¤«¤é£±Ëü£¶¡¢£·£¶£µ¿Í¤Ø¤ÈÁý²Ã¤·¤Æ¤¤¤ë¡£
¡¡¤³¤ì¤Ï¡¢¼Ö¼Ò²ñ²½¤ÎµÞ®¤Ê¿ÊŸ¤ËÂФ·¤Æ¡¢Æ»Ï©À°È÷¡¢¿®¹æµ¡¡¢Æ»Ï©É¸¼±Åù¤Î¸òÄ̰ÂÁ´»ÜÀߤ¬ÉÔ­¤·¤Æ¤¤¤¿¤³¤È¤Ï¤â¤È¤è¤ê¡¢¼Öξ¤Î°ÂÁ´À­¤ò³ÎÊݤ¹¤ë¤¿¤á¤Îµ»½Ñ¤¬Ì¤È¯Ã£¤Ç¤¢¤Ã¤¿¤³¤È¤ä¡¢¸òÄ̼Ҳñ¤ÎÊѲ½¤ËÂФ¹¤ë¿Í¡¹¤Î°Õ¼±¤¬ÃÙ¤ì¤Æ¤¤¤¿¤³¤È¤Ê¤É¡¢¼Ò²ñ¤ÎÂÎÀ©¤¬½½Ê¬¤ËÀ°¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤¬Í×°ø¤Ç¤¢¤Ã¤¿¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
¡¡¤³¤Î¤¿¤á¡¢¸òÄ̰ÂÁ´¤Î³ÎÊݤϾÇÈý¤Î¼Ò²ñÌäÂê¤È¤Ê¤ê¡¢¾¼Ï£´£µÇ¯¤Ë¸òÄ̰ÂÁ´Âкö´ðËÜË¡¡Ê¾¼£´£µË¡£±£±£°¡Ë¤¬À©Äꤵ¤ì¡¢¹ñ¤òµó¤²¤Æ¤Î¸òÄ̰ÂÁ´Âкö¤¬¿Ê¤á¤é¤ì¤¿¡£
¡¡Æ±Ë¡¤Ç¤Ï¡¢¸òÄ̤ΰÂÁ´¤Ë´Ø¤¹¤ëÁí¹çŪ¤«¤ÄĹ´üŪ¤Ê»Üºö¤ÎÂç¹Ë¤Ç¤¢¤ë¸òÄ̰ÂÁ´´ðËܷײè¤ÎºîÀ®¤Ë¤Ä¤¤¤ÆÄê¤á¤Æ¤ª¤ê¡¢¾¼Ï£´£¶Ç¯ÅÙ¤ÎÂ裱¼¡¸òÄ̰ÂÁ´´ðËܷײ褫¤é»Ï¤Þ¤ê¡¢¸½ºß¤ÏÊ¿À®£±£³Ç¯ÅÙ¤«¤é£±£·Ç¯Å٤ޤǤΣµÇ¯´Ö¤ò·×²è´ü´Ö¤È¤¹¤ëÂ裷¼¡¸òÄ̰ÂÁ´´ðËܷײ褬¼Â»Ü¤µ¤ì¤Æ¤¤¤ë¡£³Æ·×²è¤Ç¤Ï¡¢¤½¤ì¤¾¤ìãÀ®¤¹¤Ù¤­ÌÜɸ¤ò·Ç¤²¡¢¸òÄ̰ÂÁ´¤Ë´Ø¤¹¤ë»Üºö¤ò¶¯ÎϤ˿ä¿Ê¤·¤Æ¤­¤¿¤¬¡¢¤½¤Î·ë²Ì¡¢£±£¶Ç¯¤Î¸òÄÌ»ö¸Î»à¼Ô¿ô¤Ï£·¡¢£³£µ£¸¿Í¤È¤Ê¤ê¡¢°ìºòǯ¤ò¹¹¤Ë²¼²ó¤ê£·Àé¿ÍÂæÁ°È¾¤Þ¤Ç¸º¾¯¤¹¤ë¤Ë»ê¤Ã¤¿¡ÊÂ裱¡¾£±É½¡Ë¡£
¡¡»à½ý¼Ô¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢Â裱¼¡µÚ¤ÓÂ裲¼¡¸òÄ̰ÂÁ´´ðËܷײè¤Ë´ð¤Å¤¯½ôÂкö¤Ë¤è¤ê¾¼Ï£´£µÇ¯¤Î£¹£¹Ëü£·¡¢£¸£¶£±¿Í¤«¤é£µ£´Ç¯¤Ë¤Ï£¶£°Ëü£´¡¢£·£´£¸¿Í¤Ë¸º¾¯¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤¿¡£¤½¤Î¸å¡¢Ç¯´Ö¸òÄÌ»ö¸Î»à¼Ô¿ô¤¬ÁýÀª¤Ëž¤¸¤¿£µ£µÇ¯¤ò´ð½à¤È¤¹¤ë¤È¡¢Ê¿À®£±£¶Ç¯¤Î»à½ý¼Ô¿ô¤Ï£±¡¥£¹£¶Çܤȡ¢¼«Æ°¼ÖÊÝÍ­Âæ¿ô¤Î£²¡¥£°£±ÇÜ¡¢±¿Å¾ÌȵöÊÝÍ­¼Ô¿ô¤Î£±¡¥£¸£²ÇܤˤۤÜÈæÎ㤷¤ÆÁý²Ã¤·¤Æ¤¤¤ë¡£
¡¡¤Ê¤ª¡¢Ê¿À®£±£¶Ç¯Ãæ¤Î»à½ý¼Ô¿ô¤Ï£±£±£¹Ëü£´£·£¸¿Í¤È²áµîºÇ°­¤È¤Ê¤Ã¤¿¡ÊÂ裱¡¾£±¿Þ¡¢Â裱¡¾£²¿Þ¡Ë¡£
¡¡¤Þ¤¿¡¢¼«Æ°¼ÖÊÝÍ­Âæ¿ô£±ËüÂæÅö¤¿¤ê¤Î»à½ý¼Ô¿ô¤Ï¡¢¾¼Ï£´£³Ç¯¤Î£¶£±£¹¡¥£¶¿Í¤«¤é¡¢¤Û¤Ü°ì´Ó¤·¤Æ¸º¾¯¤ò³¤±¡¢Ê¿À®£³Ç¯¤Ë¤Ï£±£³£°¡¥£¶¿Í¤Þ¤Ç¸º¾¯¤·¡¢¤½¤Î¸å£±£³£°¡Á£±£³£´¿Í¤Î´Ö¤Ç¡¢²£¤Ð¤¤¤Ç¿ä°Ü¤·¤¿¤â¤Î¤Î¡¢£±£²Ç¯¤«¤é£±£µ£°¿ÍÂæ¤Ç¿ä°Ü¤·¡¢£±£¶Ç¯¤Ë¤Ï£±£µ£²¡¥£´¿Í¤È¤Ê¤Ã¤¿¡ÊÂ裱¡¾£³¿Þ¡Ë¡£
¡¡¸òÄÌ»ö¸Î»à¼Ô¿ô¤ò¿Í¸ý£±£°Ëü¿ÍÅö¤¿¤ê¤Ç¤ß¤ë¤È¡¢¾¼Ï£´£µÇ¯¤Þ¤Çǯ¤È¤È¤â¤ËÁý²Ã¤·¡¢Æ±Ç¯¤Ë¤Ï£±£¶¡¥£²¿Í¤È¤Ê¤Ã¤¿¤¬¡¢£´£¶Ç¯°Ê¹ß¤Ï¸º¾¯¤Ëž¤¸¡¢£µ£´Ç¯¤Ë¤Ï£·¡¥£³¿Í¤Ë¤Þ¤Ç¸º¾¯¤·¤¿¡£¤½¤Î¸åºÆ¤ÓÁý²Ã¤·¤¿¤¬¡¢Ê¿À®£´Ç¯°Ê¹ß¤Ï¸º¾¯¤·¡¢Ê¿À®£±£¶Ç¯¤Ë¤Ï£µ¡¥£¸¿Í¤È¤Ê¤Ã¤Æ¤¤¤ë¡£¼«Æ°¼Ö£±ËüÂæÅö¤¿¤ê¤Î¸òÄÌ»ö¸Î»à¼Ô¿ôµÚ¤Ó¼«Æ°¼Ö£±²¯Áö¹Ô¥­¥íÅö¤¿¤ê¤Î¸òÄÌ»ö¸Î»à¼Ô¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢£µ£°Ç¯ÂåȾ¤Ð¤Þ¤Ç½çÄ´¤Ë¸º¾¯¤·¤Æ¤­¤¿¤¬¡¢¤½¤Î¸å¤ÏÁ²¸º·¹¸þ¤¬Â³¤¤¤Æ¤¤¤ë¡ÊÂ裱¡¾£´¿Þ¡Ë¡£
¡¡¤Ê¤ª¡¢ËÜÊó¹ð¤Ë¤ª¤±¤ë¸òÄÌ»ö¸ÎÅý·×¤Î¿ôÃͤϡ¢¸¶Â§¤È¤·¤Æ·Ù»¡Ä£¤Î¸òÄÌÅý·×¤Ë¤è¤ë¿ôÃͤǤ¢¤ê¡¢¸òÄÌ»ö¸Î»à¼Ô¿ô¤Ï¡¢£²£´»þ´Ö»à¼Ô¿ô¤Ç¤¢¤ë¡£
¡¡¤³¤Î¤Û¤«¤Ë¡¢»ö¸ÎȯÀ¸¸å£³£°Æü°ÊÆâ¤Ë»àË´¤·¤¿¼Ô¡Ê£³£°Æü°ÊÆâ»à¼Ô¡Ë¤Î¿ô¤ò½¸·×¤·¤¿¤â¤Î¤¬¤¢¤ê¡¢Ê¿À®£±£¶Ç¯¤Î£³£°Æü°ÊÆâ»à¼Ô¿ô¤Ï£¸¡¢£´£¹£²¿Í¤È¤Ê¤Ã¤Æ¤¤¤ë¡£¤µ¤é¤Ë¡¢Î¦¾å¡¢¿å¾åµÚ¤Ó¹Ò¶õ¸òÄ̤λö¸Î¤ò¸¶»à°ø¤È¤¹¤ë»àË´¼Ô¡Ê»ö¸ÎȯÀ¸¸å£±Ç¯¤òͤ¨¤Æ»àË´¤·¤¿¼ÔµÚ¤Ó¸å°ä¾É¤Ë¤è¤ê»àË´¤·¤¿¼Ô¤ò½ü¤¯¡£¡Ë¤¹¤Ù¤Æ¤ò»à°øÊ¬Îà¡Ö¸òÄÌ»ö¸Î¡×¤È¤·¤Æ·×¾å¤·¤Æ¤¤¤ë¸üÀ¸Ï«Æ¯¾Ê¤Î¿Í¸ýưÂÖÅý·×¤¬¤¢¤ë¡£¿Í¸ýưÂÖÅý·×¤Ë¤è¤ë£±£µÇ¯¤Î¸òÄÌ»ö¸Î»àË´¼Ô¿ô¤Ï£±Ëü£¹£±£³¿Í¤Ç¡¢¤³¤Î¤¦¤ÁÌÀ¤é¤«¤Ëƻϩ¾å¤Î¸òÄÌ»ö¸Î¤Ç¤Ï¤Ê¤¤¤ÈȽÃǤµ¤ì¤¿¤â¤Î¤ò½ü¤­¡¢·Ù»¡Ä£¤Ç¤Ï¡Ö¸üÀ¸Åý·×¤Î»à¼Ô¿ô¡×¤È¤·¤Æ£±Ëü£¶£´£µ¿Í·×¾å¤·¤Æ¤¤¤ë¡£
EOT
}

$text = escapeHTML($text);

print << "EOT";
<hr>
<form method="post">
<textarea name="txt" rows="25" cols="80">$text</textarea>
<br>
Number of Keywords: <select name="maxwords"><option>5<option>10<option>20</select><br>
Threshold: <select name="threshold"><option>1<option>3<option selected>5<option>7<option>10<option>15</select><br>
Detailed: <input type="checkbox" name="detailed" value="1"><br>
<input type="submit" value="¥­¡¼¥ï¡¼¥É¤òÃê½Ð">
</form>
EOT