大学の研究で役に立ったもの(勉強編)
大学の研究で役に立ったもの(サービス編)
PythonでMongoDBを使うunittestのひな形
タイトルのとおりですが、ケースとしてはFlaskみたいな軽いフレームワークでMongoDBをデータベースに使うModelを自分で実装するような場合です。
実際にデータベースを動かすModelのテストを書くときに、FlaskはフルスタックのDjangoと違って何も面倒を見てくれないので、自分でテストのときだけ使用するdbの作成、破棄などを行う必要があります。
やりたいことは、
- テスト起動時にテスト用のdb('test')を作成
- テスト用のデータ(json)を予めdbに入れておく
- Modelクラスのメソッドをテスト
- テスト終了時にテスト用のdbの破棄
という流れです。mongodの起動と終了まで面倒を見てくれるともっと便利なはずですが、今回はそこまで求めなかったので、mongodは事前に起動しているという前提になります。 *1
*1:mongodまで面倒をみるなら、参考にあるブログや、test.mysqldが参考になりそうです
Webアプリに高機能な音声認識を追加するWeb Speech API
Microphone' by Juan_Alvaro, http://www.flickr.com/photos/31590610@N03/5408706936/ CC by 2.0
最近、にわかに音声認識というものが盛り上がっています。
スマートフォンに搭載されている、AppleのSiri、NTTドコモのしゃべってコンシェル、Googleの音声検索あたりが有名ですが、お掃除ロボやエアコン、カーナビといった家電にも音声認識機能が搭載されるようになってきました。
認識の精度や意識の問題(人前で機械に話しかけるのはちょっと恥ずかしい)などの課題はありますが、音声認識はアプリや家電のUIの一部としてこれから普及していくと思われます。
ですが、一般の開発者にとって音声認識機能を自分のアプリやウェブサイトに組み込むのはまだまだ難しいです。
Juliusのようなオープンソースの音声認識システムもありますが、一般の開発者が自前で音声認識サーバーを立てるのは敷居が高いと思います。
GoogleやAppleばっかりズルい!音声認識が自分のWebサイトやアプリに組み込めたら夢が広がるのになー
- Javascriptで数行で書けて、
- 自分でサーバー立てる必要もなくて、
- 認識精度もよくて、
- 無料で使える音声認識システム
がどこかに転がってないかなー。という夢を見るわけですが、なんと実はもう既にあるのです!
*デモ機能を試すには最新版のChromeでアクセスをお願いします
続きを読むテキストセグメンテーションの研究紹介
自分の研究に間接的に使うことになって、最近勉強したのでメモ
テキストセグメンテーションとは?
自然言語処理の一種で、ブログなどの色々なトピックがごちゃまぜに書かれている非構造な文書を、ニュースのようにトピックごとに分割する手法です。
例
こんな感じに、段落ごとにコロコロとトピックが変わる節操のないブログが記事があったとします。
旅行 旅行 スポーツ 仕事 スポーツ 旅行 旅行
テキストセグメンテーションはこのような非構造な文書を、トピックが変わったところで分割してくれます。
旅行 旅行 スポーツ 仕事 スポーツ 旅行 旅行
応用先
ではテキストセグメンテーションができると何がうれしいのか?
有望な応用先は、評判抽出、検索、要約といった他の自然言語処理の前処理に使用することです。自然言語処理の様々な手法は、1つ1つの文書に対して処理を行うように考えられていますが、あらかじめトピックごとに分割できていればより精度の高い処理ができるのです。
例えば、先ほどのブログがあらかじめトピックごとに分けられている場合、スポーツについて検索するとスポーツの段落をピンポイントに見つけることができるようになります。
個人的には、会議などの録音音声を音声認識してテキストに書き起こして、それをトピックごとに分割できると便利じゃないかと思っています。ほぼ大学での自分の研究なんですが。
実際にどのように使われているのかはNTT技術ジャーナルにも載っています。
続きを読む