シェルエスケープ 2003-01-29-6: [Perl][Code] sub shell_escape { $_ = shift; s/([\&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r ])/\\$1/g; return $_; }
シェルエスケープ 2003-01-29-6: [Perl][Code] sub shell_escape { $_ = shift; s/([\&\;\`\'\\\"\|\*\?\~\<\>\^\(\)\[\]\{\}\$\n\r ])/\\$1/g; return $_; }
【ベイズ】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行。 各行はカテゴリのラ
Notice: This article is outdated. Please refer an updated English tutorial. 要旨かなり前になりますが、Algorithm::LibLinear という Perl モジュールを書きました。 CPAN Github これを使うと線形分類器などが高速に学習できます。テキストや画像の分類が応用として期待されます。 LIBLINEAR についてLIBLINEAR は LIBSVM と同じ台湾国立大学の Chih-Jen Lin 教授のチームが公開しているオープンソースの機械学習パッケージです。 関数のロジスティック回帰、サポートベクター回帰及び線形 SVM による多クラス分類を行うことができます。LIBSVM と違ってカーネル関数を使うことはできませんが、はるかに高速に動作します。 Algorithm::LibLinear
CW(Confidence Weighted)を実装したので調子に乗ってSCW(Soft Confidence Weighted)も書いてみた。 SCWには1と2があって、それぞれL1,L2正則化っぽい感じのことをしている。今回はSCW1を実装した。 またCWは学習時に使う共分散行列が対角成分しかなかったのだが、SCWは対角成分以外にも値が入ってくるので取りうる特徴量が多い場合はなんらかの工夫が必要かも。 https://github.com/echizentm/ConfidenceWeighted test.plの最後でRGBそれぞれの重みをダンプした。scwのほうが重みが控えめになっているっぽい。 $$ perl test.pl 0.7 cw 1 3 < colors.csv update: 1,255 0 0 update: -1,0 255 0 update: -1,0 0 255
時代はSCW(Soft Confidence Weighted)らしいのだがCWさえまともに実装したことがなかった。これでは良くないということでCWを実装したので公開しておく。 https://github.com/echizentm/ConfidenceWeighted 参考: http://www.cs.jhu.edu/~mdredze/publications/icml_variance.pdf http://d.hatena.ne.jp/kisa12012/20120625/1340616659 http://d.hatena.ne.jp/jetbead/20130510/1368120547 以下はconfidenceパラメータη=0.7(0.7以上の確率で分類成功するように学習する)、分散の初期値を1、特徴量を3つ(RGB)として暖色系(1)or寒色系(-1)を判定する例。 $
全ツイート履歴「tweets.csv」を軽く集計してみる 2013-03-22-4 [Programming] 全ツイート履歴が取得できるようになったので、取ってきて軽く分析(というほどでもないが)してみた。 (↑一番最初の発言は2007年3月24日) 「全ツイート履歴」の詳細は下記の記事を参照されたし: - 日本の皆さんにも「全ツイート履歴」が使えるようになりました (Twitterブログ) http://blog.jp.twitter.com/2013/03/blog-post_22.html ダウンロードした中に含まれているファイル「tweets.csv」に全ツイートが入っている。 文字コードはUTF-8。 フォーマットはCSV: - 必ずダブルクォートで閉じられている律儀なCVS。 - ダブルクォート内に改行コードが入ってる。 ■各カラム: 0tweet_id1in_reply_t
英語圏ではかなり前からPerlで開発し続けることのリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ。日本でもそう遠くない未来だと思う。 若手エンジニアの不足Objective-Cのように需要が逼迫しているのに人材の供給が増えず需給ミスマッチが起っているわけでは無く、需要も供給も減るという状況下でわずかだが需要が上回っているとう性質の悪い状況がPerlに起きている。特に深刻なのは安価な若手エンジニアの採用が絶望的に難しいという現実だ。Rubyが台頭して数年経ちPythonがメインストリームの先頭を突っ走る2013年において新しくPerlを勉強しようとする若者はよほどの物好きしかいない。30~40歳のPerlエンジニアを雇うのはそれほど難しく無いだろうがコストがかかる。安価な20代前半の若手エンジニアを雇いたいという企業の思いとは裏腹にPerlを新た
ウェーブレット木/行列など「高速文字列解析の世界」で扱っているデータ構造やアルゴリズムは完備辞書(Fully Indexable Dictionary)を基本的な道具として用いるものが多い。 とはいえ実用的な完備辞書を一から作るのは大変なので、高速文字列本を読んで「ちょっとウェーブレット行列を作ってみようかな」と思ったとしても完備辞書は適当なモックで済まさないといけなかったりして面白くない。 というわけでPerlモジュールを書いた。 https://github.com/echizentm/FullyIndexableDictionary 例えば以下のような感じ。これでLOUDSもウェーブレット行列もさくさく作れますね! use FullyIndexableDictionary; my $fid = FullyIndexableDictionary->new(); $fid->set(1,
Read it now on the O’Reilly learning platform with a 10-day free trial. O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers. This book picks up right where Learning Perl leaves off. With Intermediate Perl, you’ll graduate from short scripts to much larger programs, using features that make Perl a general-pur
DCGによるスコア付きランキング出力結果の評価 2012-04-11-1 [Programming][Algorithm] スコア付きランキング出力結果のDCG(Discounted Cumulative Gain)による評価についてのメモ。DCGは関連度の高い要素が上位にあればあるほど評価が高い、という考え方に基づく。 出力結果の順位iの要素はスコア(関連度Ri)を持っている。DCGの計算ではそれを用いる。 順位p(p位)までの結果に対するDCGp: 例:上位5位のそれぞれのスコアが「3,0,2,1,1」のときのDCGは: ■サンプルコード(dcg.pl): #!/usr/bin/perl use strict; use warnings; my @r = (3,0,2,1,1); my $cum = $r[0]; for (my $i = 1; $i < @r; $i++) { $cu
重複のない乱数リストをPerlワンライナーで生成する(モジュール未使用) 2012-03-29-1 [Programming] 重複のない乱数リストを Perl で簡単に生成する方法。 以前の方法[2012-01-30-1]とは異なりモジュールは使用しない。 1から1000までの整数をシャッフルする。 perl -le '@a=1..1000;for(1..$#a){ $r=rand($_+1);@a[$_,$r]=@a[$r,$_]};print join"\n",@a' 下記URLの方法を Perl で書いただけ。 - 配列のシャッフル http://ray.sakura.ne.jp/tips/shaffle.html (via http://b.hatena.ne.jp/sassano/20120329#bookmark-436449)
Read it now on the O’Reilly learning platform with a 10-day free trial. O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers. Book description Adopted as the undisputed Perl bible soon after the first edition appeared in 1991, Programming Perl is still the go-to guide for this highly practical language. In th
リンク構造を用いてスコアを計算する HITS アルゴリズム 2011-11-10-1 [Algorithm][Programming] HITS とはハイパーリンク構造(リンクや被リンクなど)を用いてウェブページのスコアを計算する方法。Google で用いられている PageRank の仲間。 HITS は Authority score(以下、auth) と Hub score(以下、hub) の2種類のスコアを算出する。 アルゴリズム概要 各ページiの持つ auth を 、hub を とする。 をウェブグラフ全てのリンクの集合とし、 はページiからjへのリンクを表す(有無:1 or 0)とする。そして、以下の式(オリジナル論文での式)を繰り返し計算し最終的な auth と hub を得る。初期値は何らかの方法で与えられるとする。 実例で解説。下図のようなウェブグラフがあるとする。 初期
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Raku Raku (formerly known as Perl 6) is a sister language, part of the Perl family, not intended as a replacement for Perl, but as its own thing - libraries exist to allow you to call Perl code from Raku programs and vice versa. View details » The Perl Foundation The Perl Foundation is dedicated to the advancement of the Perl programming language through open discussion, collaboration, design, and
そういや昔はメモ代わりにはてなダイアリー使ってたけど最近は長い記事が多いなぁ,とふと思ったので,ちょうど今日使ったTipsがあったのでメモ. データ処理をしているときにsort|uniqというコンボにはよくお世話になる.その後に行毎にランダムシャッフルしたい場合がある.そのときには以下のようなList::Util::shuffleを使ったワンライナーを使うとシェルだけで事足りる. % perl -e 'use List::Util qw/shuffle/; @a=<>; @b=shuffle(@a); print @b;' < data.txt 最近はデータ整形の作業が多いのでいろんなノウハウが蓄積中. 2011-09-19追記 ブックマークコメントで参考になるコメントを頂いたので追記します. Thanks to id:tzccinct さん ワンライナーのより短い記述のコメントをいただき
インデックスを使った指定行取り出しプログラム(Pure Perl) 2010-08-10-1 [Programming][Algorithm] テキストファイルから指定した行を取り出すタスクについて。 頭から走査する方法 まずはファイルの頭から走査していくナイーブな方法。 ■コード(getline-naive.pl): #!/usr/bin/perl use strict; use warnings; my $qidx = shift @ARGV; # start from 0 my $tgtfn = shift @ARGV; open(my $fh, "<", $tgtfn) or die; while (<$fh>) { next if $. != $qidx + 1; print; last; } close $fh; 先頭行は0行目になる仕様。 ■実行例: % cat test.d
2017-04-16 FreeBSD/mpd 2016-12-23 RecentDeleted Blogアプリ 日記 2016-11-17 本当にあった怖いコード/1 2016-05-16 .NET 2015-07-06 書きたいこと 2015-07-05 postgres Java/変数の初期化に安易に空オブジェクトを代入しない 2015-06-30 PukiWiki/1.4/マニュアル/プラグイン/u 本当にあった怖いコード/15 2014-10-01 日記/2014-10-01 2014-09-09 日記/2014-09-09 2014-08-13 日記/2014-08-10 2014-05-28 バグパターン/日時 バグパターン 2014-04-13 IPv6 2014-03-20 パスワード問題 2014-01-27 DNS/ルートサーバーは13台という神話 2014-01-25
小ネタ。Perl で日本語の簡単な処理をするやり方(こういうことが簡単にできるという例で、具体的なオプションの意味等は解説していない)。 コマンドラインでちゃちゃっと日本語の処理をしたい時、Perl はけっこう役に立つ。日本語の一文字を一文字として扱えるから。特に、コマンドラインやファイルのエンコーディングを UTF-8 で統一しておくといい。 例えば、ひらがなの単語リストを読み込んでカタカナにするには、次のようにすればいい(「ヴ」は扱い方によって変わるので省略)。 perl -CS -Mutf8 -ple 'tr/ぁ-ん/ァ-ン/' < in.txt > out.txt カタカナの単語リストの最初の一文字を濁音から清音にしたいということがあるかもしれない。そういう時はこうする(「ヴ」については同上、半濁音の処理も略)。 perl -CS -Mutf8 -ple 's{^(.)}{my $
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く