英和辞書/和英辞書プログラム

https://github.com/laysakura/jisho
コマンドライン上で引ける英和辞書/和英辞書プログラムを見つけた。
ブラウザを介さないので、ネットサーフィンで時間を無駄にするのを回避できるかもしれない!
でも、仕様上ネットワークと接続している必要があるので、このままだとオフライン時には使えない。


https://bitbucket.org/gologo13/jisho
そこで、今回これをオンライン時に検索した単語ならオフライン時でも検索できるように改良してみた。
仕組みは単純で、検索結果をローカルのファイルに保存するだけ。
まぁでも正直なところ、このプログラムのヘビーユーザーがいて1日100回使っても、膨大な英単語をカバーできるわけないし、いざという時に使えない可能性大だし、携帯があるならそれで調べればいいと思う。


でも、検索したときに取れたデータは別のことに活用できると思う。
例えば、英単語クイズプログラム。
何度も意味を調べてる単語がある->苦手->重点的にクイズの問題に出題する、とか何かに使えるはず。
それに、使っていくうちに勝手にデータが取れるので、得した気分になれる。



追記:2011/04/06
現在 Perl で書きなおしてます。さらに、もっと実用的な使い方も提案できるかと思いますので、乞うご期待。

vimtutor

vimtutor を最後までやってみて、新しく覚えたことをメモ。

  • U: 行全体の取り消し
  • e: 空白も含めた単語の範囲。wよりも広い単位
  • r: カーソルにある文字を置換する
  • cw: カーソル位置から単語の一部、もしくは全体を変更する
  • c$: カーソル位置から行の最後までを変更する
    • 削除+挿入よりも置換の方が効率がいいから、ちゃんと覚えよう。
  • C-o, C-I: 検索のとき元の位置に戻る
  • %: 対応するカッコに移動する
  • vモーション+w FILE: 選択領域を他のファイルへの書き込み
  • :r ファイル名: ファイル名の中身を挿入する
  • O: カーソルの上の行に挿入する
  • R: カーソル位置からESCを押すまで、文字を置換する
  • yw, ye, y$: カーソル位置からそのオペレータの領域だけコピーする
    • これだといちいち領域を選択しないでいい。使いこなすと効率良さそう。
  • C-w C-w: ウィンドウを移動
  • help: ヘルプを見る。タブで補完も効くし使えそう
  • C-D: TABで補完する場合と違って、補完できる候補をリストアップする

Mercurial

最近気になってたMercurialについて調べてみた.

Mercurialとは

Mercurial SCM
分散ソースコード管理ツール複数人で別々に開発するときにソースコードを管理するためのツール.とは言うものの,1人で開発するときでもかなり使える.

基本的な用語

まずソースコード管理ツールでよく使われている用語を知る必要がある.

  • リポジトリ(repository)
  • チェックアウト(checkout)
  • チェックイン(checkin)
  • トランク(trunk)
    • メインの開発用リポジトリ
    • トランクにチェックインするときは細心の注意を要する
    • マスターブランチとも言う
  • ブランチ(branch)
    • リポジトリを分岐させること
    • 実験的な変更を加えたい時などにブランチを作成する
    • ブランチを作成することをブランチを切るという
    • ローカルリポジトリとも言う
  • ヘッド(head)
    • 最新のコミット
    • mercurialではtipと言う

導入

詳しくは書かない代わりに良記事へのリンクを貼っておく.適宜参照されたい.とりあえず上2つに目を通せば大体Mercurialについてわかると思う.下2つはSCMの背景についても触れてあるので,読むと理解が深まる.

サブコマンド

  • hg init
  • hg version
    • バージョンを表示
  • hg help
  • hg showconfig
  • hg status
  • hg log
    • コミットログとか表示
  • hg clone repoA repoB
    • repoAをrepoBに複製
  • hg clone ssh://hg@bitbucket.org/user_name/branch_name
  • hg add file
  • hg commit
    • -m STRING でメッセージ追加
  • hg push
    • コミットをリポジトリに反映させる
    • 「中止: 無関係なリポジトリです」とでて反映できなかったら, hg push -h とすれば解決する(場合がある)
  • hg pull repo
  • hg update
    • 作業領域を更新する
  • hg merge
  • hg revert
    • 前のバージョンに戻す
  • hg checkout
    • 前のバージョンを取り出す

他にも,hg diff, annotate, remove, incoming, outgoing, export, import, serveがある.

設定

  • 全体の設定 /etc/mercurial/hgrc
  • ユーザの設定 $HOME/.hgrc
  • リポジトリごとの設定 .hg/hgrc
  • 無視したいファイルの設定 .hgignore に書く

とりあえず $HOME/.hgrc は次のようにしてる.

[ui]
username = xxxxxxxxx < yyyyyyyy@zzzzzzzzz >
merge = internal:merge
ssh = ssh -C

[web]
allow_push = *

SOX

音声波形を加工したい.そのために,soxコマンドというものがある.その使い方のメモ.

音声をステレオ(2ch)からモノラル(1ch)に変換
sox -c 2 stere.wav -c 1 monaural.wav
音声ファイルのサンプリング周波数を変換する

この例だとサンプリング周波数が48kHzの音声を16kHzに変換したことになる

sox -r 48k src.wav -r 16k dst.wav resample -ql

参考

音響モデル

音響特徴量を抽出したり,音響モデルを作ったりするのに使う.
適当ですいません,そのうち整理します..

「平べったい説明しかできない」から始まる「言語技術」の話

私も平べったい説明しかできない学生の1人だが,マジで何とかしたい.気になった発言をちょっとだけメモる.興味ある人は絶対↑のtogetterを読んだほうがいいです.

  • 物事を構造化して説明できないんです。過去から未来、抽象から具体、概略から詳細、全体の列挙から個別の詳細説明というように、聞き手が理解しやすいように説明しないのです。何もかも思いついたままべたっと説明するのです。
  • 自分が行ったこと、他人が行ったこと、事実と推測、自分がやりたいことと現在の状況、これらを順番をつけずにおもいついたままに説明されると悶絶する。
  • 確かに全く整理せずに思い付きで垂れ流すように話す学生さんが多いですね。
  • 説明が平べったい学生は、自分が実際に行ったことを時系列に沿ってしか説明できない印象がある。3段階ぐらい詳細度を変えて自分の行っていることを説明できるようになって欲しい。WhyとWhat(大雑把)、WhyとWhat(詳細)、WhyとWhatとHowの三段階。
  • 常にHowをしかも、自分がやった手順でしか説明できないのはどうにかして欲しい。もちろん、実験に失敗したときや、コンピューターでトラブルが起こったときなどは、自分が行ったことを行った順に委細漏らさず説明して欲しいけど。
  • レベル1:Howを自分のやった手順で説明できる。レベル2:Howを相手にわかりやすい順序で説明できる。レベル3:Whatを自分のやった手順で説明し、その後、Howを説明できる。レベル4:Whatを理解しやすい順番で提示し、その後、要望に応じてHowを説明できる。
  • 承前) レベル5:各WhatにつきWhy(なぜそれを行う必要があるのか)を説明でき、要望に応じてHowを説明できる。レベル6:話のゴールや全体像を先に説明し、What、Why、Howを適宜、相手が欲する詳細度で説明できる。
  • 研究者にならない学生にとって、卒業研究や修士研究を通して学ぶ力は、文書作成や発表技術などのメタ研究技術が一つ目。正解のない事柄に対してどう対処するのかを経験してみるのが二つ目です。ですから、その認識は全く正しいと思います。
  • 私が危惧するのは言語技術を先天的才能であると諦めてしまう人が結構いるということです。むしろ、あれは技術であり、訓練すればある程度のところまでは誰でも身につけることができるという認識が広まった方が良いと思っています。
  • 日本語が読み書きできるからといって、他人に物事を文章や言葉でわかりやすく説明できるかどうかは全く別の話。しかも、これは使用している言語に非依存。日本語でまともな説明できない人は、英語話せるようになってもまともな説明できない。

で,こういうのを体系的に学ぶにはどうすればいいんだ.

speech

IEEE Xplore Abstract - Automatic lecture transcription by exploiting presentation slide information for language model adap...

  • 講義音声認識
  • 講義全体のトピックを適応させたPLSAモデル*1(グローバルに適応)
  • 各スライドの内容語に適応させたキャッシュモデル(ローカルに適応)
  • PLSAとキャッシュモデルの線形補完した言語モデルを用いると単語正解精度が向上
  • この方法はリアルタイムで認識OK

*1:トピックモデルで思い出したけど,LDAとかそこらへんも勉強したい