この記事は↓に移転しました。 laysakura.github.io
この記事は↓に移転しました。 laysakura.github.io
【ベイズ】Naive Bayes(単純ベイズ)による文書分類のサンプルプログラム【Perl】 2013-07-26-1 [Programming][Algorithm][NLP] かなり昔に作った Naive Bayes(単純ベイズ)による文書分類のサンプルプログラムを整理したので公開しておきます。Perl で書かれています。Pure Perl。 Naive Bayes についての詳細は下記のサイトをどうぞ。 - 単純ベイズ - 機械学習の「朱鷺の杜Wiki」 - Wikipedia:単純ベイズ分類器 さて、Naive Bayes で分類するときには下記の式を用いるわけです。 Pについての定義は下記: 実装を簡単にするために log をとって足し算にしています(argmax ですが実際はマイナスかけて argmin で実装)。 学習データ 分類したいカテゴリごとに1行。 各行はカテゴリのラ
小ネタ。Perl で日本語の簡単な処理をするやり方(こういうことが簡単にできるという例で、具体的なオプションの意味等は解説していない)。 コマンドラインでちゃちゃっと日本語の処理をしたい時、Perl はけっこう役に立つ。日本語の一文字を一文字として扱えるから。特に、コマンドラインやファイルのエンコーディングを UTF-8 で統一しておくといい。 例えば、ひらがなの単語リストを読み込んでカタカナにするには、次のようにすればいい(「ヴ」は扱い方によって変わるので省略)。 perl -CS -Mutf8 -ple 'tr/ぁ-ん/ァ-ン/' < in.txt > out.txt カタカナの単語リストの最初の一文字を濁音から清音にしたいということがあるかもしれない。そういう時はこうする(「ヴ」については同上、半濁音の処理も略)。 perl -CS -Mutf8 -ple 's{^(.)}{my $
ニーズがあるのかさっぱりわからない機械学習超入門だけどひっそり続けていきたい。 前回は識別関数の基礎であるパーセプトロンの簡単な説明とPerlによる実装を解説した。実はこの時点でかの有名なSVM(Support Vector Machine、サポートベクターマシン)もほぼ完成していたのだ!というわけで今回はSVMをPerlで作ってしまうお話。 参考: これからはじめる人のための機械学習の教科書まとめ - EchizenBlog-Zwei 機械学習超入門 〜そろそろナイーブベイズについてひとこと言っておくか〜 - EchizenBlog-Zwei 機械学習超入門II 〜Gmailの優先トレイでも使っているPA法を30分で習得しよう!〜 - EchizenBlog-Zwei 機械学習超入門III 〜機械学習の基礎、パーセプトロンを30分で作って学ぶ〜 - EchizenBlog-Zwei さて
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
変数は以下のように値を代入したり出力することができます。 # 変数に文字列を代入 $value = "テストです"; # 変数を出力 print $value; 【参照ページ】 変数 配列 複数の値を1つの変数で管理したい場合は、『配列』という変数が最適です。 配列を初期化する場合は、要素をカッコで囲み、各要素毎にカンマで区切ります。 @week = ('日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜'); 配列はインデックスを使って参照します。インデックスは 0から始まるので注意してください。たとえば1番目のデータ "日曜" を呼び出すときは、$week[0]、"月曜"なら $week[1] とします。 # 配列 @week の1番目の要素を表示 print $week[0], "\n"; > 日曜 # 配列 @week の2番目の要素を表示 print $
数週間前の話になりますが、「はてブのリニューアル会見」の記事を読んでいたところ、はてブにも「自動カテゴライズによる記事分類」の機能が搭載されるとか。。。 同じようなタイミングで「似たようなモノ」というか「ほぼ同じようなモノ」を作っていたので、すごーくインスパイアされてしまいました。ジュワ〜。(アドレナリンの放出音) 数週間たってもいまだ興奮冷めやらぬ状態なので、今日はその件について書いてみようと思います。 Lingua::JA::Categorize - a Naive Bayes Classifier for Japanese document. http://search.cpan.org/~miki/Lingua-JA-Categorize-0.00001/ 「はてブのパクリ」ではありません。「ベイジアンによる日本語テキスト分類器」を「簡単に作る」ことを目的としたモジュールです。 も
日本語処理のツール 下記は、日本語テキスト処理のための簡単なperlスクリプトです。いずれもフリーソフトです。 ただし、動作させるにはそれぞれの処理系に応じたperl(2についてはjperlのみ対応)が別途必要です。 Windows95,NT用のjperlの入手については、次のWebページの解説の「インストール手順」の部分を読んでください。 JPerl for MS-Windows ツールリスト kgrep.pl(perlによるKWICスタイルの出力を持つgrep) (使用方法) (j)perl kgrep.pl 探索文字列 [文脈長(default 32byte)] < 入力ファイル httpによるダウンロード(Webブラウザで、マウス右ボタンで「リンクに 名前をつけて保存」等を選ぶ) count.pl(jperlによる日本語文字の頻度調査プログラム) (使用方法) jperl coun
Perl で日本語テキストを字種分割 2008-02-06-2 [Programming] Perl で日本語テキストを簡単に字種かたまりに分割できないかな、 と思い、perlunicode を読みながらサンプルプログラムを書いてみました。 対象テキストは UTF-8。 chunker.pl : #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; use open ':utf8'; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; while (<>) { chomp; my @cs = m/(\p{M}+|\p{N}+|\p{P}|\p{S}+|\p{Z}+|\p{C}+ |\p{Latin}+ |\p{Han}+ |\p{Hiragana}[\p{Hiragana
前回は、Perlモジュールである「Web::Scraper」を使ったスクレイピングについて説明した。Webページ(HTML)は、「構造」と「デザイン」面で比較的分離が進んできたため、CSSセレクタによるスクレイピングが有効であることが分かったはずだ。 今回の最終回では、コンテンツの自動収集と統計手法について考えてみよう。 記事内で扱っていくのは、幾つかのコンテンツをたどって、「利用頻度の高い語句を集め、話題となっているキーワードを見つけよう」というものだ。 話題のキーワードを集める手法 近年ブログのポータル上などでは、話題となっているキーワードを「利用頻度に応じたフォントサイズ」で示し、クリックすると該当の記事一覧が表示されるという仕組みが実装されているものが多い。 オルタナティブ・ブログにも似たようなものとして「話題のキーワード」が見られる。キーワードをクリックすると、Googleによる
This is a Perl module that implements a variety of semantic similarity and relatedness measures based on information found in the lexical database WordNet. In particular, it supports the measures of Resnik, Lin, Jiang-Conrath, Leacock-Chodorow, Hirst-St.Onge, Wu-Palmer, Banerjee-Pedersen, and Patwardhan-Pedersen. We have a mailing list designed to support users of WordNet::Similarity. Want to repo
2007年12月08日20:30 カテゴリLightweight Languages perl - Lingua::JA::Kana released! かなとローマ字をシンプルに相互変換するモジュールです。 dankogai's p5-lingua-ja-kana at master - GitHub @CPAN (as soon as PAUSED) 車輪の再発明ではあるのですが、どの車輪もちょっと不適当だったので。 私が欲しかったのは、お気軽にカナとローマ字の相互変換をするものだったのですが、Lingua::JA::Romajiは対象文字列がEUC-JPでないと駄目で古すぎで、KawaさんのLingua::JA::Romanize::*はちょっとヘビーウェイトすぎというわけで作りました。 ちょっと test suite が少なすぎるので、テスト募集中です。 Dan the Perl
転置インデックスによる検索システムを作ってみよう! 2007-11-26-5 [Algorithm][Programming] 転置インデックス[2007-06-17-6]による検索システムの実装は パフォーマンスを無視すれば意外と簡単です。 それを示すために Perl で簡単な検索システムを作ってみました。 検索方式は転置インデックス(Inverted Index)、 ランキングには TF-IDF[2005-10-12-1] を用いました。 検索対象ファイルは一行一記事で以下のフォーマットとします。 [記事ID][SPC][記事内容]\n 記事IDは数字、記事内容は UTF-8 の文字で構成されるものとします。 以下のようなサンプル test.txt を用意しました。 1 これはペンです 2 最近はどうですか? 3 ペンギン大好き 4 こんにちは。いかがおすごしですか? 5 ここ最近疲れ
試しにPERLでSuffixArrayついでにソートの勉強 下記のページを参考にしている http://www.namazu.org/~satoru/unimag/9/ ここに記述されているコードは、実験のために書かれているので、 へんなところはご容赦を... インデックスを作ってみる Cで書かれたサンプルをperlでかいてみた。 PERLでもquicksortの関数はあるが、一応PERLでかいてみた。 バイナリー形式でインデックスファイルを書き出している。 テストのためのサンプルプログラムなので、書き出したあとよみだして表示している。 pushを使って配列を拡大しているが、これってスピード的にいいのだろうか? pack,unpack関数はいろいろ使いでありそう!! 1: #!/usr/bin/perl 2: 3: #2003/03/14 4: #UNIXマガジン2002 10月号 横着プ
Perl 標準入力と utf8 2007-02-07-1 [Programming] 自戒を込めた自分用メモ。 基本レベルの話だろうけど、はずかしながらちょっとはまってたので。 test.pl : #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; while (<>) { print if (/[ぁ-ん]/); } というコードを書いた。 しかし、 test.pl は行けるが、 test.pl utf8.txt はだめ。 で、こうした。 #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; binmode STDOUT, "
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く