String::Dictionary という Perl のライブラリを作ってみました。 http://github.com/naoya/perl-String-Dictionary/tree/master String::Dictionary は検索エンジンその他を作る時に必要になる「辞書」のためのデータ構造 + API です。辞書は単語の集まりですが、これを配列やハッシュなどで持つのではなく、単語をすべて繋げた一つの大きな文字列として保持することでメモリ領域を節約したものです。単語は単に文字列連結で持つだけでなく、Front Coding で圧縮しています。以下簡単な解説です。 辞書は例えば [0] ・・・ jezebel [1] ・・・ jezer [2] ・・・ jezerit [3] ・・・ jeziah [4] ・・・ jeziel ...という風に単語を配列で持つことで実現でき
以前書いた plsv の perl script を晒しておく。 勾配法には sgd を使用した。 行数は320行。 #!/usr/bin/perl # Probabilistic Latent Semantic Visualization # Copyright (c) 2009, Kei Uchiumi use warnings; use strict; # Usage # perl plsv.pl corpus our $dimension = 2; our $topicsize = 2; our $alpha = 0.01; our $beta = 0.0001; our $ganma = 0.0001 * $topicsize; our $docnum = 0; # document size N our $iteration = 50; # for sgd parameters
Perl の utf8 まわりのおまじない 2009-09-12-4 [Programming] 自分用メモ。 最近良く使うおまじない、というかイディオム。 utf8::decode($text) unless utf8::is_utf8($text); (追記:より良いおまじない。詳細は後述。 $text = Encode::decode_utf8($text) unless utf8::is_utf8($text); ) Perl の CGI モジュールでクエリから得られるデータの文字列のutf8フラグの有無が環境によって違うことがあってイライラ。 でもこのおまじないでなんとかなった。 こんな文脈で使う: use utf8; use CGI; ... my $text = $q->param('text') || ""; utf8::decode($text) unless utf8:
8/3から始まったはてなでのインターンシップが終わりました.まだ8月の1週目が終わったぐらいの感覚なんですが,もう夏の終わり… この1ヶ月は過去最高の夏休みだったと断言できるほど多くの学び,刺激があったので,はてなのことや自分のことについてまとめておく. 結構長いので[あとで読む]タグ推奨. はてなインターンで出した成果 後半過程は僕とid:nyanpではてなブックマークチームに入り,マイブックマーク全文検索の機能拡張に携わりました. はてなブックマークプラス:マイブックマーク全文検索機能に、スコア順検索機能などを追加しました - はてなブックマーク日記 - 機能変更、お知らせなど はてなブックマークプラス:マイブックマーク全文検索機能に、お気に入りユーザの表示機能を追加しました - はてなブックマーク日記 - 機能変更、お知らせなど はてなブックマークプラスユーザー限定の機能ですが,ブッ
* [computer/update] QuickTime Alternative ver.2.9.2 QuickTime 形式のメディア・ファイルを再生するライブラリなどの詰合せ for Windows。 * [computer] Perl 5.10.1 を Mac OS X 10.5 にインストールする 事前に Berkeley DB をインストールしておくと良い。 $ wget -c http://ring.riken.jp/archives/lang/perl/CPAN/src/perl-5.10.1.tar.gz $ gzip -cd perl-5.10.1.tar.gz | tar xvf - $ cd perl-5.10.1/ $ ./configure.gnu $ make && make test $ sudo make install CFLAGS などはお好みで。 *
以前にも Perl で Range Coder を実装した (http://d.hatena.ne.jp/naoya/20080927/1222512024) のですが、当時は理解も曖昧なまま速度にも気を遣わずに実装していました。 再度改めて、Range Coder を実装してみました。 http://github.com/naoya/perl-RangeCoder/tree/master README に記載した通り、静的 Range Coder*1、Binary Indexed Tree を用いた適応型 Range Coder、それからついでに 1-order の有限文脈モデルをもちいたものを作ってみました。いずれも Algorithms with Python の情報 (1, 2, 3)を参考に実装しています。 Canterbury Corpus の alice29.txt は 0-
XML::LibXML::parse_html_string で HTML の一部、たとえばブログ記事の本文のみとか、をパースしようとして無駄に苦戦してしまったのでメモ。 以下のような、DOCTYPE 宣言もなければ html/body 要素もないけど、ちゃんと(?)HTMLの一部ではあるものを XML::LibXML でパース、ごにょったあと出力したい。 #!/usr/bin/perl use strict; use warnings; use XML::LibXML; my $html =<<HTML; <div class="entry"> <p>test!!</p> </div> HTML my $parser = XML::LibXML->new; my $doc = $parser->parse_html_string($html); print $doc->toStringH
CPXXXANは古いバージョンのPerlでも動くCPANモジュールのリストを作ってダウンロードできるようにするという発展途上のプロジェクトである。 Perlはこの数年でバージョン5.6、5.8、5.10と進化してきたが、未だに5.10より前の古いバージョンを使い続けている人もいる。しかし、5.6のユーザーが普通にCPANに行ってDBIモジュールをダウンロードしても動かない。最新のDBIは5.6に対応していないからだ。CPXXXANはこの問題を解決するべく開発されている。 CPXXXANという独立したソフトウェアがあるというよりは、Perlのバージョンごとに用意されたURLを通してCPANにアクセスするという言い方が近い。 CP5.5.3ANCP5.6.2ANCP5.8.8ANさて、CPXXXXANを試してみよう。 試す前に環境のテスト普通にCPANシェルを起動して最新のDBIを取得してみる
圧縮アルゴリズムにおける適応型算術符号の実装では、累積頻度表を効率的に更新できるデータ構造が必要になります。もともと算術符号を実装するには累積頻度表が必要なのですが、これが適応型になると、記号列を先頭から符号化しながら、すでに見た記号の累積頻度を更新していく必要があるためです。 累積度数表をナイーブに実装すると、更新には O(n) かかってしまいます。配列で表を持っていた場合、適当な要素の頻度に更新がかかるとその要素よりも前の要素すべてを更新する必要があります。適応型算術符号のように記号を符号化する度に更新がかかるケースには向いていません。 Binary Indexed Tree (BIT, P.Fenwick 氏の名前を取って Fenwick Tree と呼ばれることもあるようです) を使うと、累積頻度表を更新 O(lg n)、参照 O(lg n) で実現することができます。BIT は更
Kawa.netxp [Perl] WebService::Hatena::BookmarkCount/はてなブックマーク件数取得APIへのインターフェース WebService::Hatena::BookmarkCount モジュールは、 はてなブックマーク件数取得API にアクセスして、 指定したURLの被ブックマーク件数を取り出します。 カンタンなメソッド1つで呼び出せるため、XML-RPC に関して勉強する必要がありません。w 有用な情報を便利なインターフェースで提供してくれているはてなに感謝します! 本モジュールの使用には、 XML::TreePP モジュールと、 LWP::UserAgent または HTTP::Lite のいずれかのモジュールが必要です。 Perl 5.005/5.6.x/5.8.x で動きます。 Pure Perl実装のため、コンパイル不要で手軽に利用できま
なんだそりゃって話ですが、例えば、Windowsで、perlプログラムを作って、ダブルクリックで実行すると。 die したときに、あっというまにプロンプトが消えちゃって、わけわかんねってなっちゃいますが。 (追記)charsbarさんによると、レジストリをいじることでWindowsでプロンプト開きっぱにもできるようです。副作用があるようですが。 http://d.hatena.ne.jp/charsbar/20090604/1244104249 そういうときは、例えば、このようにしていたわけです。 BEGIN { $SIG{__DIE__} = sub { print STDERR @_; <>; } } 毎回面倒くさいなぁ、と思い、こういうのはどうかなと。 package Script::Carp; use Carp (); use strict; use warnings; our $
はてなブックマークの Web Hook というのがリリースされましたね! (開発者さま向け) はてなブックマーク Web Hook 機能を公開しました - はてなブックマーク日記 - 機能変更、お知らせなど はてなブックマーク Web Hookとは - はてなキーワード これを設定しておくと、自分がはてブしたタイミングではてブ側から CGI 等を叩いてくれます。 CGI から様々なプログラムを起動するようにしておけば、あんなことやこんなことが可能になっちゃいますね>< こ、これはすごい! ということでさっそく、自分がはてブしたページの URL を Twitter に POST する CGI を書いてみた。 ご自由にお使いください #!/usr/bin/env perl use utf8; use strict; use warnings; use CGI; use Net::Twitter
Kawa.netxp [Perl] XML::TreePP/Pure Perl実装によるXMLファイル展開モジュール XML::TreePP モジュールは、 XML ファイルを解析してツリー構造の多次元変数(ハッシュ/配列)に展開します。 XML テキストと Perl オブジェクト(ハッシュ&配列)間の相互変換が可能です。 コンパイル不要の Pure Perl 実装モジュールなので、 プロバイダのレンタルサーバ環境でも .pm ファイル単体のコピーのみで手軽に利用できます。 (Ajax で利用する JavaScript の XMLHttpRequest オブジェクトのように) サーバからの XML ファイルのダウンロード処理にも対応しています。 安定版アーカイブ: XML-TreePP-0.41.tar.gz TARGZ CPAN ←通常パッケージ 最新版ソースファイル: lib/XML/
2009年05月22日20:30 カテゴリLightweight Languages perl - SayKanji + Yahoo API = itte.pl というわけで、私も作ってみた。 SayKana - Mac用音声合成プログラム saykanjiコマンドを定義して漢字仮名混じり文を読み上げる - ザリガニが見ていた...。 % itte.pl '小飼弾ってちゃんと読んでくれるよ!' % itte.pl 'Englishが混じってもOKだよ!' 以下、ソース。 #!/usr/local/bin/perl # # $Id: itte.pl,v 0.1 2009/05/22 10:12:26 dankogai Exp dankogai $ # use strict; use warnings; use URI; use LWP::Simple; use XML::Simple; my
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く