タグ

ブックマーク / d.hatena.ne.jp/nokuno (10)

  • テキストファイルを処理するときのUnixコマンドまとめ - nokunoの日記

    個人的にテキストファイルを処理することが多いのですが,簡単な処理ならUnixのコマンドをパイプとリダイレクトで組み合わせてできることが多くあります.今回はそんななかでもちょっとマニアックなTIPSをまとめてみました. sortコマンドでタブ区切りのファイルを指定する最近知って驚愕したのがこれ.sortコマンドでタブ区切りのファイルを指定したいときは,Ctrl+v Tabでタブ文字を入力していたのですが,$ sort -t $'\t' -k 2,2 のようにしてタブ区切りで2番目のキーでソートすることができます. 1000行おきにデータをサンプリングする1000行おきにファイルからデータをサンプリングしたいときとかは,perlでワンライナーを書くのが速いようです.$ perl -ne '$i++; print unless ($i % 1000)' 某所のコードゴルフによるとこれだけ短くでき

  • 自然言語処理における「全部入り」パッケージ - nokunoの日記

    以下のエントリの翻訳です.End-to-end NLP packages | AI and Social Science – Brendan O'Connor無料で手に入る全部入りの自然言語処理(Natural Language Processing; NLP)システムにはどんなものがあるだろうか? ここでいう全部入りとはつまり,生のテキストから始めて,構文解析や意味的構造を出力するもののことを指す.多くのNLP研究は一度に1つのタスクしか取り扱わず,そのタスク専用のソフトウェアが開発されている.しかし多くのアプリケーションでは,あなたが与えたテキストがなんであれ動いてくれるような,最初から最後まで面倒を見てくれるものが望ましい. あなたがこれを価値あるゴールだと思うなら(注意点は下にある),そのようなシステムはあまり多くないが,ここに当てはまると思われるものがいくつかある.もし誤りや不明

  • サンプルコードがPythonで書かれた自然言語処理・データマイニングの書籍 - nokunoの日記

    サンプルコードがPythonで書かれた自然言語処理・データマイニングの書籍についてまとめました.オライリー社から出版されているものが多いですね.日語だと,以下のが有名です.Amazon.co.jp: 集合知プログラミング: Toby Segaran, 當山 仁健, 鴨澤 眞夫: Amazon.co.jp: 入門 自然言語処理: Steven Bird, Ewan Klein, Edward Loper, 萩原 正人, 中山 敬広, 水野 貴明: Amazon.co.jp: ビューティフルデータ: Toby Segaran, Jeff Hammerbacher, 堀内 孝彦, 真鍋 加奈子, 苅谷 潤, 小俣 仁美, 篠崎 誠: 実は他にもこの手のは洋書で色々と出版されています.Amazon.co.jp: Mining the Social Web: Matthew A. Rus

    TMTL
    TMTL 2011/08/22
  • 自然言語処理にはやっぱりPythonがいちばん - nokunoの日記

    Quoraで「自然言語処理に適したプログラミング言語はどれか?」という質問をしたところ,やっぱりPythonが一番人気のようです.What programming language is suitable for natural language processing? - Quora理由として以下が挙げられていますNLTKがあるから正規表現ライブラリ(re)が強力だからnumpyとscipyがあるから スクレイピングにBeautifulSoupやScrape.pyが使えるから Django / Pylons / TornadoのようなWebフレームワークがあるから また,機械学習のライブラリを言語別にまとめた質問もありました.こちらもJava, Python, Rが多いですね.Which programming language has the best repository of ma

    TMTL
    TMTL 2011/08/20
  • ちょっと高度なgitの使い方 - nokunoの日記

    gitを使っていて,よく使うコマンドには以下のようなものがあります. git add git commit git diff git log git clone git init git push git pull git status git branch git merge今回は基的な使い方に加えて,最近使い出したちょっと高度な使い方を紹介したいと思います. git commit --amendgit commit --amendと打つと,直前のコミットメッセージを変更することができます. git resetgit reset --soft HEAD^と打つと,1つ前のコミットを取り消すことができます.ワーキングディレクトリにはその変更は残ります.残したくない場合は--hardを使います. git log --statログを確認するときに,コミットメッセージだけだと分からない・思いだ

    TMTL
    TMTL 2011/07/18
  • プログラミングコンテストチャレンジブックを読みながらダイクストラ法を実装したよ - nokunoの日記

    前回のベルマンフォード法から時間があいてしまいましたが、プログラミングコンテストチャレンジブック(通称アリ)を読みながらグラフの最短経路を求めるためのアルゴリズム、ダイクストラ法を実装しました。 ベルマンフォード法 - nokunoの日記ダイクストラ法 - Wikipedia ダイクストラ法ではグラフ中のノードを次の3つに分類します。 未探索 探索済み 次の探索候補この「次の探索候補」の中から最もコストの小さいノードを選んで探索済みとし、その隣接ノードのコストを更新するというのがダイクストラ法の根のアルゴリズムとなります。 最初の実装それでは実装を見ていきましょう。まず最初の実装では次に探索済みとなる要素を線形探索しているためあまり効率的ではありません。 #include using namespace std; #define MAX_E 20 #define MAX_V 7 #d

  • そろそろHadoopについてひとこと言っておくか - nokunoの日記

    もうこの手の話題は出尽くした感がありますが、最近Hadoopについて考えることが多いので、エントリにしてみます。なお、ここではベーシックなMapReduce+HDFSのことをHadoopと呼ぶことにします。 HadoopとはHadoopとは言わずと知れたGoogleMapReduce/GFSのオープンソースのクローンです。MapReduceではプログラマはMapとReduceという2つの関数を書くだけで、並列分散処理をすることができます。これは(1) データを実際に持つマシンにプログラムを配布する (2) MapとReduceをつなぐShuffleフェーズでキーをグループ化してソートする、(3) 障害時のフェールオーバーやレプリケーション、といった処理をフレームワーク側が受け持つことによって、プログラマ側の負担を減らすものです。GFSに対応するHDFSにはファイルをクラスタに分散して保存

    TMTL
    TMTL 2011/01/03
  • 「Mozcソースコード徹底解説」 at 第2回自然言語処理勉強会 - nokunoの日記

    というわけで自然言語処理勉強会を開催しました。第2回自然言語処理勉強会@東京 : ATND私の発表は、シルバーウィークにもう1回読んでみたMozcのソースコードの解説をしました。Tokyotextmining02 mozcView more presentations from nokuno. その他、関連するリンクです。Togetter - 「第2回 自然言語処理勉強会@東京 (#tokyotextmining)」 自然言語処理研究会 - tsubosakaの日記 (id:tsubosakaさん) 自然言語処理勉強会で「ナイーブベイズによる言語判定」を発表してきました - Mi manca qualche giovedi`? (id:n_shuyoさん)Query Suggestion @ tokyotextmining#2 (@y_benjoさん)

    TMTL
    TMTL 2010/09/27
  • SVMによる予測変換 - nokunoの日記

    Google日本語入力のOSS版であるMozcが公開されたので、ソースコードを読んでみました。Google Japan Blog: Google 日本語入力がオープンソースになりました mozc - Project Hosting on Google Code変換アルゴリズムや学習のロジックに関しては、id:tkngさんが早速ブログにまとめていますので、そちらを読むとよいと思います。また何か気づいたことがあったら書いてみたいと思います。Mozc(Google日本語入力)のコードを読んだメモ - 射撃しつつ前転 Mozcのコードで個人的に興味深かったのは予測変換のアルゴリズムでした。私はもともと修論の時に予測変換の研究をしていて、予測変換のトレードオフという問題に取り組んでいました。予測変換は、単純に考えると候補の頻度が高ければ高いほど良いのですが、それだけだと常に最も短い候補が出力されてし

  • 2009-12-31 - nokunoの日記

    年末年始はIntroduction to Algorithmを読みながら、pythoonでアルゴリズムの勉強をしようと思います。というわけでまずは簡単なところからマージソートを書きました。 #!/usr/bin/python def merge(left,right): result = [] while left != [] and right != []: if left[0] else: result.append(right.pop(0)) result.extend(left) result.extend(right) return result def merge_sort(a): n = len(a) if n == 1: return a left = merge_sort(a[0:n/2]) right = merge_sort(a[n/2:n]) return merg

  • 1