2012年3月21日水曜日

Python: ATNDのAPIを使ってイベントをJSON形式で取得する

ATNDのAPIを使って、Pythonでイベント情報を取得してみました。

#!/usr/bin/python

import urllib
import json

# API呼び出し
url = "http://api.atnd.org/events/?ym=201203&format=json"
result = urllib.urlopen(url)
result = json.loads(result.read())
count = result["results_returned"]

# 件数取得
num = result["results_available"]
print "検索結果:" + str(result["results_available"]) + "件"

# イベントの表示
for event in result["events"]:
    print event["title"] + " : " + event["event_url"] + " : " + event["address"]

# 残りのイベントの取得処理
while count < num:
    url = "http://api.atnd.org/events/?ym=201203&format=json&start=" + str(count + 1)
    result = urllib.urlopen(url)
    result = json.loads(result.read())
    count = count + result["results_returned"]
    for event in result["events"]:
        print event["title"] + " : " + event["event_url"]

2012年2月26日日曜日

自然言語処理勉強会(#tokyonlp)メモ


日時
2012年2月25日 13:00~18:30頃


Jubatusの紹介
※「ユバタス」と読むらしい

  • データはこれからも増え、データの種類も多様化する(テキスト・行動記録・音声など)
  • Jubatusは分散かつオンラインの機械学習基盤を提供
    • 高速処理、大規模、より深い分析
  • hadoop+mahoutではリアルタイム性が難しいし、オンライン学習ライブラリでは並列分散化が大変。ストリーム処理基盤では分散機械学習が難しい。
    • Jubatusはこれらすべてを持ち合わせる。
  • 活用例
    • 全国に散らばったセンサーからデータ収集・分析・予測をし、それぞれが自律して学習し、モデル情報だけを交換
    • イメージとしては、個別に自習をし、たまに勉強会で情報交換する、という感じ。
  • 3つの処理フェーズ
    • UPDATE(学習)
    • ANALYZE(分析)
    • MIX(モデルを混ぜ合わせる)
  • レコメンド:近傍探索アルゴリズム
    • キーワード:コサイン類似度、Jaccard係数
    • アルゴリズム
      • 転置インデックス コサイン類似度
      • Locality Sensitive Hashing(LSH)
      • minhash
      • アンカーグラフ

count-min sketch

  • キーを持たないハッシュ表を組み合わせたもの。ハッシュ表をいくつか持つ。
  • メモリ使用量を少なくできる。(データの数によらず一定)
  • ただし、width, depthが小さいとシノニムが頻発し精度が悪くなる。
  • 精度を上げる工夫
    • Conservative Update
    • Lossy Conservative Update
    • approximate counting
  • ライブラリ madoka

日本語入力を支える技術

  • 執筆作業はしんどかった。
  • 機械学習について初心者向けの解説書がなかったので、そういうものを書きたかった。
  • データ構造に力を入れすぎたのが反省。
  • ツールの活用が重要。git, docdiff

MCMCの初歩

  • MCMC:複雑な確率分布からサンプリングするためのツール
  • 確率とは:出来事に対して与える0~1の確信度
  • サンプリングとは: ある確率分布にしたがうデータを生成すること。
  • なぜMCMCは便利か?
    • 高次元のデータから効率的にサンプリングできる。
    • ベイズの定理と組み合わせることでパラメーターをサンプリングできる。

transliteration入門

  • transliteration=名前、固有名詞の(音的な)翻訳
    • L2P(Letter-to-Phoneme)や発音推定(漢字が与えられたときに読み方を推定する)に類似
    • たとえば、英語人名のHarringtonから日本語の「ハリントン」を導出
  • 2つの種類
    • transliteration mining
      • sourceとtargetのペアが入っているが、ノイズが入っている。
    • transliteration generation
      • トレーニングに含まれないsourceの文字が与えられた場合に、targetの文字に変換する。

2011年11月27日日曜日

sendmailの発信元を仮想IPとする方法(2)

前回の方法では、サービスを通して送信されるメールの送信元は仮想IPに切り替えられるが、
コマンドを直接実行する場合には、この設定が効かないのか、切り替わらない。
コマンドを使う場合は、"-f"オプションを使用する。

(例)
cat mail.txt | sendmail -i -t -f192.168.0.1

2011年11月21日月曜日

sendmailの発信元を仮想IPとする方法

HA構成でメールの発信元を同じにしたい場合など、実IPではないIPアドレスをメール発信元を設定するには、sendmail.mcに次の記述を追加する。


CLIENT_OPTIONS(`Family=inet, Addr=192.168.0.1')dnl

参考:http://his.luky.org/ML/linux-users.a/msg06640.html


2011年10月26日水曜日

VMWare Playerのゲストがネットワークにつながらないときの対処

こちらの記事にしたがって設定変更すればOK。
VMware Playerのネットワークが繋がらない時の対処法

ただし、VMWare Playerをインストールした状態だと、設定ツールがないので、こちらにしたがってインストールプログラムから抽出する。
VMWare Player 3.0 で、vmnetcfg.exeを使う

2011年10月8日土曜日

Pro*Cプログラムビルドエラー対応

Pro*Cで書かれたプログラムをリンクする際に、
sqlca が「未定義のシンボル」になっていてリンクに失敗する場合、
インクルードディレクトリに ${ORACLE_HOME}/precomp/public を追加した上で、
#include "sqlca.h"
を追加してあげるとエラーが解消される。

2011年9月19日月曜日

Amazon EC2 インスタンス作成

【事前準備】 X.509の証明書を作成する。

1.AWSのホームから、「アカウント」→「セキュリティ証明書」を選択する。





2.セキュリティ証明書のページからX.509の証明書を新規作成する。










【インスタンス作成】

1.Amazonマネージメントコンソールを開き、"Amazon Elastic Compute Cloud (EC2)"のサービスを選択する。"EC2 Console Dashboard"の左上にある"Launch Instance"をクリックする。




2.ポップアップ画面が開く。マシンのイメージ(AMI)の選択を求められるので、希望のイメージを選び、"Select"をクリックする。









※"Community AMIs"タブをクリックすると、コミュニティなどが作ったと思われるAMIを選択できる。バリエーションが豊富。今回は、Community AMIs から、CentOS 5.6を選択する。







3.インスタンスの種類を選択する。AMIによって選べる種類が変わると思われる。ここでは"Large"を選択する。











4.インスタンスのオプションを指定するようだが、ここでは何もせずにそのまま次に進む。











5.インスタンスにタグを付けられるようだが、何もせずに次に進む。











6. キーペアを作成する。適当な名前を入力し、"Create & Download your Key Pair"をクリックしてキーをダウンロードする。










7. セキュリティグループを選択する。自分でセキュリティグループを作成していない場合は、defaultを選択する。










8. 確認画面。"Launch"をクリックする。












9.完了。マネージメントコンソールに戻ると、インスタンスが表示されている。(すでに起動している)