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

Preview:

DESCRIPTION

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

Citation preview

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

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

東京 2009/03/29

ubiquity

目的:

方法:

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

方法:

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

方法:

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

ちなみに...

ubiquity = 遍在

デモ

ubiquity

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

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

ubiquity

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

• ubiquityのアーキテクチャ

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

アーキテクチャ

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

• LINK REL auto discovery

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

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

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

アーキテクチャ

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

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

アーキテクチャ

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

• <link rel=’commands’/>

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

アーキテクチャ

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

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

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

例: replaceアーキテクチャ

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

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

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

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

ubiquityの国際化

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

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

ubiquityの国際化

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

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

ubiquityの国際化

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

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

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

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

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

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

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

原文例:

最新パーサのデザイン

• Parser: The Next Generation

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

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

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

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

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

• Jono の Overlord Verbs 案のサポート

最新パーサのデザイン

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

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

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

最新パーサのデザイン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”}

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

例: Envoyez le lettre à Pierre!

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

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

最新パーサのデザイン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

最新パーサのデザイン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...

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

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

{verb: ‘add’

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

goal: ‘my calendar’ } }

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

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

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

...

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

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

...

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

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

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

goal: ‘カレンダー’ } }

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

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

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

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

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

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

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

goal: ‘カレンダー’ } }

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

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

最新パーサのデザイン

• Parser: The Next Generation

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

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

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

mitcho@mitcho.com

http://mitcho.com

http://twitter.com/mitchoyoshitaka

Recommended