Download - Mozilla Ubiquity の国際化と次世代パーサ
![Page 1: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/1.jpg)
mitchoアーリーワイン・マイケル芳貴
@ 第11回Mozilla拡張機能勉強会
東京 2009/03/29
![Page 2: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/2.jpg)
ubiquity
![Page 3: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/3.jpg)
目的:
方法:
![Page 4: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/4.jpg)
目的:ウェブをより有益に、より使いやすく
方法:
![Page 5: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/5.jpg)
目的:ウェブをより有益に、より使いやすく
方法:
言葉を使った自然なインターフェース
![Page 6: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/6.jpg)
ちなみに...
ubiquity = 遍在
![Page 7: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/7.jpg)
デモ
![Page 8: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/8.jpg)
ubiquity
![Page 9: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/9.jpg)
Mozilla Labsの実験的プロジェクトのひとつ2008年8月にアルファ公開
目的: ウェブをより有益に、より使いやすく方法: 言葉を使った自然なインターフェース先例: Enso, QuickSilver, GNOME Do等ロゴ: かわいいロボット「ubiquibot」http://ubiquity.mozilla.comhttps://wiki.mozilla.org/Labs/Ubiquity/
ubiquity
![Page 10: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/10.jpg)
今日の流れ• ubiquity 紹介、デモ
• ubiquityのアーキテクチャ
• 国際化のプロセス• 最新パーサのデザイン• (日本語版への提案)
![Page 11: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/11.jpg)
アーキテクチャ
• アプリレベル• 有効な動詞(コマンド)のソース
• LINK REL auto discovery
• 各コマンドのサンドボックス
![Page 12: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/12.jpg)
• 各ウインドウ• インプットUI (+ スキン)
• パーサ• コマンド・マネージャ
アーキテクチャ
![Page 13: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/13.jpg)
• 動詞の作成• 動詞はJavaScript (pythonも可)
• コマンド・エディタを使用• いたって簡単
アーキテクチャ
![Page 14: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/14.jpg)
• 新しい動詞の共有・発見・導入• フィードとして配信• githubでシェアする
• <link rel=’commands’/>
• herd (=群れ): 公開コマンドのライブラリ
アーキテクチャ
![Page 15: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/15.jpg)
• 0.1.7の新機能: Locked Down Feeds (=監禁されたコマンド)
• セキュリティーの為• 制限されたサンドボックスで実行
• ネットワーク権限が無い• 引数のセレクタは正規表現
例: replaceアーキテクチャ
![Page 16: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/16.jpg)
ubiquityの国際化
• この革命を世界に!• ubiquity i18nグループ設立
• https://wiki.mozilla.org/Labs/Ubiquity/i18n
• http://groups.google.com/group/ubiquity-i18n
![Page 17: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/17.jpg)
ubiquityの国際化• natural syntax (=自然な構文)
• 自然言語のルールと矛盾しないように
• でももちろん限られた構文を対象
• AppleScriptみたいにならないように...
![Page 18: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/18.jpg)
ubiquityの国際化
• 例: 一つがOKで一つがダメなのはおかしい!
• ジョノにボールを渡す• ボールをジョノに渡す
![Page 19: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/19.jpg)
ubiquityの国際化
• 例: 一つがOKで一つがダメなのはおかしい!
• ジョノにボールを渡す• ジョノにボールを渡して• ジョノにボールを渡せ• s/渡/わた/
![Page 20: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/20.jpg)
ubiquityの国際化
• パーサを別々に書くのは面倒• Principles and Parameters
(=原理とパラメータ) 方式
• 汎用パーサ+各言語の設定
![Page 21: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/21.jpg)
ubiquityの国際化• 文字列の翻訳は比較的簡単
• よくubiquityで使う入力の対訳 を集める (=command bank)
• コマンドバンクを元にパーサを生成できたらいいな?
• http://mitcho.com/blog/projects/ubiquity-i18n-questions-to-ask/
原文例:
![Page 22: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/22.jpg)
最新パーサのデザイン
• Parser: The Next Generation
• https://wiki.mozilla.org/User:Mitcho/ParserTNG
• デモ: http://mitcho.com/code/ubiquity/parser-demo/
![Page 23: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/23.jpg)
最新パーサのデザイン• 新パーサの利点
• 目的語ベースのコマンド候補• 動詞が無くても適切な候補を提示• 文末動詞言語のサポート
• コマンドの(半)自動国際化
• Jono の Overlord Verbs 案のサポート
![Page 24: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/24.jpg)
最新パーサのデザイン
![Page 25: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/25.jpg)
最新パーサのデザインstep 1: 単語を区切る(分かち書きにする)
• 英語はそのまま 例: add lunch with Dan to my calendar
• 格助詞がある言語ではここで格助詞も切り離す 例: カレンダー に ダン と の ランチ を 追加する• 日本語の場合格助詞でないものを切り離す可能性もある 例: こん に ち は
![Page 26: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/26.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/27.jpg)
接語 (=clitic): ロマンス系言語等の人称代名詞
例: Envoyez le lettre à Pierre!
送れ 手紙 ピエールにEnvoyez-le à Pierre!Envoyez-lui le lettre!Envoyez-le-lui!
最新パーサのデザインstep 3: 動詞の接語を探す
![Page 28: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/28.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/29.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/30.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/31.jpg)
最新パーサのデザインstep 4: 引数のパースの組み合わせを作る
4.1 区切り符号(日本語の場合助詞)になるものを探す例: args: “カレンダー に ダン と の ランチ を”
カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を
...
![Page 32: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/32.jpg)
最新パーサのデザインstep 4: 引数のパースの組み合わせを作る
4.2 ある方向(日本語の場合右から左)に引数を選ぶ例: カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を カレンダー に ダン と の ランチ を
...
![Page 33: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/33.jpg)
最新パーサのデザインstep 4: 引数のパースの組み合わせを作る
4.3 候補パースとして保存 引数は役割で振り分ける例: カレンダー に ダン と の ランチ を {verb: ‘add’
args: { object: [‘ダンとのランチ’],
goal: ‘カレンダー’ } }
![Page 34: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/34.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/35.jpg)
最新パーサのデザイン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 の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/36.jpg)
最新パーサのデザイン
• Parser: The Next Generation
• https://wiki.mozilla.org/User:Mitcho/ParserTNG
• デモ: http://mitcho.com/code/ubiquity/parser-demo/
![Page 37: Mozilla Ubiquity の国際化と次世代パーサ](https://reader033.vdocuments.mx/reader033/viewer/2022052906/558e2a721a28ab27048b461e/html5/thumbnails/37.jpg)
mitchoアーリーワイン・マイケル芳貴
http://mitcho.com
http://twitter.com/mitchoyoshitaka