タグ

ブックマーク / www.yasuhisay.info (6)

  • 能動学習で効率的に教師データを作るツールをGoで書いた - yasuhisa's blog

    みなさん、教師データ作ってますか?! 機械学習のツールも多くなり、データがあれば簡単に機械学習で問題を解ける環境が整ってきました。しかし、データ作成は重要ながらも未だに大変な作業です。最近、私もいくつかのドメインで教師データを作る機会があったので、能動学習を使ってコマンドラインから簡単に教師データ作成(アノテーション)ができるツールを作ってみました。 今回は能動学習で教師データを作る意義と、作ったツールの使い方について簡単に書きます。 問題設定 能動学習を使って教師データを効率的にアノテーション go-active-learningを試してみる ダウンロード/インストール 能動学習でアノテーション おまけ: Go言語を使って得られた効用/感想 問題設定 例があったほうが説明しやすいので、問題設定を先に。 あなたはエンジニアが集まるSlackチャンネルに、最近人気の技術エントリを定期的に投稿

    能動学習で効率的に教師データを作るツールをGoで書いた - yasuhisa's blog
  • Go言語にさらに入門するために係り受け解析器を書いた話 - yasuhisa's blog

    今年からGo言語に入門していますが、もう少し複雑なものをものを書いてみたいと思ったので、係り受け解析器を書きました。その過程で工夫したこと、苦労したことをまとめます。作ったものはこちら。 一人で作っているプロジェクトですが、100行以下の細かめの修正毎にPull Requestを作っているので、どのような過程でやっているかが比較的分かりやすいと思います。 easy-first algorithmについて 係り受け解析アルゴリズムの1つです 最も自信のある(つまり簡単な)ところから係り受け関係を付けていくgreedyな方法です コーパスには正解の係り受けは付与されていますが、簡単さの順序は当然分からないので、構造化パーセプトロンでそれを含めて学習します 構造化パーセプロトンについては入門エントリを書いているので、興味がある方はどうぞ なぜ係り受け解析器を書いてGo言語の入門をするのか 学んだ

    Go言語にさらに入門するために係り受け解析器を書いた話 - yasuhisa's blog
    hiroyukim
    hiroyukim 2017/05/10
    “プロファイリングで地道に改善していく経験がしたい ”
  • mapとunordered_mapの違いについてまとめておく - yasuhisa's blog

    NLPだとstd::mapとtr1::unordered_mapなら後者を使うことになることが多いと思うけど、あれこれ混乱してきたのでメモる。NLPerなら押さえておくべき常識のはず。。。 それぞれの特徴 データ構造 std::map tr1::unordered_map 実装 赤黒木 ハッシュテーブル find log n Average case: O(1), Worset case: O(n) insert log n Average case: O(1), Worset case: O(n) delete log n Average case: O(1), Worset case: O(n) メリット キーでソート済みなことが保障されているので、ある範囲でiterationさせたいとき、deleteするなどの操作を効率的に行うことができる バケット数を最初にきちんと設定しておけば大

    mapとunordered_mapの違いについてまとめておく - yasuhisa's blog
    hiroyukim
    hiroyukim 2011/11/02
  • 最近はてなが遅い気がするので - yasuhisa's blog

    なんか最近やたらと遅くないですか、、、ということでどうにかしないと日常生活に支障をきたす恐れがあるので、どうにかする*1。自分ははてダラを使って日記を書いているので、ローカルに全部テキストは持っている。ということで、このテキストを使ってローカルにはてダもどきを作ってしまえばよい。 ということでsinatraで作ってみることにした(バイトでちょっとsinatraを使ってみたので)。とりあえず一覧と個別エントリーのページ、あと検索ができればどうにかなる。検索は形態素解析してから転置インデックスに放り込むとか考えたけど、検索漏れが多すぎて使わなくなりそうなので、SuffixArrayを使ってやることにした。これなら漏れはない。形態素解析のやつはクエリーのほうも形態素解析してからunionを取るとかいう感じなんだろうか、よく分からん。 はてな記法の変換にはRuby版のText::Hatenaを使っ

    hiroyukim
    hiroyukim 2010/04/21
  • ローカルはてなもどきなアプリをリリースしました - yasuhisa's blog

    ここで書いてたやつです。自分で使ってて使い勝手がよかったので、リリースしてみることにしました。githubからダウンロードしてください。 GitHub - syou6162/local_hatena_search: ローカルにあるはてな記法のテキストファイルをBlog風に表示&検索ができるアプリ text-hatenaのほうもgit cloneしてきてインストールしたらsinatra&hamlも入れれば準備はだいたい終わりです。あとはREADMEを見てくだしあ。 特徴としては 検索がSuffixArrayを使っているので、それなりに早い&検索漏れがない ローカルのファイルが編集された状態でブラウザのほうをリロードするとupdateされる mimetexではなくGoogle Chart APIの数式を使っているのでわりときれい などなどです。まあ、あんまり大したことないですね。。。検索とかロ

    ローカルはてなもどきなアプリをリリースしました - yasuhisa's blog
    hiroyukim
    hiroyukim 2010/04/21
  • LZ78方式符号化をRubyで実装、を改良 - yasuhisa's blog

    Trieちゃんと使ったので、それなりの速度になりました。100MBくらいのテキストが40MBくらいまで縮んだかと思えば、2.8MBのテキストが2.6MBにしかならなかったりと圧縮したいテキストの性質によって圧縮率が全然違う感じでした。WEB+DB PRESS Vol.54によると、LZ78方式符号化はXMLのような文章では強いらしい。 #!/opt/local/bin/ruby1.9 # -*- coding: utf-8 -*- require 'pp' module Trie class Node attr_accessor :sym, :code def initialize(code) @code = code # 番号 @sym = Hash.new end def insert_child(sym, code) @sym[sym] = Trie::Node.new(code)

    LZ78方式符号化をRubyで実装、を改良 - yasuhisa's blog
    hiroyukim
    hiroyukim 2010/04/21
  • 1