« JavaScriptでのGUIサンプル | メイン | 本日の体操 »

2005年06月23日

[技術] RSSの取得、単語出現頻度カウント

【サンプルプログラム】

■指定したURLのRSSファイルを取得するプログラム
 getRSS.pl

 実行例 
% echo 'http://www3.asahi.com/rss/index.rdf' | ./getRSS.pl

 取得結果(www3.asahi.com_rss_index.rdf)

■日本語テキストの単語の出現頻度を計算するプログラム
wakatigakiText.pl

 実行例
 % ./wakatigakiText.pl t2.euc > o2.euc

 注) t2.eucはhttp://www.future-planning.net/x/modules/news/article.php?storyid=608がオリジナル


投稿者 nekobara : 2005年06月23日 16:04


トラックバック

このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/351

コメント

サインしないとコメント無理ですか
練習。すいません。

投稿者 YSK後藤 : 2005年07月03日 08:31

投稿できますね!すいませんでした。
私の家の環境で実行すると下記メッセージです。

XML/RSS.pmってのがないってことですね。
入れてみます。ってどうやっていれるかわかりませんが・・・

# echo 'http://www3.asahi.com/rss/index.rdf' | ./getRSS.pl
Can't locate XML/RSS.pm in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at ./getRSS.pl line 13.
BEGIN failed--compilation aborted at ./getRSS.pl line 13.

投稿者 YSK後藤 : 2005年07月03日 08:34

日本語形態素解析ツール「ChaSen」
http://pcweb.mycom.co.jp/column/yetanother/045/
こういうものを使って文字をひとつひとつばらばらにして
名詞だけを抜き取って単語だけのDBをつくるのが最初の
ステップですかねぇ~

投稿者 YSK後藤 : 2005年07月03日 08:38

XML/RSS.pmをインストールす方法
#perl -MCPAN -e shell
cpan> install xml::rss

とすると下記のようにエラーとなってしました(^^;;
Warning: Cannot install xml::rss, don't know what it is.
Try the command
i /xml::rss/
to find objects with matching identifiers.


ということでモジュールが入っているか確認する方法は
下記で合ってますか?
find `perl -e 'print "@INC"'` -name '*.pm' -print
XML/RSS.pmがインストールされているかは?
これでrss.pmみたいのが検出されるのでしょうか?
アドバイスお願いいたします。

投稿者 YSK後藤 : 2005年07月03日 09:08

どうもです。

>cpan> install xml::rss
CPANからのインストールですが、XML::RSSと大文字で指定してください。

>find `perl -e 'print "@INC"'` -name '*.pm' -print
>XML/RSS.pmがインストールされているかは?

find `perl -e 'print "@INC"'` -name 'RSS.pm' -print

で、RSS.pmがあればインストールされています。

投稿者 nekobara : 2005年07月03日 21:50

ご回答ありがとうございます。
大文字でintall実行してみましたが
下記のようにエラーになってしまいました。
なにか参考になるようなエラーでてますでしょうか?

環境
#more /etc/redhat-release
Red Hat Linux release 9 (Shrike)
# perl -v
This is perl, v5.8.0 built for i386-linux-thread-multi
(with 1 registered patch, see perl -V for more detail)

t/2.0-parse...........ok
t/2.0-generate........ok 14/25# Failed test (t/2.0-generate.t at line 109)
# got: '
# not well-formed (invalid token) at line 36, column 16, byte 1133 at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/XML/Parser.pm line 185
# '
# expected: ''
# Looks like you failed 1 tests of 25.
t/2.0-generate........dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 15
Failed 1/25 tests, 96.00% okay
t/encode-output.......ok
t/auto_add_modules....ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/2.0-generate.t 1 256 25 1 4.00% 15
Failed 1/10 test scripts, 90.00% okay. 1/86 subtests failed, 98.84% okay.
# Looks like your test died before it could output anything.
make: *** [test_dynamic] エラー 29
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force

投稿者 YSK後藤 : 2005年07月03日 22:58

>t/2.0-generate........ok 14/25# Failed test(t/2.0-generate.t at line 109)
># got: '
># not well-formed (invalid token) at line 36,column 16, byte 1133 >at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/XML/Parser.pm line 185
># '
># expected: ''
># Looks like you failed 1 tests of 25.

2.0-generate.tというテストプログラムが失敗しています。で、36行目16カラム目のタグがおかしいと言っています。エラーメッセージからするとテスト用XMLデータのシングルコーテーションの数があってないのかもしれません。

perl -MCPAN -e shellしたときに、ソースをキャッシュするパスを指定したと思います。そこに、ソースが一式あって、上記のテストファイルもありますので、そのテストファイルを修正してから、make testを実行して、テストをとおるのを確認してから、make install すればインストールされます。

>/usr/bin/make test -- NOT OK
>Running make install
>make test had returned bad status, won't install without force

上記メッセージはテストに失敗したので、インストールしませんでしたということですので、テスト結果は無視して、直接、make installという選択もありえます。

もちろん、その場合はちゃんと動作する可能性は低くなりますが、ケースバイケースです。perl -MCPANでのインストール時にテストでこけたときに、めんどくさいとき(試しで使うとき)は直接make installして強制的にインストールするときがあります。

投稿者 nekobara : 2005年07月04日 09:23

こんにちは、後藤です。

家サーバをWhiteBox4(RedhatEnterpriseのクーロンLinux)に入れなおし挑戦しました。
XML::RSSインストールし実行しました。
下記のように表示されればOKでしょうか
[root@kame tmp]# find `perl -e 'print "@INC"'` -name 'RSS.pm' -print
/usr/lib/perl5/site_perl/5.8.5/XML/RSS.pm
/usr/lib/perl5/site_perl/5.8.5/XML/RSS.pm


[root@kame tmp]# echo 'http://www3.asahi.com/rss/index.rdf' | ./getRSS.pl

Wide character in print at ./getRSS.pl line 47, line 1.
[イチロー、10試合連続安打 マリナーズも3連勝]
Use of uninitialized value in concatenation (.) or string at ./getRSS.pl line 48, line 1.


Wide character in print at ./getRSS.pl line 47, line 1.
[石井、4失点で8敗目 パイレーツ戦]
Use of uninitialized value in concatenation (.) or string at ./getRSS.pl line 48, line 1.


Wide character in print at ./getRSS.pl line 47, line 1.
[Wソックス井口が二塁打、高津1失点 アスレチックス戦]
Use of uninitialized value in concatenation (.) or string at ./getRSS.pl line 48, line 1.

出力結果は一部表記です。

投稿者 YSK後藤 : 2005年07月10日 16:09

はい、動作的にはOKです。(ワーニングが出ているのはサンプルスクリプトのいいかげんさのせいです。^^)

投稿者 nekobara : 2005年07月11日 09:53