タグ

自然言語処理に関するropponzoのブックマーク (6)

  • ScalaでRやMatlabみたいに行列の操作をおこなう

    この文書はScala Advent Calendar 2013の21日目のために書きました。 Scalaにも行列操作や線形代数の便利ライブラリがあります。 pythonに負けてないぜってことで。 それがScalaNLPです。 1. ScalaNLPとは? ScalaNLPの「NLP」とは、 「Natural Language Processing」 つまり自然言語処理のことらしいです。 SaclaNLPは自然言語処理と機会学習のための数値解析ライブラリを提供しています。 ScalaNLPには、RやMatlab、Numpyみたいに、ベクトルや行列の操作をかんたんに行うためのクラスとメソッドが用意されています。 ScalaNLPのすばらしい(というか私の大好きな)ところは、数値演算にJNIを使うところです。 OSコマンドをコールして高速に数値演算を行う仕様なのです。 Rでは破綻してしまう大量デ

  • Java製形態素解析器「Kuromoji」を試してみる

    概要 Javaの比較的新しい形態素解析器、Kuromoji。 lucene-gosenやGomokuのように辞書内包で、jarを落とせばその場で利用でき、Unidicに対応していて、ソースがLuceneのtrunkにコミットされているという、何かと気になる特徴の持ち主。 複数のモードを持っているようで、Searchモードを使うと「日経済新聞」を「日 | 経済 | 新聞」のように検索で利用しやすい形にばらして解析してくれたり、Extendedモードを使うと未知語をuni-gramにしてくれたりもするらしい。 今日はそんなKuromojiさんの導入から簡易な使い方までをさらっと追いかけてみた。 導入 まずは下記ページからダウンロード。今回はkuromoji-0.7.5.tar.gzを利用。 Downloads - atilika/kuromoji https://github.com/at

  • 誤り許容カウント法(lossy count method)のサンプルプログラム

    誤り許容カウント法(lossy count method)のサンプルプログラム 2010-05-12-1 [Programming][Algorithm] 1行1ラベル形式で、 1万種類のラベルを持つ、 100万行のデータがあるとします (ラベルの頻度分布はジップの法則にだいたい準拠するとします)。 各ラベルの頻度をハッシュを使ってカウントするとなると、ハッシュエントリ1万個分のメモリ容量が必要になります。(1万じゃたいしたことないな、という人はもっと大きな数に置き換えて読んでください。) しかし、カウント後に高頻度のものしか使わないということも多いと思います。例えば頻度5000以上のもののみ取り出してあとはいらない、とか。 そうなると、全部のラベルのカウントデータを最後まで保持するのは無駄に思えます。 そこで登場するのが「誤り許容カウント法(lossy count method)」。 低

    誤り許容カウント法(lossy count method)のサンプルプログラム
  • 大規模データで単語の数を数える - ny23の日記

    大規模データから one-pass で item(n-gram など)の頻度を数える手法に関するメモ.ここ数年,毎年のように超大規模な n-gram の統計情報を空間/時間効率良く利用するための手法が提案されている.最近だと, Storing the Web in Memory: Space Efficient Language Models with Constant Time Retrieval (EMNLP 2010) とか.この論文では,最小完全ハッシュ関数や power-law を考慮した頻度表現の圧縮など,細かい技術を丁寧に組み上げており,これぐらい工夫が細かくなってくるとlog-frequency Bloom filter (ACL 2007) ぐらいからから始まった n-gram 頻度情報の圧縮の研究もそろそろ収束したかという印象(ちょうど論文を読む直前に,この論文の7節の

    大規模データで単語の数を数える - ny23の日記
    ropponzo
    ropponzo 2013/09/24
    これらの研究は,既に数え終わった静的な n-gram の頻度情報を,コンパクトに保持するためのデータ構造を提案しているが
  • 超大規模テキストにおけるN-gram統計 - Negative/Positive Thinking

    はじめに 超大規模なテキストデータでのN-gram統計を取る場合、そもそもデータがメモリにのらなくてSuffixArrayを使ったカウントも無理だったりする。近似値でよい場合、効率的な方法があると知ったのでちょっとメモ&試してみた。 与えられるデータ 大量のデータがストリーム形式で与えられるとする 高速にどんどん与えられる 例えば、データパケット監視やtwitterなど カウントしたいデータの種類が膨大 種類をメモリに保持するのが無理 ストリームデータにおける頻度カウント法 正確なカウントは難しいが、近似的に頻度カウントを行うことができる Sticky Sampling Algorithmは解釈が間違っているかもしれない Sticky Sampling Algorithm カウントする要素をサンプリングで選ぶ方法 保持するのは以下の2つのペアの集合 e : 要素(例えばN-gram) f

    超大規模テキストにおけるN-gram統計 - Negative/Positive Thinking
  • FluentdとRedisを使ったランキング機能の実装 | SmartNews開発者ブログ

    ゴクロの大平です。ごくろうさまです。 Redisは高速で、かつデータの永続化や、複数のデータ型によるストア(list,set,sorted set等)も対応しており、機能的が豊富ということから愛用者の多いKVS実装の一つだと思います。 特に私のようなアプリケーションエンジニアの人間にとってはデータ型のバリエーションの豊富さが便利さを感じる部分で、たとえばlistを用いてタイムライン的な情報や履歴情報の管理、sorted setを用いてランキング情報の管理、などのようにアプリケーションの需要の多くにRedisが対応することができます。 これらの情報を登録する際のフローとしては自作のアプリケーションから直接、というケースが多いと思いますが、せっかくFluentdのような便利なlog collector実装があるので、FluentdとRedisを組み合わせる事でカジュアルに情報の蓄積を行いたい

  • 1