Mozilla Ubiquity の国際化と次世代パーサ

37
mitcho アーリーワイン・マイケル芳貴 @ 11Mozilla拡張機能勉強会 東京 2009/03/29

description

Mozilla Labs のウェブを言葉でつなげる実験的プロジェクト ubiquity を紹介。国際化、最新パーサデザインについて発表。 第11回Mozilla拡張機能勉強会 2009年3月29日 東京

Transcript of Mozilla Ubiquity の国際化と次世代パーサ

Page 1: Mozilla Ubiquity の国際化と次世代パーサ

mitchoアーリーワイン・マイケル芳貴

@ 第11回Mozilla拡張機能勉強会

東京 2009/03/29

Page 2: Mozilla Ubiquity の国際化と次世代パーサ

ubiquity

Page 3: Mozilla Ubiquity の国際化と次世代パーサ

目的:

方法:

Page 4: Mozilla Ubiquity の国際化と次世代パーサ

目的:ウェブをより有益に、より使いやすく

方法:

Page 5: Mozilla Ubiquity の国際化と次世代パーサ

目的:ウェブをより有益に、より使いやすく

方法:

言葉を使った自然なインターフェース

Page 6: Mozilla Ubiquity の国際化と次世代パーサ

ちなみに...

ubiquity = 遍在

Page 7: Mozilla Ubiquity の国際化と次世代パーサ

デモ

Page 8: Mozilla Ubiquity の国際化と次世代パーサ

ubiquity

Page 9: Mozilla Ubiquity の国際化と次世代パーサ

Mozilla Labsの実験的プロジェクトのひとつ2008年8月にアルファ公開

目的: ウェブをより有益に、より使いやすく方法: 言葉を使った自然なインターフェース先例: Enso, QuickSilver, GNOME Do等ロゴ: かわいいロボット「ubiquibot」http://ubiquity.mozilla.comhttps://wiki.mozilla.org/Labs/Ubiquity/

ubiquity

Page 10: Mozilla Ubiquity の国際化と次世代パーサ

今日の流れ• ubiquity 紹介、デモ

• ubiquityのアーキテクチャ

• 国際化のプロセス• 最新パーサのデザイン• (日本語版への提案)

Page 11: Mozilla Ubiquity の国際化と次世代パーサ

アーキテクチャ

• アプリレベル• 有効な動詞(コマンド)のソース

• LINK REL auto discovery

• 各コマンドのサンドボックス

Page 12: Mozilla Ubiquity の国際化と次世代パーサ

• 各ウインドウ• インプットUI (+ スキン)

• パーサ• コマンド・マネージャ

アーキテクチャ

Page 13: Mozilla Ubiquity の国際化と次世代パーサ

• 動詞の作成• 動詞はJavaScript (pythonも可)

• コマンド・エディタを使用• いたって簡単

アーキテクチャ

Page 14: Mozilla Ubiquity の国際化と次世代パーサ

• 新しい動詞の共有・発見・導入• フィードとして配信• githubでシェアする

• <link rel=’commands’/>

• herd (=群れ): 公開コマンドのライブラリ

アーキテクチャ

Page 15: Mozilla Ubiquity の国際化と次世代パーサ

• 0.1.7の新機能: Locked Down Feeds (=監禁されたコマンド)

• セキュリティーの為• 制限されたサンドボックスで実行

• ネットワーク権限が無い• 引数のセレクタは正規表現

例: replaceアーキテクチャ

Page 17: Mozilla Ubiquity の国際化と次世代パーサ

ubiquityの国際化• natural syntax (=自然な構文)

• 自然言語のルールと矛盾しないように

• でももちろん限られた構文を対象

• AppleScriptみたいにならないように...

Page 18: Mozilla Ubiquity の国際化と次世代パーサ

ubiquityの国際化

• 例: 一つがOKで一つがダメなのはおかしい!

• ジョノにボールを渡す• ボールをジョノに渡す

Page 19: Mozilla Ubiquity の国際化と次世代パーサ

ubiquityの国際化

• 例: 一つがOKで一つがダメなのはおかしい!

• ジョノにボールを渡す• ジョノにボールを渡して• ジョノにボールを渡せ• s/渡/わた/

Page 20: Mozilla Ubiquity の国際化と次世代パーサ

ubiquityの国際化

• パーサを別々に書くのは面倒• Principles and Parameters 

(=原理とパラメータ) 方式

• 汎用パーサ+各言語の設定

Page 21: Mozilla Ubiquity の国際化と次世代パーサ

ubiquityの国際化• 文字列の翻訳は比較的簡単

• よくubiquityで使う入力の対訳 を集める (=command bank)

• コマンドバンクを元にパーサを生成できたらいいな?

• http://mitcho.com/blog/projects/ubiquity-i18n-questions-to-ask/

原文例:

Page 22: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザイン

• Parser: The Next Generation

• https://wiki.mozilla.org/User:Mitcho/ParserTNG

• デモ: http://mitcho.com/code/ubiquity/parser-demo/

Page 23: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザイン• 新パーサの利点

• 目的語ベースのコマンド候補• 動詞が無くても適切な候補を提示• 文末動詞言語のサポート

• コマンドの(半)自動国際化

• Jono の Overlord Verbs 案のサポート

Page 24: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザイン

Page 25: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 1: 単語を区切る(分かち書きにする)

• 英語はそのまま 例: add lunch with Dan to my calendar

• 格助詞がある言語ではここで格助詞も切り離す 例: カレンダー に ダン と の ランチ を 追加する• 日本語の場合格助詞でないものを切り離す可能性もある 例: こん に ち は

Page 26: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 2: 動詞の候補を探す

正規表現を使用: (google|googl|goog|goo|...|add|ad|a)

入力例: add lunch with Dan to my calendar

例: {V: add, args: “lunch with Dan to my calendar”},

{V: null, args: “add lunch with Dan to my calendar”}

Page 27: Mozilla Ubiquity の国際化と次世代パーサ

接語 (=clitic): ロマンス系言語等の人称代名詞

例: Envoyez le lettre à Pierre!

送れ 手紙 ピエールにEnvoyez-le à Pierre!Envoyez-lui le lettre!Envoyez-le-lui!

最新パーサのデザインstep 3: 動詞の接語を探す

Page 28: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.1 区切り符号(英語の場合前置詞)になるものを探す

例: {V: add, args: “lunch with Dan to my calendar”}

lunch with Dan to my calendar lunch with Dan to my calendar lunch with Dan to my calendar lunch with Dan to my calendar

Page 29: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.2 ある方向(英語の場合左から右)に引数を選ぶ例: lunch with Dan to my calendar

lunch with Dan to my calendar

lunch with Dan to my calendar

lunch with Dan to my calendar

lunch with Dan to my calendar...

Page 30: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.3 候補パースとして保存 引数は役割で振り分ける例: lunch with Dan to my calendar

{verb: ‘add’

args: { object: [‘lunch with Dan’, ‘calendar’],

goal: ‘my calendar’ } }

Page 31: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.1 区切り符号(日本語の場合助詞)になるものを探す例: args: “カレンダー に ダン と の ランチ を”

カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を

...

Page 32: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.2 ある方向(日本語の場合右から左)に引数を選ぶ例: カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を

...

Page 33: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 4: 引数のパースの組み合わせを作る

4.3 候補パースとして保存 引数は役割で振り分ける例: カレンダー に ダン と の ランチ を {verb: ‘add’

args: { object: [‘ダンとのランチ’],

goal: ‘カレンダー’ } }

Page 34: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 5: 引数のnoun typeを認知

各パースで引数に値する文字列のnoun typeを調べる例: ‘Dan’ → { contact: 1, arb: 0.7}

‘goog’ → { service: 1, arb: 0.7} ‘東京’ → { location: 1, arb: 0.7}

‘東京’という文字列の「場所」としての適切さ (=score)

Page 35: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザインstep 6: 各パースにスコアをつける

6.1 動詞が無いパースに動詞を当てはめてみる6.2 各パースのスコアを計算例: {verb: ‘add’

args: { object: [‘ダンとのランチ’],

goal: ‘カレンダー’ } }

add.args = { object: arb, goal: service}

score = P(‘ダンとのランチ’,’arb’) * P(‘カレンダー’,’service’) * ...

Page 36: Mozilla Ubiquity の国際化と次世代パーサ

最新パーサのデザイン

• Parser: The Next Generation

• https://wiki.mozilla.org/User:Mitcho/ParserTNG

• デモ: http://mitcho.com/code/ubiquity/parser-demo/

Page 37: Mozilla Ubiquity の国際化と次世代パーサ

mitchoアーリーワイン・マイケル芳貴

[email protected]

http://mitcho.com

http://twitter.com/mitchoyoshitaka