タグ

scriptに関するgologo13のブックマーク (21)

  • 練習がてらC++でHMMのコードを書いた - yasuhisa's blog

    いわゆるお勉強的なコードなので特に新しいところはないです。 HMMをベースにしたモデルを作る必要が(たぶん)出てきそうなんですが、そういえばHMMの前向き後ろ向きアルゴリズムの付近とか実装したことねぇやべぇと思ったので書いてみました*1。系列の長さが100超える付近からまじめにやらないとアンダーフローで死んだりしたので、Scalingの付近はちゃんとやりました。が、i.i.d.な系列が複数あるバージョンでの推定や、テストデータが未知語を含む場合などは(不真面目なので)端折ってます。まあ、それでも遊べるし...。コードはgithubに上げました。 github.com 対数尤度が単調増加してる感じだったので、こんなんでとりあえずいいかーと思ったものの、去年unsupervisedなpos taggingを機能語と内容語を考慮してモデル化する話の論文とか読んでみて、教師なしのpos taggi

    練習がてらC++でHMMのコードを書いた - yasuhisa's blog
  • HTMLにふくまれるrelative URLをabsolute URLにかきかえる簡単な方法 - tokuhirom's blog

    HTMLにふくまれるrelative URLをabsolute URLにかきかえる簡単な方法 http://blog.livedoor.jp/dankogai/archives/51568463.html HTML::ResolveLink をつかうと簡単ですね。 #!/usr/bin/perl use strict; use warnings; use utf8; use HTML::ResolveLink; use LWP::UserAgent; my $url = 'http://japan.cnet.com/news/business/story/0,3800104746,20416479-0,00.htm'; my $ua = LWP::UserAgent->new(); my $res = $ua->get($url); die $res->status_line unless

    gologo13
    gologo13 2011/01/04
    これを待っていた.
  • トライの実験に使えるちょっとしたツール - やた@はてな日記

    トライを構築したときのノード数が分からない,TAIL を導入したときにサイズがどのくらい小さくなるのか分からない,そんな悩みに答えるちょっとしたツールのソースコードです. 各ノードのサイズとノード数が分かればトライのサイズは簡単に求まるので,トライについて少し試してみようという段階で便利かもしれません. 例えば,ダブル配列であればノード数 n に対して 4n bytes か 8n bytes が基です.ただし,以下のツールは終端文字による遷移をカウントしないことに注意してください.後,TAIL の長さが m であれば,m bytes を追加することになります. また,LOUDS Trie であれば,木の表現に 2n bits,ラベルの保存に n bytes,終端フラグの保存に n bits,後は rank/select の索引に…という具合で 1.5n bytes くらいになると思います

    トライの実験に使えるちょっとしたツール - やた@はてな日記
  • 【CGI・Perl】ハッシュの値でソート(並べ替え)する

    CGI・Perl例文集 CGI(Perl)のサンプルプログラムをコピー&ペーストで使える便利集! カテゴリー:ハッシュ(連想配列)  ハッシュの値でソート(並べ替え)する ハッシュのキーでソートするのは、さほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。 ;# ;#ハッシュを値でソートして表示 ;# #------------------------------# #初期化する #------------------------------# %hash = ( 'A' => '1_オレンジ' , 'B' => '4_りんご' , 'C' => '2_マスカット' , 'D' => '3_バナナ' ); #------------------------------# #値で並べ替えて表示 #---------------------------

    gologo13
    gologo13 2010/10/15
    hash sort value
  • perl - LWP::UserAgentで進捗表示しつつダウンロード : 404 Blog Not Found

    2008年11月21日00:15 カテゴリLightweight Languages perl - LWP::UserAgentで進捗表示しつつダウンロード 後のデザートとして手頃なサイズの問題だったので。 Ruby Net::HTTP で進捗表示しつつダウンロードのメモ - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech #!/usr/local/bin/perl # # $Id: lwp-callback-example.pl,v 0.1 2008/11/20 15:16:48 dankogai Exp dankogai $ # use strict; use warnings; use LWP::UserAgent; use File::Basename; my $uri = shift || die "$0 http://example.com/bi

    perl - LWP::UserAgentで進捗表示しつつダウンロード : 404 Blog Not Found
  • javascript - Math.BigInt で多倍長整数演算 : 404 Blog Not Found

    2010年09月12日03:00 カテゴリLightweight Languages javascript - Math.BigInt で多倍長整数演算 ついムラムラと。 /lang/javascript/math-bigint/trunk - CodeRepos::Share - Trac dankogai's js-math-bigint at master - GitHub フルスクラッチでないのでかえって苦労したかも。 Demo: var x = bigint("1234567890123456789012345678901234567890"); var y = new Math.BigInt("12345678901234567890"); p( x.add(y) ); p( x.sub(y) ); p( x.mul(y) ); p( x.div(y) ); p( x.mod(

    javascript - Math.BigInt で多倍長整数演算 : 404 Blog Not Found
  • パターン認識と機械学習(PRML)まとめ - 人工知能に関する断創録

    2010年は、パターン認識と機械学習(PRML)を読破して、機械学習の基礎理論とさまざまなアルゴリズムを身につけるという目標(2010/1/1)をたてています。もうすでに2010年も半分以上過ぎてしまいましたが、ここらでまとめたページを作っておこうと思います。ただ漫然と読んでると理解できてるかいまいち不安なので、Python(2006/12/10)というプログラミング言語で例を実装しながら読み進めています。Pythonの数値計算ライブラリScipy、Numpyとグラフ描画ライブラリのmatplotlibを主に使ってコーディングしています。実用的なコードでないかもしれませんが、ご参考まで。 PRMLのPython実装 PRML読書中(2010/3/26) 多項式曲線フィッティング(2010/3/27) 最尤推定、MAP推定、ベイズ推定(2010/4/4) 分類における最小二乗(2010/4/

    パターン認識と機械学習(PRML)まとめ - 人工知能に関する断創録
  • Emacs Lispでホスト名を知りたい - わさっきhb

    テキストエディタといったらEmacsです.Linuxをインストールしたら,まずEmacsが使えるかチェックしますし,手元のいくつかのWindows環境ではMeadowを活用しています.ただし,起動に時間がかかりますので,Emacsと類似のキーストロークでより軽い,jedコマンドやxyzzyを使うときもあります*1. さて,年末年始に,EmacsとMeadowの設定ファイルを一元管理しようと思い立ちました.これらのLispコードには互換性があります.ただしEmacsのバージョンに基づく微妙な違いもあったりします. まずはざっとファイルを読み直し,コードを整理し,自分へのメモとしてコメントをつけました. そんな中,欲しいと思ったのが,「ホスト名に基づいてファイル名を生成する」こと.例えば,ホスト名がabcなら,~/.emacs.abc を読み出し,ホスト名がxyzなら ~/.emacs.xyz

    Emacs Lispでホスト名を知りたい - わさっきhb
  • 「言語処理のための機械学習入門」を参考に各種モデルに対するEMアルゴリズムを実装したよ - nokunoの日記

    Amazonにもレビューを書いたのですが、高村さんの「言語処理のための機械学習入門」を読みました。実はこのを読むのは2回目で、1回目はドラフト版のレビューをさせていただく機会があったのですが、そのときは「言語処理研究者のための機械学習入門」というタイトルで、ちょっと敷居が高いのではないかとコメントしたら「研究者」の部分が削られたという経緯があったりしました。 それはともかくとして、以前読んだときは時間もなくて実装までする暇はなかったのですが、今度はもうちょっとじっくり読みたいなということで、このブログに書いてみようと思います。EMアルゴリズムは教師なし学習を確率モデルと最尤推定でやろうとするときに必ず出てくる手法で、隠れ変数や欠損値を含む色々なモデルに適用できる汎用的なフレームワークになっています。一般的には混合ガウス分布の場合をまず説明して、それがk-means法の一般化した形になって

  • Aho Corasick 法 - naoyaのはてなダイアリー

    適当な単語群を含む辞書があったとします。「京都の高倉二条に美味しいつけ麺のお店がある」*1という文章が入力として与えられたとき、この文章中に含まれる辞書中のキーワードを抽出したい、ということがあります。例えば辞書に「京都」「高倉二条」「つけ麺」「店」という単語が含まれていた場合には、これらの単語(と出現位置)が入力に対しての出力になります。 この類の処理は、任意の開始位置から部分一致する辞書中のキーワードをすべて取り出す処理、ということで「共通接頭辞検索 (Common Prefix Search)」などと呼ばれるそうです。形態素解析Wikipediaはてなキーワードのキーワードリンク処理などが代表的な応用例です。 Aho Corasick 法 任意のテキストから辞書に含まれるキーワードをすべて抽出するという処理の実現方法は色々とあります。Aho Corasick 法はその方法のひと

    Aho Corasick 法 - naoyaのはてなダイアリー
  • 構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog

    どのようなときにAho Corasick法が必要か辞書構築した後の応用先(?)の一つとして、辞書を元にした転置インデックスを作ることがあげられる。「どのキーワードがどの文章に登場したか」が一番簡単な転置インデックスだと思うんだけど、今回は登場した文章のどの位置にあったかまで記録したい(例えばリンクを張る時に使いたいから)。転置インデックス作るときは、通常 形態素解析ベース N-gramベース の2種類が主な手法だと思うんだけど、今回はせっかく構築した辞書をもとに転置インデックスを作りたいので、上の2つではうまくできない。かといって、文章とキーワード総当たりとかやっていたら死ぬので、効率のよい方法が必要。そこでAho Corasick法ですよ、奥さん。はてなキーワードへのリンク処理とかに使われたりします。 入力と出力入力と出力を先に紹介しよう。入力は辞書とこんな感じの文章。 <総説誌名>蛋白

    構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog
  • TRIE-Optimized Regexp : 404 Blog Not Found

    2005年09月11日07:06 カテゴリLightweight Languages TRIE-Optimized Regexp これをPerlで直接使えたらうれしいよね>おおる きまぐれ日記: はてなキーワードを高速に付与 そこで、はてなキーワードを TRIE を使って付与するプログラムを作ってみました。 というわけで、やってみました。 最初はDartsのXSを作ろうとしたのだけど、どうもtemplateばりばりのC++コードとXSは相性が悪い。でもTrieを作るだけなら、Perlでもそこそこ出来るし、実際Regexp::OptimizerやRegexp::Assembleのようなモジュールもある。ただこれらはTrie以外のOptimizeもしてしまうので、ちょっと重たいというわけで、mk_trie_regexp.plというScriptをサクっと書いてみました。 使い方は簡単。/usr/

    TRIE-Optimized Regexp : 404 Blog Not Found
    gologo13
    gologo13 2010/08/09
    関連記事,関連リンクも参考になると思います.
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

    gologo13
    gologo13 2010/08/09
    いろんなコードがある!
  • Spaghetti Source - 複数パターン検索 (Aho-Corasick)

    説明 複数のパターン文字列からなる集合と長い文字列が与えられる.長い文字列に対してマッチするパターン文字列をすべて求めるアルゴリズムが Aho Corasick である.これは複数パターン文字列をあらかじめ trie に変換してから KMP を実行し,パターンマッチング・オートマトンを構成していることになる. 詳しくは適当な成書や http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdf などを参考のこと. 計算量 構築 O(m). 検索 O(n + m). ただし m はパターンの文字列長の総和,n は検索テキスト長. 使い方 struct PMA; を適宜設定のこと. buildPMA(char *p[], int m) 0 ... m-1 の複数の検索パターンから,パターンマッチング・オートマトンを構築する. match(c

  • 逆行列の計算 - kozima の雑記

    必要になって何となく OCaml で書いて何となく晒す。 なんとなく面倒臭そうなイメージを持ってたんですが,実際に書いてみたらそうでもありませんでした。 破壊的代入の塊であるという点では関数型らしくありませんが,配列の破壊的操作が Array.iteri で思いの外すっきり書けたあたりは関数型言語の特性かなあ,と思いました。 let init_matrix m n f = Array.init m (fun i -> Array.init n (fun j -> f i j)) let make_unit_matrix n = init_matrix n n (fun i j -> if i = j then 1.0 else 0.0) (* destructive version of Array.map; works as (map-into a f a) in CL *) let a

    逆行列の計算 - kozima の雑記
  • Unification

    単一化(unification) 単一化の定義 この節の定義等の多くは[1]から引用しています。 項 V を可算無限個の変数の集合、F を関数記号の集合とします。 V, F から構成される項の集合 T(F, V) を以下の条件を満たす最小の集合と定義します。 x∈V ⇒ x∈T(F, V) f∈F, t1, ..., tn∈T(F, V) ⇒ f(t1, ..., tn)∈T(F, V) 関数記号 f ごとに、f がとりうるパラメータの個数 n があらかじめ定められているものとします。 この n を f の項数といいます。 (以下で、T(F, V) を T と書きます。) 項 x, y が一致することを x≡y と書きます。 代入 V から T への写像 σ でD(σ)={x∈V|xσ≠x} が有限なものを代入といいます。 ここで D(σ) を σ の定義域といいます。 項 t に含まれる

    gologo13
    gologo13 2010/07/30
    擬似コード付き.いつか参考に
  • 猫はうろうろ - yasuhisa's blog

    にゃーにゃー、ではなくてw。情報学類(今名前変わったんだっけか)のほうで出ている自然言語処理の講義ほうで、形態素解析をするための「wikipedia:ビタビアルゴリズム(Viterbi algorithm)」というのを勉強しました(GWの前くらいに)。なんか全然分かっていなかったので、書いてみることにしました。アルゴリズムの種類としては動的計画法(Dynamic Programming)に入るので、アルゴリズムデザインのほうの勉強にもなるし(という合理化)。 「はうろうろ」という文字列は「、はう、ろう、ろ」や「、は、うろうろ」など様々な形で形態素解析することができます。これをある基準で分解したいのですが、ここでは一番単純そうな単語数最小法と呼ばれる方法でやります。 このやり方で「はうろうろ」と「家におくりました」を形態素解析すると結果は次のようになります。 /tmp% ruby v

    猫はうろうろ - yasuhisa's blog
  • 前向きアルゴリズム、Vitebiアルゴリズム - yasuhisa's blog

    Viterbi書くの何回目だろ。。。週末にはバウムウェルチ(Baum-Welch)のアルゴリズムこと前向き後ろ向きアルゴリズムを書きたいところ。 www.yasuhisay.info # -*- coding: utf-8 -*- # 確率的言語モデル(東京大学出版)第4章(隠れマルコフモデル) require 'pp' # 品詞iから品詞jへの遷移確率 # 番号と品詞の対応付け: 0(名詞)、1(冠詞)、2(動詞)、3(形容詞)、4(前置詞) a = [[0.3, 0.0, 0.4, 0.1, 0.2], [0.7, 0.0, 0.0, 0.3, 0.0], [0.3, 0.2, 0.1, 0.2, 0.2], [0.5, 0.1, 0.0, 0.4, 0.0], [0.6, 0.3, 0.0, 0.1, 0.0]] # 品詞jから単語iを生成する確率 # 番号と単語の対応付け: 0(T

    前向きアルゴリズム、Vitebiアルゴリズム - yasuhisa's blog
    gologo13
    gologo13 2010/07/25
    Viterbiアルゴリズムの実装
  • ほどよく不自然な言語をつぶやき続けるスクリプト - 木曜不足

    Baidu さんちの不自然言語処理コンテスト用に何かネタを思いついたら作ってみようかな〜、とぼんやりしているうちに締め切りが過ぎていた。 と、残念がっていたらなんか締め切りが1日伸びたようなので、このまえ作っていた 不自然言語処理コンテストのコーパスを使って乱数作文するスクリプト を3-gram 以上に対応させつつ、出来るだけ長い文章をつぶやき続けるようにちょっと作り直してみた。 #! /usr/bin/env python # -*- coding: utf-8 -*- # endless_text.py : Endless Text Generator import sys, time, codecs, random # codec指定(DOS窓/リダイレクトの両方に対応) if not sys.stdout.encoding: sys.stdout = codecs.getwrite

    ほどよく不自然な言語をつぶやき続けるスクリプト - 木曜不足
  • Google N-gram V.S. Baidu N-gram 〜ケータイウェブは本当にエロいのか?〜 - nokunoの日記

    近年検索エンジンのBaiduは不自然言語処理コンテストなるものを開催し、今日が締切のはずだったのだが24時間延長されたらしいことを聞いてBaiduコーパスをダウンロードしたid:nokunoは仕事帰りの電車で思いついたアイデアを30分ほどで実装してみたところそれなりに面白い結果がでたので応募してみることにした。そもそもBaiduのコーパスはエロいというのを最初に誰かが言ったら@mhagiwaraさんがこんなツイートをしたことに話は遡る。インターネットがエロいのは誰でも知っている。けれど、ケータイウェブが特別にエロいのか? については寡聞にして知らなかったため、検証してみることにした。今回はケータイウェブがエロいかどうかを検証するため、以下のコーパス(N-gramデータ)を相互に比較することとした。Baidu N-gram(Baidu絵文字入りモバイルウェブコーパス) 今回のメインターゲット

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy