たつをの ChangeLog : 2014-05-12

「テキストから辞書にある文字列をすべて取り出す簡単なプログラム (Pure Perl)」[2014-05-09-1]の話の続きです。事情により Pure Perl で書きましたが、今回は SUFARY.pm (suffix arrays) を使ったバージョン。suffix arrays による擬似 TRIE です。

結論から言うと、手元の実験環境においては Pure Perl 版よりも 3.5 倍も時間がかかっています。実装がアレなのかもしれませんが、まあたいていの場合は Pure Perl 版で OK ということで。

■実験:
- 辞書とテキスト
-- 辞書:2万3千エントリ(平均文字列長4)
-- テキスト:2500行(平均文字列長71)
- 実行速度(3回平均)
-- Pure Perl 版:2.3秒
-- SUFARY.pm 版:8.2秒

■コード (fesa.pl):
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use utf8;
use open ':utf8';
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';

use SUFARY;

use Getopt::Long;
my $answer_mode = 0; # input with answer?
my $debug_mode = 0;
GetOptions (
    "answer" => \$answer_mode,
    'debug' => \$debug_mode,
    );

my $wordset_fn = shift;
my $sa = SUFARY->new($wordset_fn);

while (<>) {
    print "[INPUT] $_" if $debug_mode;
    chomp;
    $_ = Encode::decode_utf8($_) if not utf8::is_utf8($_);
    my $ans = ($_ =~ s/^((.+?)\t)//) ? $2 : ""  if $answer_mode;

    my @c = split(//, $_);
    my %m;
    for (my $i = 0; $i < @c; $i++) {
        my $key;
	my ($left, $right) = (0, $sa->{'arraysize'}-1);
        for (my $j = $i; $j < @c; $j++) {
            $key .= $c[$j];
            my $ekey = Encode::encode('utf8', $key);
            ($left, $right) = $sa->range_search($ekey, $left, $right);
            last if not defined $left and not defined $right;
            my ($l, $r) = $sa->range_search($ekey."\t", $left, $right);
            next if not defined $left and not defined $right;
            if ($r - $l >= 0) {
                my $li = $sa->get_position($l);
                my $s = Encode::decode_utf8($sa->get_line($li));
                my ($k, $v) = $s =~ /^(.+)\t(.+)$/;
                print "[MATCH] $k ($v)\n" if $debug_mode;
                $m{$v}++;
            }
        }
    }
    
    print "$ans "if $answer_mode;
    print join(" ", map {"$_:$m{$_}"} sort {$a <=> $b} keys %m)."\n";
#    print join(" ", map {"$_:1"} sort {$a <=> $b} keys %m)."\n";
}

■実行例:辞書とテキストは前回[2014-05-09-1]と同じ。
% mkary -l -q fepp-dic.txt
% ./fesa.pl -a fepp-dic.txt < fepp-test.txt
1 1:1 2:1 3:1
0 2:1 3:1 4:1
1 5:1 6:1 7:1 8:1
0 7:1 9:1

Mac OS X の標準アプリ「プレビュー」で画像のヤバい箇所、例えばスクリーンショットでのユーザ名や実名、写真での公開したくない顔、などを隠す方法を例を用いて解説します。

「プレビュー」にはモザイクやボカシの機能はありません。他の機能を使ってなんとかする必要があります。

範囲選択してカット


範囲選択して、画面上のメニューの「編集」→「カット」。または範囲選択して delete キー。カットした部分が透明な四角になります。

プレビューで画像の一部を隠す方法 mac os x

画像データのフォーマットによっては PNG に変換されることがあります(ポップアップで聞かれます)。

プレビューで画像の一部を隠す方法 mac os x

とにかく一番簡単な方法です。

べた塗りで隠す


直線や四角を使います。一番使いやすい「四角」でやることにします。

使う画像(適当):
histgram

画面上のメニューの「表示」→「編集ツールバーを表示」を選択。右上の鉛筆アイコンをクリックでも、Shift+Command+AでもOK。

編集ツールバー上のアイコン「□」をクリックします。
プレビュー塗りつぶし

そのいくつか右にある「塗りつぶしのカラー」のアイコンをクリックし、好きな塗りつぶし色を選びます。
プレビューで一部塗りつぶし

そしてあとは消したい部分に四角を描くだけ。
プレビューで一部塗りつぶし

出来上がり画像。
プレビューで一部塗りつぶし

以上です。

四角を出すには上のメニューの「ツール」→「注釈」→「長方形」でもいいです。

なお、上書き保存になっちゃうので元画像はコピーしておくのが楽です。上のメニューの「ファイル」→「バージョンを戻す」で戻せますけどね。

他の作例:
Yahoo!MailChecker 設定画面 (ref. [2014-03-26-2])
iPhone5 交換? (ref. [2014-05-01-1])

文字や矢印を入れる


ちなみにプレビューでは文字や矢印なんかも入れられますので、ブログで何かを説明する画像を作るときなんかにも使えます。

プレビューで矢印や文字

とりあえず、これ系の作業のベースラインとして使い方を覚えておくとよいかと。

変更履歴


追記150801: 範囲選択&カットという簡単な方法を追加。

「それをすてるなんてとんでもない!」

一部が色あせていて大喜利の題材みたいになってる看板。

大喜利用の看板
家庭の○○を捨てないでください
渋谷区役所

みなさんは空欄に何を入れますか?

もともとは
「ゴミ」
と書かれていました。

2014年5月12日のヲハニュースをお届けします。

iPhone の内蔵スピーカーとマイク

【小技】無音カメラアプリとおさらば!iPhoneの標準カメラで無音撮影する方法 | iPhoneひとすじ! かみあぷ速報
動画撮影中に静止画をとればOK、との話だけど、
(1)動画撮影開始終了時に音がなる、
(2)画質が少し悪くなる、
(3)バッテリーとメモリが減る、
のでオススメできません。特に1がねえ。
オススメはスピーカー穴を指で押さえての撮影。iPhone の下に二つあるスピーカーみたいなやつは実は右だけがスピーカー[2011-11-28-3]なので、右だけ押さえて撮影すればシャッター音が小さくなります。

ヒトラー賛美の隠語:洗剤宣伝のはずが…ドイツで出荷停止 - 毎日新聞
家庭用品大手プロクター・アンド・ギャンブル(P&G、本社・米国)がドイツで売り出した洗剤の容器に、ナチス・ドイツの独裁者ヒトラーを賛美する隠語として極右ネオナチが使う「88」や「18」がデザインされているとして、同社は商品の出荷を中止した。DPA通信などが9日伝えた。
アルファベットの8番目がHのため、ドイツでは「88」はハイル・ヒトラー(Heil Hitler=ヒトラー万歳)を表す隠語とされる。同様に「18」は最初のアルファベットのAと8番目のHでアドルフ・ヒトラー(Adolf Hitler)を示すとされている。
末広がりの八はヒトラーの8。
言葉狩りの一種。
ほんとアホらしい。
10年前に書いたこちらの記事もどうぞ:差別用語の無差別な増殖を危惧[2004-05-19-2]

さすがにポール・マッカートニーでも否めない平日昼間の武道館ライブ10万円のぼったくり感 : 市況かぶ全力2階建
外野がとやかくいう問題ではなさそう。需要と供給の話。
「ネット時代になってCDは終わった、ライブで稼ぐべし」とか主張してた人が文句言ってたりして。

"シンプルということ" by Ken Rockwell を日本語に訳した - Blue-Periodさんの日記
「カメラ・レンズの辛口レビューサイトで有名な Ken Rockwell 氏」による「Simplicity」という記事の翻訳。いろいろと良いことが書いてある。
複雑な写真機というものは、アマチュア写真家に対して、永遠にクズ写真を撮り続けさせる。本当にどうでもいい、余計な情報、懸念、気がかりを与え続けることによって。
「RAWで撮ったほうがいいかな?」
「AdobeRGBを試そう」
「三脚を使って30分に500枚を撮ろう、そしてHDRで完璧にパンフォーカスの写真をあとでつくろう」
こういった余計な思惑に気を散らされ続けるために、いつまでたっても自分が「なにを撮っているのか」に気づくことがない。
適切な設定でシャッターを切ることに集中力を奪われてしまい、被写体を見るパワーは残されていないのである。
もしも良い被写体を見つける努力を怠るようでは、どんなに素晴らしい設定でシャッターを切っても、すべては無駄なのである。
これは優れた写真家がアイフォーンで素晴らしい写真を撮ることからもよく分かる。いかにして撮るかではない、いかによく見ているか、そこが違うのである。
今メインで使っているデジカメ PowerShot S120[2013-09-28-3] ではほぼオート(AUTO)しか使ってないなあ。余計な設定は面倒。
Canon PowerShot S120


日本人の右傾化はどこまで進むのか:PRESIDENT Online - プレジデント
ここ10年くらいで中韓に対しては保守的な方向に進んでいるとは思うが、極端に傾いてはいない(極一部を除いて)。そのうち揺り戻しがきてその繰り返しかと。

値段を上げると、客質があがり、サポートコストが安くなる。
近年のマクドナルドみたいに例外もあるけど、だいたいそんな感じかと。

Project Next NLP
このような大規模なエラー解析は過去に経験がなく、どのような結果が得られるのかやってみないと分からない部分もありますが、今後の自然言語処理研究の方向性を決めるために重要なデータになる事は間違いないと思われます。一人でも多くの研究者に今回のワークショップに参加していただき、自然言語処理研究における次なる展開につなげていくことを期待しています。

【聞きたい。】Hagexさん 『ネット釣り師が人々をとりこにする手口は…』+(1/2ページ) - MSN産経ニュース
どうも釣りくさい。
Hagex / 2ch、発言小町、はてな、ヤフトピ ネット釣り師が人々をとりこにする手口はこんなに凄い ネットで人々をとりこにする40の手口 [Kindle版]

(ref. [2014-04-21-3])

たつをの ChangeLog
Powered by chalow