(57)【要約】【課題】利便性の向上を図ることができる編集装置、方法、及びプログラムを提供する。【解決手段】実施形態に係る編集装置は、受付部と制御部とを備える。受付部は、入力データを受け付ける。制御部は、入力データから、操作可能な１又は複数の対象オブジェクトを生成し、画面を介して受け付けた操作に従って、操作時に指定された対象オブジェクトの編集処理を行い、編集結果オブジェクトを生成する。【選択図】図１
2014202832.tif 000002
【特許請求の範囲】
【請求項１】
入力データを受け付ける受付部と、
前記入力データから、操作可能な１又は複数の対象オブジェクトを生成し、画面を介して受け付けた操作に従って、操作時に指定された前記対象オブジェクトの編集処理を行い、編集結果オブジェクトを生成する制御部と、
を備える編集装置。
【請求項２】
前記制御部は、
２つの前記対象オブジェクトを連結する連結部を、備え、
前記画面上の操作点が１つであり、操作イベントの発生位置が、前記操作点で指定された第１対象オブジェクト以外の第２対象オブジェクト上であった場合、前記連結部により、前記第１対象オブジェクトを前記第２対象オブジェクトに連結し、前記編集結果オブジェクトに相当する連結オブジェクトを生成する、
請求項１に記載の編集装置。
【請求項３】
前記制御部は、
２つ以上の前記対象オブジェクトを結合する結合部を、備え、
前記画面上の操作点が２つ以上であり、２つ以上の前記操作点で、同一の前記対象オブジェクトが指定されていない場合、前記結合部により、前記操作点で指定された複数の前記対象オブジェクトを結合し、前記編集結果オブジェクトに相当する結合オブジェクトを生成する、
請求項１に記載の編集装置。
【請求項４】
前記制御部は、
１つの前記対象オブジェクトを複数個に分離する分離部を、備え、
前記画面上の操作点が２つ以上であり、前記操作点で、同一の前記対象オブジェクトが指定されている場合、前記分離部により、前記操作点で指定された前記対象オブジェクトを複数個に分離し、前記編集結果オブジェクトに相当する複数の分離オブジェクトを生成する、
請求項１に記載の編集装置。
【請求項５】
前記制御部は、
操作イベントの発生位置が前記対象オブジェクト上か否かの判定結果に基づき、前記入力データから生成した複数の前記対象オブジェクトの中から、前記操作点で指定された前記対象オブジェクトを抽出する、
請求項１に記載の編集装置。
【請求項６】
前記対象オブジェクトに対応づけられた文字列に対して、所定の言語処理を行う言語処理部を、さらに備え、
前記言語処理部は、
前記制御部により生成した前記編集結果オブジェクトに対応づけられた文字列を、所定の単位で解析し、解析結果に基づき、誤った箇所を修正し、修正文を生成する、
請求項１に記載の編集装置。
【請求項７】
前記連結部は、
前記画面上の操作点が１つであり、操作イベントの発生位置が、前記操作点で指定された前記第１対象オブジェクト以外の前記第２対象オブジェクトに対応づけられた文字列上であった場合、前記操作イベントの発生位置に最も近い境界で、前記第２対象オブジェクトに対応づけられた文字列を分離し、分離した複数の文字又は文字列の間に、挿入する前記第１対象オブジェクトに対応づけられた文字列を連結し、前記連結オブジェクトを生成する、
請求項２に記載の編集装置。
【請求項８】
前記結合部は、
前記操作点で指定された複数の前記対象オブジェクトの中心点から、複数の前記対象オブジェクトの重心を求め、前記重心と複数の前記対象オブジェクトとの距離の最大値が閾値以上の場合、前記操作点で指定された複数の前記対象オブジェクトを結合し、前記結合オブジェクトを生成する、
請求項３に記載の編集装置。
【請求項９】
前記結合部は、
前記操作点で指定された複数の前記対象オブジェクトの中心点の座標に基づき、複数の前記対象オブジェクトを前記座標の昇順に並び替え、並び替えた複数の前記対象オブジェクトを結合し、前記結合オブジェクトを生成する、
請求項３に記載の編集装置。
【請求項１０】
前記分離部は、
前記操作点により指定された前記対象オブジェクトに対応づけられた文字列を、前記言語処理部により所定の単位で分離し、分離した複数の文字又は文字列を得て、前記操作点の位置から前記対象オブジェクトの分離位置を決定し、前記分離位置に従って、複数の前記文字又は前記文字列を結合することで、前記分離オブジェクトを生成し、生成した前記分離オブジェクトと前記操作点とを対応づける、
請求項４に記載の編集装置。
【請求項１１】
前記制御部は、
前記対象オブジェクトの連結方向又は結合方向を判別し、判別結果に基づき、予め定義されている所定の規則に従って、前記対象オブジェクトの連結順又は結合順を決定し、決定した前記連結順又は結合順に、前記対象オブジェクトに対応づけられた文字列を連結又は結合する、
請求項１に記載の編集装置。
【請求項１２】
前記制御部は、
前記対象オブジェクトに対応づけられた文字列の表記方向に従って、前記対象オブジェクトの連結順を決定し、決定した前記連結順に、前記対象オブジェクトに対応づけられた文字列を連結する、
請求項１に記載の編集装置。
【請求項１３】
前記制御部は、
前記対象オブジェクトを生成し、生成した前記対象オブジェクトと同期して処理されるオブジェクトを生成する、
請求項１に記載の編集装置。
【請求項１４】
前記対象オブジェクト又は前記編集結果オブジェクトを表示し、前記操作を受け付ける表示部を、さらに備える、
請求項１に記載の編集装置。
【請求項１５】
入力データを受け付ける受付工程と、
前記入力データから、操作可能な１又は複数の対象オブジェクトを生成し、画面を介して受け付けた操作に従って、操作時に指定された前記対象オブジェクトの編集処理を行い、編集結果オブジェクトを生成する制御工程と、
を含む編集方法。
【請求項１６】
コンピュータを、
入力データを受け付ける手段と、
前記入力データから、操作可能な１又は複数の対象オブジェクトを生成し、画面を介して受け付けた操作に従って、操作時に指定された前記対象オブジェクトの編集処理を行い、編集結果オブジェクトを生成する手段、
として機能させる編集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、編集装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
近年では、情報端末の小型化に伴い、音声入力を利用する場面が増えている。例えば、音声入力は、情報入力、情報検索、言語翻訳などの各種サービスで利用されている。しかし、音声入力には、誤認識の問題があり、従来から、誤認識を修正する方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−９０６２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法では、修正の操作が煩雑であり、利便性がよいものでない。
【課題を解決するための手段】
【０００５】
実施形態に係る編集装置は、受付部と制御部とを備える。受付部は、入力データを受け付ける。制御部は、入力データから、操作可能な１又は複数の対象オブジェクトを生成し、画面を介して受け付けた操作に従って、操作時に指定された対象オブジェクトの編集処理を行い、編集結果オブジェクトを生成する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る編集装置の機能構成例を示す図。
【図２】第１の実施形態に係るオブジェクトの表示例を示す図。
【図３】第１の実施形態に係るオブジェクトを連結する操作例を示す図。
【図４】第１の実施形態に係るオブジェクトを結合する操作例を示す図。
【図５】第１の実施形態に係るオブジェクトを分離する操作例を示す図。
【図６】第１の実施形態に係るタッチイベントのデータ例を示す図。
【図７】第１の実施形態に係る編集装置の処理手順例を示すフローチャート。
【図８】第１の実施形態に係るマルチタッチ検出ルーチンの処理手順例を示すフローチャート。
【図９】第１の実施形態に係る連結ルーチンの処理手順例を示すフローチャート。
【図１０】第１の実施形態に係る修正文を生成する処理手順例を示すフローチャート。
【図１１】第１の実施形態に係る形態素解析結果として出力されるラティスの概念図。
【図１２】第１の実施形態に係るラティスに対するパスの追加例を示す図。
【図１３】第１の実施形態に係る結合ルーチンの処理手順例を示すフローチャート。
【図１４】第１の実施形態に係る操作対象オブジェクト抽出ルーチンの処理手順例を示すフローチャート。
【図１５】第１の実施形態に係るタッチイベント処理ルーチンの処理手順例を示すフローチャート。
【図１６】第１の実施形態に係る結合オブジェクト生成ルーチンの処理手順例を示すフローチャート。
【図１７】第１の実施形態に係る分離ルーチンの処理手順例を示すフローチャート。
【図１８】第１の実施形態に係るオブジェクト分離ルーチンの処理手順例を示すフローチャート。
【図１９】第１の実施形態に係る分離領域の概念図。
【図２０】第１の実施形態に係るオブジェクトの分離例を示す図。
【図２１】変形例１に係る挿入・連結ルーチンの処理手順例を示すフローチャート。
【図２２】変形例２に係る２つのオブジェクトの連結順を決定する処理手順例（その１）を示すフローチャート。
【図２３】変形例２に係る２つのオブジェクトの連結順を決定する処理手順例（その２）を示すフローチャート。
【図２４】変形例２に係る３つのオブジェクトの結合順を決定する処理手順例を示すフローチャート。
【図２５】翻訳サービスの提供例を示す図。
【図２６】第２の実施形態に係る編集装置の機能構成例を示す図。
【図２７】第２の実施形態に係る編集装置の処理手順例を示すフローチャート。
【図２８】商品管理サービスの提供例を示す図。
【図２９】実施形態に係る編集装置の構成例を示す図。
【発明を実施するための形態】
【０００７】
以下に、添付図面を参照して、編集装置、方法、及びプログラムの実施形態を詳細に説明する。
【０００８】
［第１の実施形態］
＜概要＞
本実施形態に係る編集装置が有する機能（編集機能）について説明する。本実施形態に係る編集装置は、入力データから、編集時に操作可能な１又は複数のオブジェクト（操作対象オブジェクト）を生成する。本実施形態に係る編集装置は、生成したオブジェクトを表示し、オブジェクトの連結、結合、又は分離を指示するジェスチャー操作（直感的な編集操作）を受け付ける。本実施形態に係る編集装置は、受け付けた操作に従って、操作時に指定されたオブジェクトに対して、連結、結合、又は分離の編集処理を行い、編集結果に相当する新たなオブジェクト（編集結果オブジェクト）を生成する。その結果、本実施形態に係る編集装置は、生成した新たなオブジェクトを表示し、編集操作が反映された内容に編集画面を更新する。これにより、本実施形態に係る編集装置では、直感的な編集操作が可能となる。本実施形態に係る編集装置は、このような編集機能を有している。
【０００９】
従来の方法では、誤った箇所を何らかの手段で指定し、誤った箇所を消去して入力しなおすことで修正するものがある。また、従来の方法には、誤った箇所に対して代替候補を表示し、代替候補を選択することで修正するものもある。しかし、これらの方法では、修正時に何らかのキー操作が必要になり、近年、普及している小型の情報端末では、その操作は煩雑なものである。
【００１０】
例えばスマートフォンやタブレットなどの情報端末では、表示画面にタッチセンサを備え、人間の直感に即したジェスチャー操作が行える。このような情報端末では、誤った箇所の修正なども直感的な操作によって行え、編集が容易であることが望ましい。
【００１１】
そこで、本実施形態に係る編集装置は、入力データから、編集操作単位のオブジェクトを生成し、表示画面を介して受け付けたジェスチャー操作に従って、生成したオブジェクトの編集を行う仕組みとした。
【００１２】
その結果、本実施形態に係る編集装置では、入力データに対して直感的な操作を行うことができ、編集操作が容易となり、誤った箇所を修正するなどの編集作業の負担を軽減できる。これにより、本実施形態に係る編集装置は、ユーザ（例えば「編集者」）に対する利便性の向上を図ることができる。
【００１３】
以下に、本実施形態に係る編集装置が有する機能の構成とその動作について説明する。なお、以下の説明では、入力された音声の認識結果から生成されたテキスト文を編集する場面を例に説明を行う。
【００１４】
《構成》
図１は、本実施形態に係る編集装置１００の機能構成例を示す図である。図１に示すように、本実施形態に係る編集装置１００は、入力受付部１１、表示部１２、オブジェクト制御部１３、オブジェクト管理部１４、及び言語処理部１５などを有する。
【００１５】
入力受付部１１は、入力データを受け付ける。本実施形態に係る入力受付部１１は、音声の認識結果から、発話文を人間が可読可能なテキストを生成することで、入力データを受け付ける。そのため、入力受付部１１は、音声の入力を受け付ける音声入力部１１１と、入力された音声を認識し、認識結果からテキストを生成し、出力する音声認識部１１２などを有する。音声入力部１１１は、例えばマイクロフォンなどから音声信号を受け取り、デジタル化した音声データを出力する。音声認識部１１２は、出力された音声データを受け取り、音声認識により、例えば、文の区切りを検出し、検出した区切りごとの認識結果を得る。音声認識部１１２は、得た認識結果を出力する。これにより、入力受付部１１は、認識結果から生成したテキストを入力データとする。
【００１６】
表示部１２は、例えば、ディスプレイなどの表示画面に各種情報を表示する。また、表示部１２は、例えば、タッチセンサなどにより、画面上の操作（「操作点の接触状態」や「操作点の移動」など）を検出し、検出結果から操作指示を受け付ける。本実施形態に係る表示部１２は、編集時に操作可能な１又は複数のオブジェクトを表示し、オブジェクトの連結、結合、又は分離の各種編集操作を受け付ける。
【００１７】
オブジェクト制御部１３は、編集時に操作可能な１又は複数のオブジェクトに対する編集を制御する。オブジェクト制御部１３は、入力受付部１１で受け付けた入力データ（テキスト）に対して、編集時に操作可能な１又は複数のオブジェクト（編集可能な操作単位のオブジェクト）を生成する。オブジェクト制御部１３は、音声認識部１１２の１つの認識結果に対して、１つのオブジェクトを生成する。つまり、オブジェクト制御部１３は、認識結果ごとに、編集時の操作対象オブジェクトを生成する。その結果、生成されたオブジェクトは、表示部１２により編集画面に表示される。また、オブジェクト制御部１３は、生成したオブジェクトの連結、結合、又は分離の編集処理を行う。このときオブジェクト制御部１３は、表示部１２が受け付けた操作指示に従って、操作時に指定されたオブジェクトに対して、連結、結合、又は分離の編集処理を行い、新たなオブジェクトを生成する。そのため、オブジェクト制御部１３は、連結部１３１、結合部１３２、及び分離部１３３などを有する。連結部１３１は、２つのオブジェクトを連結し、新しいオブジェクト（連結オブジェクト）を生成する。また、結合部１３２は、２つ以上のオブジェクトを結合し、新しいオブジェクト（結合オブジェクト）を生成する。また、分離部１３３は、１つのオブジェクトを複数個に分離し、２つ以上のオブジェクト（分離オブジェクト）を生成する。つまり、オブジェクト制御部１３は、編集操作ごとに、編集結果オブジェクトを生成する。このようして生成された新たなオブジェクトは、表示部１２により画面に表示され、編集操作が反映された内容に編集画面が更新される。
【００１８】
ここで、オブジェクト制御部１３が生成するオブジェクトについて説明する。オブジェクトは、編集時の操作対象に相当し、認識結果の属性と認識結果を表示する表示領域の属性とを有するデータである。例えば、テキストが認識結果として出力される場合に生成されるオブジェクト（以下「オブジェクトＯ」という）は、文属性と形状属性との２つの属性を有する。この場合、文属性の値（以下「文Ｓ」という）は、テキスト（文字又は文字列）で表現される文（認識結果）となる。また、形状属性の値は、テキストが表示される表示領域の形状を表す画面上の座標となる。具体的には、画面左上隅を原点として、垂直方向下向きを正の方向とするｘ軸と、水平方向右向きを正の向きとするｙ軸との座標系で表現された２つの座標点Ｐ＝（ｘ１，ｙ１）及びＱ＝（ｘ２，ｙ２）；（ｘ１＜ｘ２，ｙ１＜ｙ２）の組［Ｐ，Ｑ］（以下「形状［Ｐ，Ｑ］」という）である。このような形状属性の２つの座標値からは、左上隅（ｘ１，ｙ１）、右上隅（ｘ１，ｙ２）、右下隅（ｘ２，ｙ２）、左下隅（ｘ２，ｙ１）を各頂点とする矩形が一意に定まる。よって、［Ｐ，Ｑ］は、オブクジェクトＯの領域（オブジェクト領域）が矩形に相当することを表している。なお、以下の説明では、文Ｓと形状［Ｐ，Ｑ］との各属性の値を有するオブジェクトＯを｛Ｓ，［Ｐ，Ｑ］｝と表す。また、座標点ＰとＱとの中点（＝（Ｐ＋Ｑ）／２）を、オブジェクトＯの中心点、又は、オブジェクトＯの座標という。また、オブジェクトＯが、認識結果を文Ｓとして有する場合には、「オブジェクトＯに対応づけられた文Ｓ」又は「文Ｓに対応づけられたオブジェクトＯ」と表現する。
【００１９】
オブジェクトＯの形状属性［Ｐ，Ｑ］は、次のように決定される。図２は、本実施形態に係るオブジェクトＯの表示例を示す図である。図２には、認識結果に相当する３つの文Ａ、Ｂ、Ｃが対応づけられた各オブジェクトＯの表示例が示されている。この場合、全ての文字は、同じ幅ｗ、同じ高さｈであるとし、オブジェクトＯに対応づけられた文Ｓが、n文字の文字列からなるとする。
【００２０】
このとき、座標点Ｑは、以下（式１）と（式２）とで表現（算出）できる。
Ｑのｘ座標  ＝  座標点Ｐのｘ座標＋幅ｗ×文字数ｎ  ・・・  （式１）
Ｑのｙ座標  ＝  座標点Ｐのｙ座標＋高さｈ  ・・・  （式２）
【００２１】
一方、座標点Ｐは、これまでＮ個のオブジェクトＯが表示されているとすると、以下（式３）と（式４）で表現（算出）できる。
Ｐのｘ座標  ＝  画面の左端からの距離ｗｓ  ・・・  （式３）
Ｐのｙ座標  ＝  オブジェクトＯの個数Ｎ×高さｈ＋オブジェクトＯの個数Ｎ×オブジェクトＯ間の間隔ｈｓ  ・・・  （式４）
【００２２】
このように、オブジェクト制御部１３が生成したオブジェクトＯは、画面の左端から所定の距離ｗｓ及び所定の間隔ｈｓをあけて、左から右に、順次表示される。その結果、認識結果に相当する文Ｓは、オブジェクトＯの矩形［Ｐ，Ｑ］内部に横書きで表示される。
【００２３】
なお、画面幅は有限である。そのため、上記のような座標決定では、文Ｓの文字数ｎが、画面の横幅を超えたときや、表示するオブジェクトＯの個数Ｎが増えたときなどの場合、オブジェクトＯは、画面の縦方向からはみ出してしまう場合が考えられる。このような場合には、表示部１２が、次のような表示処理を行えばよい。例えば、表示するオブジェクトＯが、画面の下端より下に位置するときは、表示するオブジェクトＯの高さｈ分、画面を上にスクロールするように表示する。また、横幅（ｗ×ｎ）が画面に収まらないときは、１つのオブジェクトＯの高さｈを、複数行分とって表示する。このように、表示部１２は、表示する画面領域に応じて、表示するオブジェクトＯを、画面に収まるような処理を行えばよい。
【００２４】
図１の説明に戻る。オブジェクト管理部１４は、オブジェクトＯを管理する。オブジェクト管理部１４は、オブジェクト制御部１３から、生成されたオブジェクトＯを受け取り、記憶領域に記憶し、保存する。なお、オブジェクトＯの記憶領域は、例えば、編集装置１００が備える記憶装置の所定の記憶領域に相当する。オブジェクト管理部１４は、オブジェクト制御部１３からの指示に従って、オブジェクトＯのデータ参照、読み込み、書き込みなどの各種データ操作を行う。
【００２５】
言語処理部１５は、認識結果に相当する文Ｓに対して言語処理を行う。言語処理部１５は、例えば、文Ｓを単語や形態素などの所定の単位に分解する。また、言語処理部１５は、言語に基づく処理により、分解結果の文Ｓに対して、文字の修正や句読点の挿入など、文法上の修正を行う。
【００２６】
以下に、上記機能部の連携動作により可能となる編集操作について説明する。
【００２７】
《操作例》
本実施形態に係る編集機能は、オブジェクトＯの連結、結合、分離の各編集操作が可能な環境を提供する。オブジェクトＯの連結操作とは、２つのオブジェクトＯを連結し、新しいオブジェクトＯ（連結オブジェクト）を生成する操作である。また、オブジェクトＯの結合操作とは、２つ以上のオブジェクトＯを結合し、新しいオブジェクトＯ（結合オブジェクト）を生成する操作である。また、オブジェクトＯの分離操作とは、１つのオブジェクトＯを分離し、２つ以上のオブジェクトＯ（分離オブジェクト）を生成する操作である。このように、本実施形態に係る編集機能は、直感的な編集操作を可能な環境を提供する。
【００２８】
図３は、本実施形態に係るオブジェクトＯを連結する操作例を示す図である。図３（Ａ）に示すように、２つのオブジェクトＯを連結する場合、まず、ユーザは、画面上に表示されたオブジェクトＯを指でタッチし（図中には、タッチした状態を黒丸で示す）、連結するオブジェクトＯを指定する。その後、ユーザは、指をタッチした状態のままで、連結したいオブジェクトＯの方向へ移動し（図中には、移動の軌跡を点線で示す）、連結したいオブジェクトＯ上で指を離すことで、オブジェクトＯの連結処理を指示する。これを受けて、オブジェクト制御部１３は、受け付けた指示に従って、２つのオブジェクトＯを連結し、言語処理部１５は、連結後の新しいオブジェクトＯに対して文法上の文字修正を行う。その結果、図３（Ｂ）に示すように、２つのオブジェクトＯに対応づけられた各文Ｓが、文字修正された１つの文（「来ています」が「着ています」に修正された連結文）となって画面に表示される。
【００２９】
図４は、本実施形態に係るオブジェクトＯを結合する操作例を示す図である。図４（Ａ）に示すように、３つのオブジェクトＯを結合する場合、まず、ユーザは、画面上に表示された各オブジェクトＯそれぞれを３本の指でタッチし（図中の黒丸）、結合する各オブジェクトＯを指定する。その後、ユーザは、３本の指をタッチした状態のままで、画面上の同じ位置に３本の指を移動し（図中の点線）、指を離すことで、各オブジェクトＯの結合処理を指示する。これを受けて、オブジェクト制御部１３は、受け付けた指示に従って、３つのオブジェクトＯを結合し、言語処理部１５は、結合後の新しいオブジェクトＯに対して文法上の文字修正を行う。その結果、図４（Ｂ）に示すように、３つのオブジェクトＯに対応づけられた各文Ｓが、文字修正された１つの文（結合文）となって画面に表示される。
【００３０】
図５は、本実施形態に係るオブジェクトＯを分離する操作例を示す図である。図５（Ａ）に示すように、１つのオブジェクトＯを３つの新たなオブジェクトＯに分離する場合、まず、ユーザは、画面上に表示されたオブジェクトＯを３本の指でタッチし（図中の黒丸）、分離する新しいオブジェクトＯを指定する。その後、ユーザは、３本の指をタッチした状態のままで、画面上の異なる位置に３本の指を移動し（図中の点線）、指を離すことで、オブジェクトＯの分離処理を指示する。これを受けて、オブジェクト制御部１３は、受け付けた指示に従って、オブジェクトＯを３つの新しいオブジェクトＯに分離する。その結果、図５（Ｂ）に示すように、オブジェクトＯに対応づけられた文Ｓが指定された３つの文（分離文）となって画面に表示される。
【００３１】
このような編集操作は、次のように実現される。例えば、表示部１２は、タッチセンサにより、指などの画面上の操作点（タッチされた画面上の座標）を検出し、画面上の操作を受け付ける。このようにして受け付けられた操作は、表示部１２からオブジェクト制御部１３へと、操作イベントして通知される。その後、オブジェクト制御部１３は、検出された操作点ごとの操作イベントを識別する。その結果、オブジェクト制御部１３は、例えばジェスチャー操作時に、画面上のどの点をタッチしたのか、画面上のどの点に移動したか、画面上のどの点から指が離れたのかなどのタッチイベントを識別し、タッチイベントとイベントに対応する情報を取得する。
【００３２】
図６は、本実施形態に係るタッチイベントのデータ例を示す図である。図６に示すように、オブジェクト制御部１３は、各種タッチイベントに対応するデータを取得する。取得するデータには、例えば、タッチイベントが「ＰＵＳＨ  ＤＯＷＮ」の場合、タッチされた時刻、画面上の操作点の座標（ｘ，ｙ）、及び操作点の識別子などがある。また、タッチイベントが「ＭＯＶＥ」の場合、移動開始時刻、画面上の移動先の座標（ｘ，ｙ）、及び操作点の識別子などがある。また、タッチイベントが「ＰＵＳＨ  ＵＰ」の場合、指が離れた時刻、画面上の操作点の最終座標（ｘ，ｙ）、及び操作点の識別子などがある。なお、このような情報は、例えば、ＯＳ（Operating  System）などの基本ソフトウェアやマルチタッチプラットフォームなどが有するＡＰＩ（Application  Program  Interface）を介して取得できる。つまり、オブジェクト制御部１３は、既存の仕組みを用いて、受け付けた編集操作に関する情報を取得できる。
【００３３】
以下に、本実施形態に係る編集装置１００で実行される編集機能の基本処理について説明する。
《処理》
図７は、本実施形態に係る編集装置１００の処理手順例を示すフローチャートである。図７に示す処理は、主にオブジェクト制御部１３が実行する。図７に示すように、本実施形態に係るオブジェクト制御部１３は、マルチタッチ検出ルーチンを実行することで（ステップＳ１）、画面上でタッチされたすべての操作点を検出する。次にオブジェクト制御部１３は、操作点の個数Ｎから、検出された操作点があるか否か（Ｎ≠０）を判定する（ステップＳ２）。その結果、オブジェクト制御部１３は、検出された操作点がなければ（ステップＳ２：ＮＯ）、処理を終了する。一方、オブジェクト制御部１３は、検出された操作点があれば（ステップＳ２：ＹＥＳ）、検出された操作点の個数Ｎが２つ以上か否か（Ｎ＞１）を判定する（ステップＳ３）。その結果、オブジェクト制御部１３は、検出された操作点の個数Ｎが１つの場合（ステップＳ３：ＮＯ）、連結ルーチンを実行し（ステップＳ４）、処理を終了する。一方、オブジェクト制御部１３は、検出された操作点の個数Ｎが２つ以上の場合（ステップＳ３：ＹＥＳ）、２つ以上のＮ個の操作点が、すべて同一のオブジェクトＯ内にあるか否かを判定する（ステップＳ５）。その結果、オブジェクト制御部１３は、Ｎ個の操作点が同一のオブジェクトＯ内にない場合（ステップＳ５：ＮＯ）、結合ルーチンを実行し（ステップＳ６）、処理を終了する。一方、オブジェクト制御部１３は、Ｎ個の操作点が同一のオブジェクトＯ内にある場合（ステップＳ５：ＹＥＳ）、分離ルーチンを実行し（ステップＳ７）、処理を終了する。
【００３４】
＜詳細＞
ここからは、上記処理の詳細処理について説明する。
【００３５】
《オブジェクト制御部１３の詳細処理》
図８は、本実施形態に係るマルチタッチ検出ルーチンの処理手順例を示すフローチャートである。図８に示す処理は、図７に示すステップＳ１の処理例である。本実施形態に係るマルチタッチ検出ルーチンは、1つ以上の操作点のタッチを検知するために、1つ目の操作点がタッチされてからの経過時間Ｔｅの間に、別のタッチ検出を待ち、その間にタッチされた操作点を配列ｐに記録する。
【００３６】
図８に示すように、本実施形態に係るオブジェクト制御部１３は、まず、タッチイベント（操作イベント）を検出するまで待機する（ステップＳ１０：ＮＯ）。その結果、オブジェクト制御部１３は、最初のタッチイベントを検出すると（ステップＳ１０：ＹＥＳ）、「ＰＵＳＨ  ＤＯＷＮ」イベントであると判断する。これにより、オブジェクト制御部１３は、検出した操作点の識別子をｉｄ１とし、配列ｐ［１］を｛ｉｄ１，（ｘ１，ｙ１）｝として（ステップＳ１１）、操作点の識別子と操作点の座標とを対応づける。次にオブジェクト制御部１３は、最初のタッチイベントを検出してからの経過時間Ｔｅ以内に（ステップＳ１２：ＹＥＳ）、次のタッチイベントを検出するまで待機する（ステップＳ１３：ＮＯ）。その結果、オブジェクト制御部１３は、次のタッチイベントを検出すると（ステップＳ１３：ＹＥＳ）、検出したタッチイベントの種類を判別する（ステップＳ１４）。なお、オブジェクト制御部１３は、経過時間Ｔｅ以内に、次のタッチイベントを検出しなかった場合（ステップＳ１２：ＮＯ）、処理を終了する。
【００３７】
オブジェクト制御部１３は、検出したタッチイベントの種類が「ＰＵＳＨ  ＤＯＷＮ」イベントの場合、配列ｐ［１］と同時にタッチされた操作点として、操作点の個数Ｎを１つ増やす。オブジェクト制御部１３は、配列ｐ［Ｎ］を｛ｉｄＮ，（ｘＮ，ｙＮ）｝として、配列ｐに追加する（ステップＳ１５）。また、オブジェクト制御部１３は、検出したタッチイベントの種類が「ＰＵＳＨ  ＵＰ」イベントの場合（一瞬タッチされたがすぐに離れた場合）、操作点ｐ［ｎ］´を離された操作点とする（ステップＳ１６）。次にオブジェクト制御部１３は、離された操作点ｐ［ｎ´］を配列ｐ［ｎ］；（ｎ＝１，．．．，Ｎ）から削除し、あらためて配列番号を振り直し（ステップＳ１７）、検出した操作点の個数ＮをＮ−１とする（ステップＳ１８）。また、オブジェクト制御部１３は、検出したタッチイベントの種類が「ＭＯＶＥ」イベントの場合、操作中の指のぶれとみなして、検出したタッチイベントを無視する（ステップＳ１９）。これにより、マルチタッチ検出ルーチンの実行後には、検出した操作点が記録された配列ｐ［ｎ］＝｛ｉｄｎ，（ｘｎ，ｙｎ）｝；（n＝１，．．．，Ｎ）が得られる。
【００３８】
《連結処理》
図９は、本実施形態に係る連結ルーチンの処理手順例を示すフローチャートである。図９に示す処理は、図７に示すステップＳ４の処理例である。本実施形態に係る連結ルーチンは、本実施形態に係るオブジェクト制御部１３が有する連結部１３１の処理であり、２つのオブジェクトＯを連結し、連結したオブジェクトＯを生成する。
【００３９】
本実施形態に係るオブジェクト制御部１３は、マルチタッチ検出ルーチンで、タッチによる１つの操作点が検出された場合に、連結ルーチンを実行する。
【００４０】
図９に示すように、オブジェクト制御部１３は、検出した操作点ｐ［１］＝｛ｉｄ１，（ｘ１，ｙ１）｝を受け取る。これを受けて、連結部１３１は、操作点ｐ［１］がオブジェクトＯの内部（境界線上を含む）か否かを判定する（ステップＳ２０）。
【００４１】
その結果、連結部１３１は、操作点ｐ［１］がオブジェクトＯの内部になければ（ステップＳ２０：ＮＯ）、いずれのオブジェクトＯも指定されていないとし、連結ルーチンを終了する。
【００４２】
なお、上記判定は、次のように行うことができる。ある点Ａ＝（ａｘ，ａｙ）が、オブジェクトＯの内部（境界線上を含む）に位置する点か否かの判定は、オブジェクトＯ＝｛Ｓ，［Ｐ，Ｑ］｝の点Ｐ，Ｑに対し、Ｐ＝（ｐｘ，ｐｙ），Ｑ＝（ｑｘ，ｑｙ）として、「点Ｐ≦点Ａ、かつ、点Ａ≦点Ｑ」によって判定できる。ただし、点Ｐ≦点Ａとは、「ｐｘ≦ａｘ、かつ、ｐｙ≦ａｙ」という意味に相当する。つまり、点Ｐ≦点Ａとは、「画面上では、点Ｐは、点Ａより左上側にある」という意味に相当する。点Ｐは、オブジェクトＯの表示領域の矩形の左上端点に相当し、点Ｑは、矩形の右下端点に相当する。これにより、「点Ｐ≦点Ａ、かつ、点Ａ≦点Ｑ」であれば、点Ａは、矩形［Ｐ，Ｑ］の内部、又は、境界線上にあると判定される。以下の説明では、上記判定方法を内点判定方法と称す。
【００４３】
また、連結部１３１は、操作点ｐ［１］がオブジェクトＯの内部にあれば（ステップＳ２０：ＹＥＳ）、操作点ｐ［１］を内部に持つオブジェクトＯ１＝｛Ｓ１，［Ｐ１，Ｑ１］｝を特定する（ステップＳ２１)。つまり、連結部１３１は、操作点ｐ［１］がオブジェクトＯ１に含まれていることが検出されたとする。このとき、画面上では、表示部１２が、オブジェクト制御部１３からの指示を受けて、オブジェクトＯ１を他のオブジェクトＯと異なる表示色に変えるなど、オブジェクトＯ１の操作対象状態をユーザが視認できるように、表示態様を変更するようにしてもよい。
【００４４】
次に連結部１３１は、操作点ｐ［１］の「ＰＵＳＨ  ＵＰ」イベントを検出するまで待機する（ステップＳ２２：ＮＯ）。その結果、連結部１３１は、「ＰＵＳＨ  ＵＰ」イベントを検出すると（ステップＳ２２：ＹＥＳ）、オブジェクト管理部１４に保存されているオブジェクトＯ１以外のすべてのオブジェクトＯに対し、内点判定方法により、操作点ｐ［１］のイベント発生位置（ｘ，ｙ：指を離した座標）が、オブジェクトＯ１（第１対象オブジェクト）以外のオブジェクトＯ２（第２対象オブジェクト）の内部か否かを判定する（ステップＳ２３）。つまり、指がどのように動こうとも、最後に指を離した位置だけで判定する。
【００４５】
その結果、連結部１３１は、操作点ｐ［１］のイベント発生位置（ｘ，ｙ）が、オブジェクトＯ１の内部にある、又は、すべてのオブジェクトＯの内部にない場合（ステップＳ２３：ＮＯ）、連結ルーチンを終了する。一方、連結部１３１は、操作点ｐ［１］のイベント発生位置（ｘ，ｙ）が、オブジェクトＯ１以外のオブジェクトＯ２＝｛Ｓ２，［Ｐ２，Ｑ２］｝の内部にある場合（ステップＳ２３：ＹＥＳ）、オブジェクトＯ１とオブジェクトＯ２とを連結し、言語処理部１５において、文Ｓ１と文Ｓ２とを連結した文（連結文）の修正文Ｓを生成する（ステップＳ２４）。このとき連結部１３１は、次のような処理を行う。
【００４６】
連結部１３１は、連結操作の移動後に、オブジェクトＯ１がオブジェクトＯ２の上にあれば、文Ｓ１に文Ｓ２を連結する。一方、オブジェクトＯ２がオブジェクトＯ１の上にあれば、文Ｓ２に文Ｓ１を連結する。これにより、連結した文Ｓ’を生成する。具体的には、例えば、Ｓ１＝「長袖のシャツを」、Ｓ２＝「来ています」ならば、文Ｓ１に文Ｓ２を連結した文Ｓ’は、「長袖のシャツを来ています」となる。逆に、文Ｓ２に文Ｓ１を連結した文Ｓ’は、「来ています長袖のシャツを」となる。次に言語処理部１５が、連結した文Ｓ’に対して文法上の修正を行う。このとき言語処理部１５は、例えば、日本語であれば同音異義語の修正、英語であれば大文字小文字の修正、言語によらず句読点の挿入など、言語処理による文Ｓ’（連結文）の修正や整形などを行う。次に連結部１３１は、修正文Ｓに対応づけられた新しいオブジェクトＯの形状を決定する。このとき点Ｐは、Ｐ１とＰ２のうち、ｙ座標の小さい点（画面上で上側にある点）とする。また、連結部１３１は、右下端点Ｑは、点Ｐの座標（ｘ，ｙ）、修正文Ｓの文字数ｎ、文字の幅ｗ、及び文字の高さｈなどから算出する。これにより、新しいオブジェクトＯの形状が決定される。
【００４７】
次に連結部１３１は、修正文Ｓと修正文Ｓに対応づけられた新しいオブジェクトＯの形状から、新しいオブジェクトＯ＝｛Ｓ，［Ｐ，Ｑ］｝を生成する（ステップＳ２５）。その結果、連結部１３１は、連結したオブジェクトＯ１とオブジェクトＯ２とを、オブジェクト管理部１４から消去し、生成した新しいオブジェクトＯを保存する(ステップＳ２６）。次に連結部１３１は、連結したオブジェクトＯ１とオブジェクトＯ２とを、画面上からも消去し、生成した新しいオブジェクトＯを表示する（ステップＳ２７）ように、表示部１２に指示する。
【００４８】
図１０は、本実施形態に係る修正文Ｓを生成する処理手順例を示すフローチャートである。図１０に示す処理は、図９に示す連結ルーチンのステップＳ２４で実行される処理例である。本実施形態に係る言語処理部１５は、文Ｓに対して、文字の修正や句読点の挿入など、文法上の修正を行う。例えばユーザが「長袖のシャツを、着ています」と、読点の位置で、間を置きながら発声した場合の音声認識は、それを２つの発声と解釈して、認識結果「長袖のシャツを」「来ています」となる。最後の「来ています」は、音声認識が、発声を２つに区切ったために同音異義語に誤ってしまったものである。さらに、この２つの文が翻訳されるとき、翻訳対象文が未完成な文のため、翻訳も適切に行われない。従来では、このような誤りが生じると、ユーザは、再度、同じ文を発声し直さなければならない。しかし、再発声しても、音声認識が誤認識を起こしたり、再び、無意識に発声の間にポーズをあけたりするために誤認識してしまうことがある。このようなことから、「来ています」が「着ています」に修正されるなど、同音異義語などの文法上の誤りを自動で修正できることが望まれる。本実施形態に係る言語処理部１５は、このような修正機能を、以下の処理を実行することで実現する。
【００４９】
図１０に示すように、本実施形態に係る言語処理部１５は、まず、連結した文Ｓ’を受け取る。これを受けて、言語処理部１５は、連結した文Ｓ’に対して形態素解析を行い、ラティスを生成する（ステップＳ３０）。図１１は、本実施形態に係る形態素解析結果として出力されるラティスの概念図である。図１１には、連結した文Ｓ’が「長袖のシャツを来ています」であった場合のラティスの生成例が示されている。
【００５０】
図１０の説明に戻る。次に言語処理部１５は、生成したラティスに、同音異義語の並列パスを追加する（ステップＳ３１）。図１２は、本実施形態に係るラティスに対するパスの追加例を示す図である。図１２（Ａ）には、「来」に対して、「き」と「着」とが同音異義語として追加された例が示されている。
【００５１】
図１０の説明に戻る。次に言語処理部１５は、生成したラティスの全アークに、句読点パスを追加する（ステップＳ３２）。図１２（Ｂ）には、「シャツ」と「を」とのアークに対して、「、」と「。」との句読点パスが追加された例が示されている。
【００５２】
図１０の説明に戻る。次に言語処理部１５は、上記処理が施されたラティスに対して、ｎｇｒａｍによるスコアを付与する（ステップＳ３３）。次に言語処理部１５は、このようなラティス構造に対して、ｔｒｉｇｒａｍのスコアを算出し、Ｖｉｔｅｒｂｉアルゴリズムにより、連結した文Ｓ’の始端から終端までの最適パス（スコア最大のパス）を算出する（ステップＳ３４）。なお、形態素１から形態素２、さらに形態素３に至るパスのｔｒｉｇｒａｍのスコアは、形態素1に続き形態素２が出現し、さらに形態素３が出現する確率に相当する。これは、統計的に予め求められるものとする（このとき句読点も形態素として扱うものとする）。これを、Ｐ（形態素３｜形態素１，形態素２）と表現すると、連結した文Ｓ’の始端から、形態素１−Ｎを通り、終端に至るパスのスコアは、以下（式５）で表現（算出）できる。
パスのスコア  ＝  ΣｌｏｇＰ（形態素ｎ｜形態素ｎ−２，形態素ｎ−１）  ・・・  （式５）
ただし、ｎ＝１，．．．，Ｎ＋１であり、ｎ＝１の場合の形態素−１と形態素０とを始端、形態素Ｎ＋１を終端とする。
【００５３】
その結果、言語処理部１５は、算出した最適パスの形態素列を、修正文Ｓとして出力する。
【００５４】
このような言語処理により、例えば、スコアＰ（着｜シャツ，を）とスコアＰ（来｜シャツ，を）とが算出された場合は、Ｐ（着｜シャツ，を）の方が、Ｐ（来｜シャツ，を）よりスコアが大きい（確率が高い）。よって、出力される修正文Ｓは、「長袖のシャツを着ています。」となり、連結した文Ｓ’の「来」の誤りが修正される。これにより、本実施形態では、「シャツ」に対して、「来ている」ではなく「着ている」が正しいという言語仕様（文脈や知識）に従った修正を自動に行うので、テキスト入力などの修正操作が軽減され、煩雑な編集作業を行わなくてもよい。
【００５５】
なお、上記処理では、結果として、修正した文（修正文）Ｓが、連結した文Ｓ’と同じになり、修正されない場合もある。また、同音異義語と同様に、大文字・小文字の違う単語を並列パスとして追加すると、英語や日本語でも、英語表記されたものについて、大文字・小文字を修正できる。また、上記には、文Ｓの修正が可能であることを示すためのアルゴリズムの一例を示したが、これに限らず、既存のテキスト修正方法を用いてもよい。
【００５６】
《結合処理》
図１３は、本実施形態に係る結合ルーチンの処理手順例を示すフローチャートである。図１３に示す処理は、図７に示すステップＳ６の処理例である。本実施形態に係る結合ルーチンは、オブジェクト制御部１３が有する結合部１３２の処理であり、２つ以上のオブジェクトＯを結合し、結合したオブジェクトＯを生成する。
【００５７】
本実施形態に係るオブジェクト制御部１３は、マルチタッチ検出ルーチンで、タッチによる２つ以上（Ｋ≧２）の操作点が検出され、検出された操作点がすべて同一のオブジェクトＯ内にない場合に、結合ルーチンを実行する。
【００５８】
図１３に示すように、オブジェクト制御部１３は、検出した操作点ｐ［ｋ］＝（ｘｋ，ｙｋ）；（ｋ＝１，．．．Ｋ）を受け取る。これを受けて、結合部１３２は、まず、検出した操作点が、どのオブジェクトＯの内部（境界線上を含む）にあるのかを、操作対象オブジェクト抽出ルーチンにより抽出する（ステップＳ４０）。
【００５９】
その結果、結合部１３２は、操作対象オブジェクト抽出ルーチンの出力（操作点の集合）Ｑ＝｛（ｑ［１］，Ｏ［１］），．．．，（ｑ［Ｍ］，Ｏ［Ｍ］）｝を受け取り、各Ｏ［ｍ］のコピーＯ’［ｍ］；（ｍ＝１，．．．，Ｍ）を作成し、Ｑ＝｛（ｑ［１］，Ｏ［１］，Ｏ’［１］），．．．，（ｑ［Ｍ］，Ｏ［Ｍ］，Ｏ’［Ｍ］）｝とする。なお、ｑ［ｍ］＝｛ｉｄｍ，（ｘｍ，ｙｍ）｝は、ｐ［ｋ］のうち、いずれかのオブジェクトＯに内包される操作点を表す。また、Ｏ［ｍ］は、ｑ［ｍ］を内包するオブジェクトＯを表す。また、Ｏ’［ｍ］は、ｑ［ｍ］を内包するオブジェクトＯのコピーを表す。また、オブジェクトＯは、タッチしたオブジェクトであり、オブジェクトＯ’は、指の動きにあわせて、オブジェクトＯの移動した位置を記憶するためのコピーである。また、ｍは、１，．．．，Ｍである。また、結合部１３２は、「ＰＵＳＨ  ＵＰ」イベントが検出されたとき（指が離れ、操作が完了したとき）のオブジェクトＯを保持するＯｂｊ＝｛｝を初期化する（要素数０の集合とする）（ステップＳ４１）。
【００６０】
次に結合部１３２は、抽出したオブジェクト数Ｍが２以上か否か（Ｍ＞１）を判定する（ステップＳ４２）。その結果、結合部１３２は、抽出したオブジェクト数Ｍが１の場合（ステップＳ４２：ＮＯ、ステップＳ４３：ＹＥＳ）、操作点が、１つのオブジェクトＯを指定していため、連結ルーチンへと移行する（ステップＳ４４）。なお、結合部１３２は、抽出したオブジェクト数Ｍが０の場合（ステップＳ４２：ＮＯ、ステップＳ４３：ＮＯ）、処理を終了する。一方、結合部１３２は、抽出したオブジェクト数Ｍが２以上の場合（ステップＳ４２：ＹＥＳ）、すべての操作点から指が離れず、接触状態の操作点が画面上に存在する間（Ｍ＞０；ステップＳ４５：ＹＥＳ）、操作点ｑ［ｌ］のタッチイベントを検出する（ステップＳ４５〜Ｓ４７）。そして、結合部１３２は、タッチイベント処理ルーチンを実行する（ステップＳ４８）。なお、Ｍは、タッチイベント処理ルーチンで、「ＰＵＳＨ  ＵＰ」イベントが検出されるたびに、１ずつ減っていく。
【００６１】
その結果、結合部１３２は、すべての操作点から指が離れ、接触状態の操作点が画面上に存在せず、操作が完了すると（Ｍ＝０；ステップＳ４５：ＮＯ）、結合オブジェクト生成ルーチンを実行する（ステップＳ４９）。
【００６２】
図１４は、本実施形態に係る操作対象オブジェクト抽出ルーチンの処理手順例を示すフローチャートである。図１４に示す処理は、図１３に示す結合ルーチンのステップＳ４０の処理例である。本実施形態に係る操作対象オブジェクト抽出ルーチンは、検出した操作点を内包するオブジェクトＯを抽出する。
【００６３】
図１４に示すように、本実施形態に係る結合部１３２は、検出した操作点ｐ［ｋ］＝（ｘｋ，ｙｋ）；（ｋ＝１，．．．Ｋ）を受け取る。このとき結合部１３２は、抽出したオブジェクト数Ｍを初期化（Ｍ＝０）とする。なお、Ｋは、検出した操作点の数を表す。これを受けて、結合部１３２は、検出したすべての操作点ｐ［ｋ］；（ｋ＝１，．．．，Ｋ）に対し（ステップＳ５０、ステップＳ５１：ＹＥＳ、ステップＳ５２)、内点判定方法により、操作点ｐ［ｋ］を内包するオブジェクトＯが存在するか否かを判定する（ステップＳ５３）。その結果、結合部１３２は、操作点ｐ［ｋ］を内包するオブジェクトＯが存在する場合（ステップＳ５３：ＹＥＳ）、操作点ｐ［ｋ］を内包するオブジェクトＯが、オブジェクト管理部１４で保存している複数のオブジェクト群を格納される配列Ｏ［ｍ］；（ｍ＝１，．．．，Ｍ）に存在するか否かを判定する（ステップＳ５４）。その結果、結合部１３２は、操作点ｐ［ｋ］]を内包するオブジェクトＯが、オブジェクト群の配列Ｏ［ｍ］；（ｍ＝１，．．．，Ｍ）に存在しない場合（ステップＳ５４：ＮＯ）、Ｍ＋１番目の要素として、操作点ｐ［ｋ］を、抽出したオブジェクトＯの操作点（操作完了時の移動先）が記録される配列ｑ［Ｍ］として追加する。また、結合部１３２は、Ｍ＋１番目の要素として、操作点ｐ［ｋ］を内包するオブジェクトＯを配列Ｏ［Ｍ］として追加する。これにより、操作対象オブジェクトを抽出する。そして、結合部１３２は、抽出したオブジェクト数Ｍを１つ増やす（Ｍ＋１；ステップＳ５５）。結合部１３２は、このような処理を、検出したすべての操作点ｐ［ｋ］に対して行い、操作対象オブジェクトの抽出結果として、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ［１］），．．．，（ｑ［Ｍ］，Ｏ［Ｍ］）｝を出力する。
【００６４】
なお、操作点ｐ［ｋ］は、重複して同一のオブジェクトＯをタッチしているかもしれない。また、どのオブジェクトＯも指定していないかもしれない。しかし、上記操作対象オブジェクトルーチンで得られたＱ＝｛（ｑ［１］，Ｏ［１］），．．．，（ｑ［Ｍ］，Ｏ［Ｍ］）｝は、１つのオブジェクトＯに対して１つの操作点が対応するように、上記の場合を除いたものとなる。
【００６５】
図１５は、本実施形態に係るタッチイベント処理ルーチンの処理手順例を示すフローチャートである。図１５に示す処理は、図１３に示す結合ルーチンのステップＳ４８の処理例である。本実施形態に係るタッチイベント処理ルーチンは、検出したタッチイベント（操作イベント）を処理する。
【００６６】
図１５に示すように、本実施形態に係る結合部１３２は、抽出したオブジェクトＯ＝Ｏ［ｌ］、抽出したオブジェクトＯをコピーしたオブジェクトＯ’＝Ｏ’［ｌ］、及び抽出したオブジェクトＯの操作点（操作完了時の移動先）ｑ＝ｑ［ｌ］を受け取る。なお、Ｏｂｊは、現在の抽出したオブジェクトＯを保持し、Ｍは、現在の抽出したオブジェクト数である。これを受けて、結合部１３２は、オブジェクトＯの操作点ｑのタッチイベントの種類を判別する（ステップＳ６０）。その結果、結合部１３２は、操作点ｑのタッチイベントが「ＭＯＶＥ」イベントの場合、移動前の操作点ｑの座標（ｕ，ｖ）と移動後の操作点ｑの座標（ｘ，ｙ）とに基づき、操作点の移動量Δ＝（Δｘ，Δｙ）＝（ｘ−ｕ，ｙ−ｖ）を算出する（ステップＳ６１）。次に結合部１３２は、操作点ｑの座標を移動後の座標（ｘ，ｙ）に更新する（ステップＳ６２）。次に結合部１３２は、抽出したオブジェクトＯのコピーであるオブジェクトＯ’の形状［Ｐ，Ｑ］を、Ｐ＝Ｐ＋Δｘ，Ｑ＝Ｑ＋Δｙで更新する（ステップＳ６３）。これにより、抽出したオブジェクトＯのコピーであるオブジェクトＯ’が、操作点ｑの移動量に従って移動する。なお、ここで、表示部１２は、「ＭＯＶＥ」イベントの更新にあわせて、タッチされたオブジェクトＯを移動させて表示してもよい。一方、結合部１３２は、操作点ｑのタッチイベントが「ＰＵＳＨ  ＵＰ」イベントの場合、オブジェクトＯに対する操作が完了したものとして、Ｏｂｊに（Ｏ［ｌ］，Ｏ’［ｌ］）を登録する（ステップＳ６４）。次に結合部１３２は、Ｑから（ｑ［ｌ］，Ｏ［ｌ］，Ｏ’［ｌ］）を削除し（ステップＳ６５）、抽出したオブジェクト数Ｍを１減算する（ステップＳ６６）。なお、図中に示す式「Ａ＝Ａ∪｛Ｂ｝」は、∪が和の集合を表し、集合Ａに要素Ｂを登録（追加）することを表現している。以降の説明でも同様の表現を用いる。
【００６７】
図１６は、本実施形態に係る結合オブジェクト生成ルーチンの処理手順例を示すフローチャートである。図１６に示す処理は、図１３に示す結合ルーチンのステップＳ４９の処理例である。本実施形態に係る結合オブジェクト生成ルーチンは、抽出した複数のオブジェクトＯを結合し、新しいオブジェクトＯを生成する。
【００６８】
図１６に示すように、本実施形態に係る結合部１３２は、抽出した複数のオブジェクトＯを保持するＯｂｊ＝｛（Ｏ［１］，Ｏ’［１］），．．．，（Ｏ［Ｍ］，Ｏ’［Ｍ］）｝を受け取る。なお、Ｍは、抽出したオブジェクトＯの総数である。これを受けて、結合部１３２は、まず、抽出したオブジェクトＯ［ｍ］の中心点を、それぞれＣ［ｍ］；（ｍ＝１，．．．，Ｍ）とし、Ｃ［ｍ］の重心Ｃを（Ｃ［１］＋，．．．，＋Ｃ［Ｍ］）／Ｍとする。また、結合部１３２は、重心Ｃからの各オブジェクトＯへの距離の最大値Ｒをｍａｘ｛｜Ｃ−Ｃ［１］，．．．，Ｃ−Ｃ［Ｍ］｜｝とする。また、結合部１３２は、抽出したオブジェクトＯ［ｍ］をコピーしたオブジェクトＯ’［ｍ］の中心点を、それぞれＣ’［ｍ］とし、Ｃ’［ｍ］の重心Ｃ’を（Ｃ’［１］＋，．．．，＋Ｃ’［Ｍ］）／Ｍとする。また、結合部１３２は、重心Ｃ’からの各オブジェクトＯへの距離の最大値Ｒ’をｍａｘ｛｜Ｃ’−Ｃ’［１］，．．．，Ｃ’−Ｃ’［Ｍ］｜｝とする（ステップＳ７０）。なお、このとき、Ｒ−Ｒ’は、抽出したオブジェクトＯが、操作の前後で、どれだけ重心に近づくような移動をしたかを意味するので、Ｒ’が小さくなるほど移動量が大きいことを表す。そこで、結合部１３２は、Ｒ’の値が、Ｒの値に所定の閾値ＴＨＲを加算した値より小さい（条件式を満たす）か否かを判定する（ステップＳ７１）。
【００６９】
その結果、結合部１３２は、条件式が満たされない場合（ステップＳ７１：ＮＯ）、抽出したオブジェクトＯを結合せずに、処理を終了する。この条件式は、例えば、ユーザが、一度、画面をタッチしたが、気が変わって何もせずに指を離した場合、わずかな指の移動が起こりうることを考慮し、所定の閾値ＴＨＲ以上の移動が検出されなければ、結合処理を行わないようにするための式である。
【００７０】
一方、結合部１３２は、条件式が満たされた場合（ステップＳ７１：ＹＥＳ）、十分な移動量が検出されたと判断する。これにより、結合部１３２は、結合する文Ｓの結合順序を決めるため、抽出したすべてのオブジェクトＯ［ｍ］を、中心点Ｃ［ｍ］のｙ座標の昇順（Ｃ［ｍ］のｙ座標＜Ｃ［ｍ＋１］のｙ座標）となるようにソートする。結合部１３２は、ソート後の配列Ｏ［ｍ］を、あらためて、抽出したオブジェクトＯ［ｍ］；（ｍ＝１，．．．，Ｍ）とする（ステップＳ７２）。なお、抽出したオブジェクトが、必ずしも縦一列に並んでおらず、横に並ぶ（ｙ座標が同じ）オブジェクトＯが存在する場合や、規則性なく配置されている場合が考えられる。よって、結合部１３２は、これらの場合にも対処できるように、ｙ座標が同じ場合、中心点Ｃ［ｍ］のｘ座標について昇順（Ｃ［ｍ］のｘ座標＜Ｃ［ｍ＋１］のｘ座標）となるようにソートしてもよい。
【００７１】
次に結合部１３２は、ソート順に従って、画面の上側に表示されている文Ｓから順に結合した文Ｓ’（結合文）＝Ｓ［１］＋，．．．，＋Ｓ［Ｍ］を生成する。また、結合部１３２は、言語処理部１５において、生成した結合文Ｓ’の修正文Ｓを生成する（ステップＳ７３）。次に結合部１３２は、修正文Ｓと、結合した複数のオブジェクトＯのなかで最も左上側に位置するオブジェクトＯの形状から、新しいオブジェクトＯの形状［Ｐ，Ｑ］を算出する（ステップＳ７４）。
【００７２】
次に結合部１３２は、修正文Ｓと、算出した形状［Ｐ，Ｑ］から、新しいオブジェクトＯ＝｛Ｓ，［Ｐ，Ｑ］｝を生成する（ステップＳ７５）。その結果、結合部１３２は、結合した複数のオブジェクトＯ［ｍ］を、オブジェクト管理部１４から消去し、生成した新しいオブジェクトＯを保存する(ステップＳ７６）。次に結合部１３２は、結合した複数のオブジェクトＯ［ｍ］を、画面上からも消去し、生成した新しいオブジェクトＯを表示する（ステップＳ７７）ように、表示部１２に指示する。
【００７３】
《分離処理》
図１７は、本実施形態に係る分離ルーチンの処理手順例を示すフローチャートである。図１７に示す処理は、図７に示すステップＳ７の処理例である。本実施形態に係る分離ルーチンは、オブジェクト制御部１３が有する分離部１３３の処理であり、１つオブジェクトＯを分離し、分離した複数のオブジェクトＯを生成する。
【００７４】
本実施形態に係るオブジェクト制御部１３は、マルチタッチ検出ルーチンで、タッチによる２つ以上（Ｋ≧２）の操作点が検出され、検出された操作点がすべて同一のオブジェクトＯ内にある場合に、分離ルーチンを実行する。
【００７５】
図１７に示すように、オブジェクト制御部１３は、検出した操作点ｐ［ｋ］＝（ｘｋ，ｙｋ）；（ｋ＝１，．．．，Ｋ）を受け取る。これを受けて、分離部１３３は、まず、結合ルーチンのステップＳ４１と同様に、検出した操作点ｐ［ｋ］を内包するオブジェクトＯのコピーＯ’を作成し、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ，Ｏ’），．．．，（ｑ［Ｋ］，Ｏ，Ｏ’）｝とする（ステップＳ８０）。
【００７６】
次に分離部１３３は、操作点の集合Ｑを入力として、オブジェクト分離ルーチンを実行する（ステップＳ８１）。その結果、分離部１３３は、オブジェクト分離ルーチンから、操作点と分離領域とが対応づけられた出力Ｑ＝｛（ｑ［１］，Ｏ［１］，Ｏ’［１］），．．．，（ｑ［Ｌ］，Ｏ［Ｌ］，Ｏ’［Ｌ］）｝を受け取り、分離したオブジェクトＯを保持するＯｂｊ＝｛｝を初期化し（要素数０の集合とし）、オブジェクト数Ｍを分離数Ｌとする（ステップＳ８２）。
【００７７】
次に分離部１３３は、オブジェクト数Ｍが１以上か否か（Ｍ＞０）を判定する（ステップＳ８３）。その結果、分離部１３３は、オブジェクト数Ｍが１以上の場合（ステップＳ８３：ＹＥＳ）、Ｑの操作点ｑ［１］，．．．，ｑ［Ｌ］のいずれかで、タッチイベントが発生するまで待機し（ステップＳ８４，Ｓ８５：ＮＯ）、タッチイベントを検出すると（ステップＳ８４，Ｓ８５：ＹＥＳ）、タッチイベント処理ルーチンを実行する（ステップＳ８６）。これにより、分離したオブジェクトＯを保持するＯｂｊとオブジェクト数Ｍとは、タッチイベント処理ルーチンの出力により更新される。
【００７８】
一方、分離部１３３は、オブジェクト数Ｍが０の場合（ステップＳ８３：ＮＯ）、すべての操作点が、「ＰＵＳＨ  ＵＰ」イベントによって終了し、操作が完了したものとする。分離部１３３は、その時点で最も左端にあるオブジェクトＯ［１］と、最も右端にあるオブジェクトＯ［Ｌ］とを、それぞれのコピーに相当するオブジェクトＯ’［１］とＯ’［Ｌ］とに移動する。そこで、分離部１３３は、Ｏ’［１］の中心点とＯ’［Ｌ］との中心点の間の距離が、Ｏ［１］の中心点とＯ［Ｌ］との中心点の間の距離よりも、所定の距離ＴＨＤ以上大きい（条件式を満たす）か否かを判定する（ステップＳ８７）。
【００７９】
その結果、分離部１３３は、条件式が満たされなかった場合（ステップＳ８７：ＮＯ）、処理を終了する。一方、分離部１３３は、分離前のオブジェクトＯを、オブジェクト管理部１４から消去し、分離したオブジェクトＯ’［ｌ］を保存する(ステップＳ８８）。次に分離部１３３は、分離前のオブジェクトＯを、画面上からも消去し、分離したオブジェクトＯ’［ｌ］を表示する（ステップＳ８９）ように、表示部１２に指示する。なお、このとき表示部１２は、分離したオブジェクトＯ’［ｌ］を、整列された状態で表示してもよい。
【００８０】
図１８は、本実施形態に係るオブジェクト分離ルーチンの処理手順例を示すフローチャートである。図１８に示す処理は、図１７に示す分離ルーチンのステップＳ８１の処理例である。本実施形態に係るオブジェクト分離ルーチンは、操作点の位置からオブジェクトＯの分離位置を決定し、分離位置に従って、指定された１つのオブジェクトＯを分離し、新しい複数のオブジェクトＯを生成し、生成したオブジェクトＯと操作点とを対応づける。
【００８１】
図１８に示すように、本実施形態に係る分離部１３３は、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ，Ｏ’），．．．，（ｑ［Ｋ］，Ｏ，Ｏ’）｝を受け取る。なお、Ｋは、検出した操作点の総数である。これを受けて、分離部１３３は、まず、Ｑの操作点ｐ［ｋ］を、ｙ座標の昇順（ｐ［ｋ］のｙ座標＜ｐ［ｋ＋１］のｙ座標）となるようにソートする。分離部１３３は、ソート後の配列Ｑ［ｋ］を、あらためて、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ，Ｏ’），．．．，（ｑ［Ｋ］，Ｏ，Ｏ’）｝とする（ステップＳ９０）。なお、このとき分離部１３３は、ｙ座標が同じ場合、ｘ座標について昇順（ｐ［ｋ］のｘ座標＜ｐ［ｋ＋１］のｘ座標）となるようにソートしてもよい。
【００８２】
次に分離部１３３は、言語処理部１５において、文Ｓを、所定の単位（例えば「単語」や「形態素」）で分離し、文頭から順に、分離結果Ｓ［１］，．．．，Ｓ［ｌ］を得る（ステップＳ９１）。
【００８３】
次に分離部１３３は、オブジェクトＯ上の分離結果Ｓ［ｉ−１］とＳ［ｉ］との境界線［Ａ［ｉ］，Ｂ［ｉ］］；（ｉ＝１，．．．，ｌ）を算出する（ステップＳ９２）。このとき、Ａ［ｉ］は、分離結果Ｓ［ｉ−１］とＳ［ｉ］との境界線の上端点（１≦ｉ≦ｌ）、Ｂ［ｉ］は、分離結果Ｓ［ｉ−１］とＳ［ｉ］との境界線の下端点（１≦ｉ≦ｌ）に相当する。また、Ｓ［ｉ−１］とＳ［ｉ］とが、文頭から（Ｘ＋１）文字目を境界とする場合（Ｘ文字目までがＳ［ｉ−１］であり、（Ｘ＋１）文字目からＳ［ｉ］である場合）、オブジェクトＯの形状を［Ｐ，Ｑ］とする。このとき、Ａ［ｉ］，Ｂ［ｉ］の座標は、以下（式６）及び（式７）で表現（算出）できる。
Ａ［ｉ］  ＝  （幅ｗ  ×  文頭からの境界までの文字数Ｘ，Ｐのｙ座標）  ・・・  （式６）
Ｂ［ｉ］  ＝  （幅ｗ  ×  文頭からの境界までの文字数Ｘ，Ｑのｙ座標）  ・・・  （式７）
なお、ｗは１文字幅である。さらに、以下の処理に必要となるため、Ａ［０］は、オブジェクトＯの形状を「Ｐ，Ｑ］の左上端点Ｐ、Ｂ［ｉ＋１］は、オブジェクトＯの形状を「Ｐ，Ｑ］の右下端点Ｑとする。
【００８４】
図１９は、本実施形態に係る分離領域の概念図である。図１９には、「長袖のシャツ」を３つの形態素に分離した場合の２つの境界線［Ａ［１］，Ｂ［１］］と［Ａ［２］，Ｂ［２］］との例が示されている。なお、矩形Ｒ［ｉ］は、Ｒ［ｉ］＝［Ａ［ｉ］，Ｂ［ｉ＋１］］と定義でき、オブジェクトＯの分離領域に相当する。また、各分離領域に対応する分離したオブジェクトＯ［ｉ］は、｛Ｓ［ｉ］，［Ａ［ｉ］，Ｂ［ｉ］］｝；（ｉ＝１，．．．，Ｉ）となる。
【００８５】
図１８の説明に戻る。分離部１３３は、分離領域のインデックスｓを初期化し（ｓ＝０）、分離したオブジェクトＯが操作点を内包する場合に１とするフラグｆｌａｇ［ｉ］；（ｉ＝１，．．．，Ｉ）を初期化する（ｆｌａｇ［ｉ］＝０）。また、分離部１３３は、操作点と対応づけられたオブジェクトＯの集合Ｑ’＝｛｝を初期化し（要素数０の集合とし）、ｘ（Ｑの要素数）を０とする（ステップＳ９３）。
【００８６】
次に分離部１３３は、すべての操作点ｐ［ｋ］；（ｋ＝１，．．．，Ｋ）について（ステップＳ９４：ＹＥＳ）、ｋ＝１から順に（ステップＳ９５）、内点判定方法により、ｐ［ｋ］を内包する分離領域Ｒ［ｉ］を特定する（ステップＳ９６）。
【００８７】
次に分離部１３３は、Ｒ［ｉ］に対応するｆｌａｇ［ｉ］が０か否かを判定し（ステップＳ９７）、ｆｌａｇ［ｉ］が１の場合（ステップＳ９７：ＮＯ）、すでにＲ［ｉ］が、他の操作点と対応づけられているとする。よって、分離部１３３は、重複して対応づけることを避けるために、何もしない。
【００８８】
一方、分離部１３３は、ｆｌａｇ［ｉ］が０の場合（ステップＳ９７：ＹＥＳ）、Ｒ［ｉ］が、操作点と対応づけられていないとする。そこで、分離部１３３は、ｘを１加算し（ｘ＋１；ステップＳ９８）、分離したオブジェクトＯ［ｘ］を、分離結果｛Ｓ［ｓ］＋Ｓ［ｓ＋１］＋，．．．，＋Ｓ［ｉ］，［Ａ［ｓ］，Ｂ［ｉ］］｝とする。また、分離部１３３は、操作点の集合Ｑ’に（ｑ［ｘ］，Ｏ［ｘ］，Ｏ’［ｘ］）を登録する（ステップＳ９９）。なお、ｑ［ｘ］は、操作点ｐ［ｘ］に相当し、Ｏ’［ｘ］は、オブジェクトＯ［ｘ］をコピーしたオブジェクトＯに相当し、Ｓ［ｓ］は、分離領域Ｒ［ｉ］に含まれる分離文字又は分離文字列に相当する。また、分離部１３３は、ｆｌａｇ［ｉ］を１とし、分離領域のインデックスｓをｉ＋１とする（ステップＳ１００）。
【００８９】
その結果、分離部１３３は、すべての操作点ｐ［ｋ］に対して上記処理が終わると（ステップＳ９４：ＮＯ）、Ｌを、分離した数ｘとし、操作点ｑ［Ｌ」が指す分離領域をＲ［Ｊ］とする。また、分離部１３３は、所定の単位に分離した分離領域Ｒ［Ｊ＋１］，Ｒ「Ｊ＋２」，．．．，Ｒ［Ｉ］を結合し、オブジェクトＯ［Ｌ］の領域を生成する。また、分離部１３３は、オブジェクトＯ［Ｌ］に対応づけられた文Ｓ［Ｌ］を、所定の単位に分離した分離結果Ｓ［Ｌ］＝Ｓ［Ｊ＋１］＋Ｓ［Ｊ＋２］＋，．．．，＋Ｓ［Ｉ］（分離結果を結合した文字列）とし、Ｑ［Ｌ］をオブジェクトＯの右下端点Ｑとする。また、分離部１３３は、オブジェクトＯ’［Ｌ］を、更新されたオブジェクトＯ［Ｌ］のコピーとする（ステップＳ１０１）。分離部１３３は、このような処理により操作対象オブジェクトの分離結果として、Ｑの要素数Ｌと、Ｑ＝｛（ｑ［１］，Ｏ［１］，Ｏ’［１］），．．．，（ｑ［Ｌ］，Ｏ［Ｌ］，Ｏ’［Ｌ］）｝を出力する。
【００９０】
これにより、指定されたオブジェクトＯは、互いに隣接しあうＬ個のオブジェクトＯ［ｘ］；（ｘ＝１，．．．，Ｌ）の領域に分離される。このとき操作点ｐ［ｋ］は、ｋが小さいほど、画面上では左に位置する。このことから、操作点ｐ［ｋ］に対して処理を行う時点では、ｐ［１］，．．．，ｐ［ｋ−１］で指定された分離領域の中で最も右に位置する分離領域がＲ［ｓ−１］；（ｓ＝０のときはＲ［０］）となり、分離領域Ｒ［ｓ］は、その右隣の領域に相当する。したがって、操作点ｐ［ｋ］が、分離領域Ｒ［ｉ］に含まれる場合、オブジェクトＯ［ｘ］は、操作点を１つも含まない分離領域Ｒ［ｓ］からＲ［ｊ−１］までの領域と分離領域Ｒ［ｊ］とを結合した領域を、オブジェクトＯの形状とする。また、その領域内の文字列（分離結果を結合した文字列）を、オブジェクトＯの文Ｓとする。その結果、オブジェクトＯが、分離後に新たに生成されたオブジェクトＯとなる。よって、生成されたオブジェクトＯ［ｘ］の領域とオブジェクトＯ［ｘ＋１］の領域；（ｘ＝１，．．．，Ｌ−１）は隣接し、文Ｓは、分離結果を結合した文字列（Ｓ［１］＋，．．．，Ｓ［Ｌ］）となる。つまり、分離部１３３は、まず、操作点により指定されたオブジェクトＯを、言語処理部１５により所定の単位で分離し、分離した文字又は文字列（分離結果）と分離結果に対応する分離領域を得る。次に分離部１３３は、操作点の位置からオブジェクトＯの分離位置を決定し、分離位置に従って、分離結果と分離領域とを再結合することで、分離後の新しい複数のオブジェクトＯを生成し、生成したオブジェクトＯと操作点とを対応づける。
【００９１】
図２０は、本実施形態に係るオブジェクトＯの分離例を示す図である。図２０に示すように、「長袖のシャツを着ています」の文Ｓに対応づけられたオブジェクトＯは、形態素ごとに８つに分離される。このとき、３つの操作点ｐ［１］，ｐ［２］，ｐ［３］のうち、２つの操作点ｐ［１］とｐ［２］とが「シャツ」の領域を指定し、操作点ｐ［３］が「着」の領域を指定しているとする。この場合、分離部１３３は、操作点の位置からオブジェクトＯの分離位置を決定し、分離位置に従って、分離結果と分離領域とを再結合する。これにより、分離部１３３は、「長袖のシャツ」の領域と「を着ています」の領域との互いに隣接しあう２つのオブジェクトＯ[１]，Ｏ［２］を生成する。その結果、分離部１３３は、オブジェクト分離ルーチンの出力として、分離数Ｌ＝２、操作点の集合Ｑ＝｛（ｐ［１］，Ｏ［１］，Ｏ’［１］），（ｐ［３］，Ｏ［２］，Ｏ’［２］）｝を出力する。
【００９２】
＜まとめ＞
以上のように、本実施形態に係る編集装置１００によれば、入力受付部１１で受け付けた入力データから、オブジェクト制御部１３が、編集時に操作可能な１又は複数のオブジェクトＯを生成する。本実施形態に係る編集装置１００は、表示部１２が、生成されたオブジェクトＯを表示し、オブジェクトＯの連結、結合、又は分離を指示するジェスチャー操作を受け付ける。本実施形態に係る編集装置１００は、オブジェクト制御部１３が、受け付けた操作に従って、操作時に指定されたオブジェクトＯに対して、連結、結合、又は分離の編集処理を行い、新たなオブジェクトＯを生成する。その結果、本実施形態に係る編集装置１００は、表示部１２が、生成された新たなオブジェクトＯを表示し、編集操作が反映された内容に編集画面を更新する。
【００９３】
これによって、本実施形態に係る編集装置１００は、入力データに対して直感的な操作が行える環境を提供する。その結果、本実施形態に係る編集装置１００では、編集操作が容易となり、また、言語の文法上、誤った箇所（誤認識）を自動修正するため、誤った箇所を修正するなどの編集作業の負担を軽減できる。これにより、本実施形態に係る編集装置１００は、ユーザに対する利便性の向上を図ることができる。また、本実施形態に係る編集装置１００は、オブジェクトＯの文Ｓを他のテキストエディタなどにコピーする、文Ｓを直接編集する、又はファイルに保存するなどの操作を可能とする機能拡張を、容易に実現できる。これにより、ユーザに対して、高い利便性のサービスを提供できる。
【００９４】
なお、上記実施形態では、入力された音声の認識結果から生成されたテキスト文を編集する場面を例に説明を行ったが、この限りでない。本実施形態に係る編集装置１００の機能（編集機能）は、例えば、記号や図形などの編集場面にも適用できる。
【００９５】
［変形例１］
＜概要＞
本変形例１は、連結操作に加えて、連結したオブジェクトに対応づけられた文に、他のオブジェクトに対応づけられた文を挿入する処理を提案する。例えば挿入操作は、分離操作により、オブジェクトを２つのオブジェクトに分離し、分離した一方のオブジェクトに、挿入する新たなオブジェクトを連結し、連結したオブジェクトに、分離した他方のオブジェクトをさらに連結すればよい。しかし、この場合、分離操作を１回、結合操作を２回、行わなければならず、その操作は煩雑である。そこで、本変形例１では、２つのオブジェクトの連結操作と同じ操作（操作回数）で、新たなオブジェクトを挿入することができる環境を提供する。これにより、ユーザに対する利便性の向上をさらに図ることができる。なお、以下の説明では、上記実施形態と異なる事項について説明を行い、同じ事項については、同一符号を付し、その説明を簡略又は省略する。
【００９６】
＜詳細＞
《挿入・連結処理》
図２１は、本変形例１に係る挿入・連結ルーチンの処理手順例を示すフローチャートである。図２１に示す処理は、図７に示すステップＳ４の連結ルーチンに代わり、実行可能な挿入・連結ルーチンの処理例である。本変形例１に係る挿入・連結ルーチンは、図９に示す連結ルーチンと、ステップＳ１１４〜Ｓ１１６の処理が異なる。
【００９７】
図２１に示すように、本変形例１に係る連結部１３１は、操作点ｐ［１］のイベント発生位置（ｘ，ｙ）が、オブジェクトＯ１以外のオブジェクトＯ２＝｛Ｓ２，［Ｐ２，Ｑ２］｝の内部にある場合（ステップＳ１１３：ＹＥＳ）、操作点ｐ［１］のイベント発生位置（ｘ，ｙ）が、オブジェクトＯ２の文字上か否かを判定する（ステップＳ１１４）。つまり、連結部１３１は、「ＰＵＳＨ  ＵＰ」イベントが発生した位置が、オブジェクトＯ２の文字上か、又は、オブジェクトＯ２の文字以外の領域内かを判定する。
【００９８】
具体的には、「ＰＵＳＨ  ＵＰ」イベントが発生した座標を（ｘ，ｙ）、オブジェクトＯ２の形状を［Ｐ，Ｑ］とし、Ｐ＝（Ｐｘ，Ｐｙ）、Ｑ＝（Ｑｘ，Ｑｙ）とする。この場合、判定処理を実行する時点では、イベント発生位置の座標（ｘ，ｙ）は、オブジェクトＯ２内にある。そのため、以下の（条件式１）から（条件式４）のいずれかの条件式を満たしていれば、オブジェクトＯ２の矩形の左右の辺のいずれかから、所定の距離ＴＨｘ以内、又は、上下の辺のいずれかから、所定の距離ＴＨｙ以内の位置にあることが分かる。
イベント発生位置の座標ｘ−オブジェクトＯ２の形状の座標Ｐｘ＜所定の閾値ＴＨｘ  ・・・  （条件式１）
オブジェクトＯ２の形状の座標Ｑｘ−イベント発生位置の座標ｘ＜所定の閾値ＴＨｘ  ・・・  （条件式２）
イベント発生位置の座標ｙ−オブジェクトＯ２の形状の座標Ｐｙ＜所定の閾値ＴＨｙ  ・・・  （条件式３）
オブジェクトＯ２の形状の座標Ｑｙ−イベント発生位置の座標ｙ＜所定の閾値ＴＨｙ  ・・・  （条件式４）
【００９９】
そこで、連結部１３１は、イベント発生位置の座標（ｘ，ｙ）が、この条件式を満たす場合、「ＰＵＳＨ  ＵＰ」イベントが、オブジェクトＯ２の文字以外の領域で発生したものと判定する。一方、連結部１３１は、イベント発生位置の座標（ｘ，ｙ）が、この条件式を満たさなかった場合、「ＰＵＳＨ  ＵＰ」イベントが、オブジェクトＯ２の文字上で発生したものと判定する。
【０１００】
その結果、連結部１３１は、「ＰＵＳＨ  ＵＰ」イベントが発生した位置が、オブジェクトＯ２の文字以外の領域内の場合（ステップＳ１１４：ＮＯ）、連結処理を行う（ステップＳ１１７〜Ｓ１２０）。
【０１０１】
一方、連結部１３１は、「ＰＵＳＨ  ＵＰ」イベントが発生した位置が、オブジェクトＯ２の文字上の場合（ステップＳ１１４：ＹＥＳ）、図１８に示すオブジェクト分離ルーチンと同じ処理により、オブジェクトＯ２の境界線（例えば「形態素ごとに分離した場合の各境界線」）を算出する。また、連結部１３１は、境界線の算出結果に基づき、イベント発生位置の座標（ｘ，ｙ）に最も近い境界で、オブジェクトＯ２の文Ｓ２を、文Ｓ２１と文Ｓ２２とに分離する（ステップＳ１１５）。例えばイベント発生位置の座標（ｘ，ｙ）が、分離領域Ｒ［ｉ］＝［Ａ［ｉ］，Ｂ［ｉ＋１］］に属し、Ａ［ｉ］のｘ座標をａ、Ｂ［ｉ＋１］のｘ座標をｂとする。この場合、イベント発生位置の座標（ｘ，ｙ）に最も近い境界は、境界線［Ａ［ｉ］，Ｂ［ｉ］］；（ｘ−ａ≦ｂ−ｘ）、又は、境界線［Ａ［ｉ＋１］，Ｂ［ｉ＋１］］；（ｘ−ａ＞ｂ−ｘ）のいずれかとなる。また、オブジェクトＯ１，Ｏ２の各文を、文Ｓ１，Ｓ２とすると、文Ｓ２１は、イベント発生位置の座標（ｘ，ｙ）に最も近い境界より左側に位置する文Ｓ２の分離文となる。また、文Ｓ２２は、イベント発生位置の座標（ｘ，ｙ）に最も近い境界より右側に位置する文Ｓ２の分離文となる。これにより、連結部１３１は、文Ｓ２１、文Ｓ１、文Ｓ２２の順に結合し、言語処理部１５において、結合文Ｓ’の修正文Ｓを生成する（ステップＳ１１６）。その後、連結部１３１は、ステップＳ１１８の処理に進み、連結処理を行う。
【０１０２】
その結果、ユーザは、文Ｓを挿入したい場合、画面上で、挿入したいオブジェクトＯ１を指で押さえ、オブジェクトＯ２の文字上に指を移動し、文字上の挿入位置で指を離せば、その位置に、指定したオブジェクトＯ１の文Ｓを挿入できる。また、文字上ではなく、オブジェクトＯ２の境界線近くで指を離せば、文Ｓを連結できる。
【０１０３】
このように、本変形例１は、上記挿入・連結ルーチンの処理により、２つのオブジェクトＯ１，Ｏ２の連結操作と同じ操作（操作回数）で、新たなオブジェクトＯを挿入することができる環境を提供する。これにより、本変形例１では、ユーザに対する利便性の向上をさらに図ることができる。
【０１０４】
［変形例２］
＜概要＞
上記実施形態では、テキストが左から右へ横方向に表示されるものであった。しかし、日本語のように横書きも縦書きも可能な言語もあれば、アラビア語のように右から左へ横書きする言語もある。さらにアラビア語の場合には、数字は左から右へ横書きする。このように、言語やテキストの内容によっては、書く方向、つまり読む方向（表示の向き）が異なる。そこで、本変形例２では、オブジェクトの結合時（連結時を含む）に、言語、文字の表記方向（縦書き又は横書き）、又は文の内容に応じて、文の結合順を決定する処理を提案する。これにより、ユーザに対する利便性の向上をさらに図ることができる。なお、以下の説明では、上記実施形態と異なる事項について説明を行い、同じ事項については、同一符号を付し、その説明を簡略又は省略する。
【０１０５】
＜詳細＞
《連結処理》
本変形例２では、言語、表記方向、内容に応じて、２つのオブジェクトＯの連結順を決定する２つの処理を説明する。具体的には、例えばアラビア語などの表記特徴を有する言語に対応した処理と、日本語などの表記特徴を有する言語に対応した処理である。なお、以下の処理では、言語処理部１５に、言語、表記方向、内容に応じて、オブジェクトＯに対応づけられた文Ｓの連結順を決定するルール（規則）が、予め定義されているものとする。
【０１０６】
図２２は、本変形例２に係る２つのオブジェクトの連結順を決定する処理手順例（その１）を示すフローチャートである。図２２に示す処理は、図９に示す連結ルーチンのステップＳ２４、図２１に示す挿入・連結ルーチンのステップＳ１１６，Ｓ１１７の処理に適用する処理例であり、アラビア語などの表記特徴を有する言語に対応した処理に相当する。本変形例２に係る連結部１３１は、言語処理部１５に定義されているルールに従って連結順を決定し、オブジェクトＯを連結し、新しいオブジェクトＯを生成する。
【０１０７】
図２２に示すように、本実施形態に係る連結部１３１は、オブジェクトＯ１＝｛Ｓ１，[Ｐ１，Ｑ１］｝に、オブジェクトＯ２＝｛Ｓ２，[Ｐ２，Ｑ２］｝を連結する。このとき連結部１３１は、オブジェクトＯ１（連結しようとしているオブジェクトＯ）に対するオブジェクトＯ２（連結されようとしているオブジェクトＯ）の連結方向を判別する（ステップＳ２００）。
【０１０８】
その結果、連結部１３１は、オブジェクトＯ１に対するオブジェクトＯ２の連結方向の判別結果に基づき、言語処理部１５に定義されているルールに従って決定した連結順に、オブジェクトＯ１に対応づけられた文Ｓ１とオブジェクトＯ２に対応づけられた文Ｓ２とを連結する。
【０１０９】
具体的には、連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より下の連結方向であった場合、オブジェクトＯ１に対応づけられた文Ｓ１に、オブジェクトＯ２に対応づけられた文Ｓ２を連結する（Ｓ＝Ｓ１＋Ｓ２；ステップＳ２０１）。また、連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より上の連結方向であった場合、オブジェクトＯ２に対応づけられた文Ｓ２に、オブジェクトＯ１に対応づけられた文Ｓ１を連結する（Ｓ＝Ｓ２＋Ｓ１；ステップＳ２０２）。このように、連結部１３１は、連結方向が上下の場合、上に位置するオブジェクトＯに対応づけられた文Ｓが文頭となるような連結順を決定する。
【０１１０】
また、連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より左の連結方向であった場合、オブジェクトＯ１とオブジェクトＯ２とがともに数字か否かを判定する（ステップＳ２０３）。その結果、連結部１３１は、２つのオブジェクトＯ１，Ｏ２がともに数字であった場合（ステップＳ２０３：ＹＥＳ）、オブジェクトＯ２に対応づけられた文Ｓ２に、オブジェクトＯ１に対応づけられた文Ｓ１を連結する（Ｓ＝Ｓ２＋Ｓ１；ステップＳ２０４）。このように、連結部１３１は、連結方向が左で、ともに数字の場合、左の文Ｓが右側となるような連結順を決定する。一方、連結部１３１は、２つのオブジェクトＯ１，Ｏ２のいずれかが数字でなかった場合（ステップＳ２０３：ＮＯ）、オブジェクトＯ１に対応づけられた文Ｓ１に、オブジェクトＯ２に対応づけられた文Ｓ２を連結する（Ｓ＝Ｓ１＋Ｓ２；ステップＳ２０５）。このように、連結部１３１は、連結方向が左で、どちらか一方が数字の場合、左の文Ｓが左側となるような連結順を決定する。
【０１１１】
また、連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より右の連結方向であった場合、オブジェクトＯ１とオブジェクトＯ２とがともに数字か否かを判定する（ステップＳ２０６）。その結果、連結部１３１は、２つのオブジェクトＯ１，Ｏ２がともに数字であった場合（ステップＳ２０６：ＹＥＳ）、オブジェクトＯ１に対応づけられた文Ｓ１に、オブジェクトＯ２に対応づけられた文Ｓ２を連結する（Ｓ＝Ｓ１＋Ｓ２；ステップＳ２０７）。このように、連結部１３１は、連結方向が右で、ともに数字の場合、右の文Ｓが左側となるような連結順を決定する。一方、連結部１３１は、２つのオブジェクトＯ１，Ｏ２のいずれかが数字でなかった場合（ステップＳ２０６：ＮＯ）、オブジェクトＯ２に対応づけられた文Ｓ２に、オブジェクトＯ１に対応づけられた文Ｓ１を連結する（Ｓ＝Ｓ２＋Ｓ１；ステップＳ２０８）。このように、連結部１３１は、連結方向が右で、どちらか一方が数字の場合、右の文Ｓが右側となるような連結順を決定する。
【０１１２】
図２３は、本変形例２に係る２つのオブジェクトの連結順を決定する処理手順例（その２）を示すフローチャートである。図２３に示す処理は、図９に示す連結ルーチンのステップＳ２４、図２１に示す挿入・連結ルーチンのステップＳ１１６，Ｓ１１７の処理に適用する処理例であり、日本語などの表記特徴を有する言語に対応した処理に相当する。図２２に示す処理との違いは、横書きと縦書きを判定している点である。具体的には、図２２のステップＳ２０３の数字判定処理の代わりに、横書き判定処理を行い、図２２のステップＳ２０６の数字判定処理の代わりに、縦書き判定処理を行う。
【０１１３】
図２３に示すように、本実施形態に係る連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より左の連結方向であった場合、横書きか否かを判定する（ステップＳ２１３）。その結果、連結部１３１は、横書きであった場合（ステップＳ２１３：ＹＥＳ）、オブジェクトＯ２に対応づけられた文Ｓ２に、オブジェクトＯ１に対応づけられた文Ｓ１を連結する（Ｓ＝Ｓ２＋Ｓ１；ステップＳ２１４）。このように、連結部１３１は、連結方向が左で、横書きの場合、左の文Ｓが右側となるような連結順を決定する。一方、連結部１３１は、横書きでなかった場合（ステップＳ２１３：ＮＯ）、オブジェクトＯ１に対応づけられた文Ｓ１に、オブジェクトＯ２に対応づけられた文Ｓ２を連結する（Ｓ＝Ｓ１＋Ｓ２；ステップＳ２１５）。このように、連結部１３１は、連結方向が左で、横書きでない場合、左の文Ｓが左側となるような連結順を決定する。
【０１１４】
また、連結部１３１は、オブジェクトＯ２がオブジェクトＯ１より右の連結方向であった場合、縦書きか否かを判定する（ステップＳ２１６）。その結果、連結部１３１は、縦書きであった場合（ステップＳ２１６：ＹＥＳ）、オブジェクトＯ１に対応づけられた文Ｓ１に、オブジェクトＯ２に対応づけられた文Ｓ２を連結する（Ｓ＝Ｓ１＋Ｓ２；ステップＳ２１７）。このように、連結部１３１は、連結方向が右で、縦書きの場合、右の文Ｓが左側となるような連結順を決定する。一方、連結部１３１は、縦書きでなかった場合（ステップＳ２１６：ＮＯ）、オブジェクトＯ２に対応づけられた文Ｓ２に、オブジェクトＯ１に対応づけられた文Ｓ１を連結する（Ｓ＝Ｓ２＋Ｓ１；ステップＳ２１８）。このように、連結部１３１は、連結方向が右で、縦書きでなかった場合、右の文Ｓが右側となるような連結順を決定する。
【０１１５】
なお、上記連結方向の判別は、次のように行う。図９に示す連結ルーチンにおいて、「ＰＵＳＨ  ＵＰ」イベントで検出されたときのオブジェクトＯ１の座標（ｘ１，ｙ１）、オブジェクトＯ２の座標（ｘ２，ｙ２）であった場合、連結部１３１は、以下（式８）〜（式１０）を算出する。
Ｄ  ＝  √（（ｘ１−ｘ２）２＋（ｙ１−ｙ２）２）  ・・・  （式８）
ｃｏｓθ  ＝  （ｘ１−ｘ２）／Ｄ  ・・・  （式９）
ｓｉｎθ  ＝  （ｙ１−ｙ２）／Ｄ  ・・・  （式１０）
【０１１６】
その結果、連結部１３１は、画面右方向がｘ軸正の方向、画面下方向がｙ軸正の方向であることから、条件式（｜ｃｏｓθ｜≦ＴＨｈ、かつ、ｓｉｎθ＞ＴＨｖ）を満たす場合、連結方向が上であると判別する。また、連結部１３１は、条件式（｜ｃｏｓθ｜≦ＴＨｈ、かつ、ｓｉｎθ＜−ＴＨｖ）を満たす場合、連結方向が下であると判別する。また、連結部１３１は、条件式（｜ｓｉｎθ｜≦ＴＨｖ、かつ、ｃｏｓθ＞ＴＨｈ）を満たす場合、連結方向が左であると判別する。また、連結部１３１は、条件式（｜ｓｉｎθ｜≦ＴＨｖ、かつ、ｃｏｓθ＜−ＴＨｈ）を満たす場合、連結方向が右であると判別する。なお、ＴＨｈ，ＴＨｖは、予め定められた閾値である。
【０１１７】
《結合処理》
図２４は、本変形例２に係る３つのオブジェクトの結合順を決定する処理手順例を示すフローチャートである。図２４に示す処理は、図１６に示す結合オブジェクト生成ルーチンのステップＳ７３の処理に適用する処理例であり、２つ以上のオブジェクトＯの結合に対応した処理に相当する。本変形例２に係る結合部１３２は、言語処理部１５に定義されているルールに従って結合順を決定し、オブジェクトＯを結合し、新しいオブジェクトＯを生成する。
【０１１８】
図２４に示すように、本実施形態に係る結合部１３２は、操作対象オブジェクト抽出ルーチンにより抽出されたオブジェクトＯ［ｍ］；（ｍ＝１，．．．，Ｍ）を受け取る。これを受けて、結合部１３２は、結合するＭ個のオブジェクトＯそれぞれについて、重心Ｃ＝（（Ｏ［１］の中心点Ｃ［１］＋，．．．，＋Ｏ［Ｍ］の中心点Ｃ［Ｍ］）／Ｍ）を算出する。また、このとき結合部１３２は、結合方向の上下左右ごとに、判別したオブジェクトＯ［ｍ］を保持する各配列Ｑｔ，Ｑｂ，Ｑｌ，Ｑｒ＝｛｝を初期化し（要素数０の集合とし）、ｍを０とする（ステップＳ２２０）。
【０１１９】
次に結合部１３２は、抽出されたすべてのオブジェクトＯ［ｍ］に対して、算出した重心Ｃに対する各オブジェクトＯ［ｍ］の結合方向を判別する（ステップＳ２２１：ＹＥＳ，Ｓ２２２，Ｓ２２３）。このとき結合部１３２は、上記連結ルーチンの連結方向と同様に、結合方向の判別を行う。
【０１２０】
その結果、結合部１３２は、結合方向の判別結果に基づき、判別されたオブジェクトＯ［ｍ］を、対応する配列Ｑｔ，Ｑｂ，Ｑｌ，Ｑｒに登録する（ステップＳ２２４〜Ｓ２２８）。具体的には、結合方向が上と判別された判別されたオブジェクトＯ［ｍ］を配列Ｑｔに登録する。また、結合方向が下と判別された判別されたオブジェクトＯ［ｍ］を配列Ｑｂに登録する。また、結合方向が左と判別された判別されたオブジェクトＯ［ｍ］を配列Ｑｌに登録する。また、結合方向が右と判別された判別されたオブジェクトＯ［ｍ］を配列Ｑｒに登録する。なお、Ｏ［ｍ］は、Ｑｘをバッファに、Ｑｔ，Ｑｂ，Ｑｌ，Ｑｒに登録される。
【０１２１】
結合部１３２は、抽出されたすべてのオブジェクトＯ［Ｍ］に対して、結合方向の判別処理が終わると（ステップＳ２２１：ＮＯ）、Ｑｔ，Ｑｂそれぞれの要素であるすべてのオブジェクトＯに対して、中心点のｙ座標の昇順にソートする。また、結合部１３２は、Ｑｌ，Ｑｒそれぞれの要素であるすべてのオブジェクトＯに対して、中心点のｘの昇順にソートする（ステップＳ２２９）。
【０１２２】
その結果、Ｑｔが、ソート後に｛Ｏ［１］，．．．，Ｏ［ｎ］｝となったとすると、Ｑｔ［１］のｙ座標≦，．．．，≦Ｑｔ［ｎ］のｙ座標である。このことから、「オブジェクトＯ［１］にオブジェクトＯ［２］を上方向から結合した文」とは、Ｏ［１］とＯ［２］との連結オブジェクトに対する結合方向の判別結果に基づき、上方向からオブジェクトＯ［２］を結合する場合の結合順を適用し、オブジェクトＯ［１］に対応づけられた文Ｓ［１］と、オブジェクトＯ［２］に対応づけられた文Ｓ［２］とを結合して得られる文Ｓｔに相当する。つまり、「ＱｔのＯ［ｎ］を上方向から結合した文」とは、Ｏ［１］にＯ［２］を上方向から結合した後に、さらにｎまでの各Ｏ［ｎ］を上方向から結合した文に相当する。このように、結合部１３２は、Ｑｔ，Ｑｂについて、ソート後のすべてのオブジェクトＯを上方向から結合した文Ｓｔ，Ｓｂを生成する。また、結合部１３２は、Ｑｌ，Ｑｒについて、ソート後のすべてのオブジェクトＯを右方向から結合した文Ｓｌ，Ｓｒを生成する（ステップＳ２３０）。最後に、結合部１３２は、文Ｓｔに、文Ｓｌを左方向から結合し、文Ｓｒを右方向から結合し、文Ｓｂを下方向から結合した文を、Ｍ個すべてのオブジェクトＯを結合した文Ｓとして出力する。
【０１２３】
なお、結合順によるオブジェクトＯの結合については、他の方法も考えられる。この場合、オブジェクトＯが、文Ｓと形状［Ｐ，Ｑ］以外に、生成された時刻を表す属性を、さらに有することが前提となる。例えば、結合部１３２は、生成された時刻が早いオブジェクトＯに対応づけられた文Ｓが、他のオブジェクトＯに対応づけられた文Ｓより文頭側となるように結合するルールに従って、各オブジェクトに対応づけられた文Ｓを結合すればよい。これにより、例えば、右から左に読む言語であれば、生成時刻の早いオブジェクトＯに対応づけられた文Ｓが、結合後に右側に位置することになる。
【０１２４】
このように、本変形例２は、上記処理により、結合方向（連結方向を含む）を判別し、判別結果から、言語、表記方向、内容に応じたルールに従って結合順（連結順を含む）を決定し、決定した結合順に複数のオブジェクトＯを結合できる環境を提供する。これにより、本変形例２では、ユーザに対する利便性の向上をさらに図ることができる。
【０１２５】
［第２の実施形態］
本実施形態は、オブジェクトに対するアクションオブジェクトを生成する処理を提案する。アクションオブジェクトとは、例えば編集時に操作可能な１つのオブジェクトに対して、動的に生成された１つのオブジェクトに相当する。このようなアクションオブジェクトは、少なくとも、生成元のオブジェクトに対応づけられた文から生成可能なデータを値とする属性を有する。なお、アクションオブジェクトは、必ずしも画面に表示される必要はないため、形状属性を有していなくてもよい。また、アクションオブジェクトは、生成元のオブジェクトと同期して処理される。アクションオブジェクトは、このような特性を有する。
【０１２６】
＜概要＞
図２５は、翻訳サービスの提供例を示す図である。図２５に示すように、例えば、音声入力による翻訳サービスでは、音声入力をテキスト化し、翻訳結果を生成する。このような翻訳サービスでは、入力音声が、画面右側に発話ごとにテキスト表示され、翻訳結果が、画面左側に表示される。この場合、アクションオブジェクトの属性は、音声入力（入力データ）から生成されたオブジェクトＯの翻訳文に相当する。
【０１２７】
例えば、ユーザが、日本語から英語に翻訳する翻訳サービスを、次のように利用したとする。ユーザは、「今日は暑いけれど」「長袖のシャツを」「着ています」と、区切って発声し、音声入力する。その結果、翻訳サービスでは、「今日は暑いけれど。」と「長袖のシャツを。」と「来ています。」という３つの文が表示され、それぞれの文を英語に翻訳した翻訳結果「It  is  hot  today,  though.」、「a  long-sleeved  shirt.」、「come.」が表示される。このような利用方法の翻訳結果は、原文が不完全な文の場合、翻訳を間違える可能性が高く、また、訳語としては正しくても文として意味をなさない可能性が高い。
【０１２８】
そこで、本実施形態では、３つに分かれた「今日は暑いけれど。」「長袖のシャツを。」「来ています。」のオブジェクトを結合し、「今日は暑いけれど、長袖のシャツを着ています。」に修正した新しいオブジェクトを生成する。このとき本実施形態では、新しいオブジェクトに対応するアクションオブジェクトを生成する。具体的には、「今日は暑いけれど、長袖のシャツを着ています。」の翻訳結果「”It  is  hot  today,  but  I  wear  a  long-sleeved  shirt.”」を属性として有するアクションオブジェクトを生成する。
【０１２９】
このように、本実施形態に係る編集装置は、入力データから、編集操作単位のオブジェクトを生成し、表示画面を介して受け付けたジェスチャー操作に従って、生成したオブジェクトの編集を行い、さらに、アクションオブジェクトを、生成元のオブジェクトの編集操作に同期して処理する仕組みとした。
【０１３０】
その結果、本実施形態に係る編集装置では、入力データに対して直感的な操作を行うことができ、編集操作が容易となり、誤った箇所を修正するなどの編集作業の負担を軽減できる。これにより、本実施形態に係る編集装置は、ユーザに対する利便性の向上を図ることができる。
【０１３１】
以下に、本実施形態に係る編集装置が有する機能の構成とその動作について説明する。なお、以下の説明では、入力された音声の認識結果から生成されたテキスト文を編集し翻訳する場面を例に説明を行う。また、以下の説明では、上記実施形態と異なる事項について説明を行い、同じ事項については、同一符号を付し、その説明を簡略又は省略する。
【０１３２】
《構成》
図２６は、本実施形態に係る編集装置１００の機能構成例を示す図である。図２６に示すように、本実施形態に係る編集装置１００は、上記実施形態で説明を行った各機能部に加えて、原文を翻訳する翻訳部１６を有する。翻訳部１６は、オブジェクト制御部１３で編集されたオブジェクトＯに対応づけられた文Ｓを、指定言語に翻訳し、翻訳結果を、オブジェクト制御部１３に渡す。これを受けて、オブジェクト制御部１３は、翻訳結果に基づき、オブジェクトＯに対応するアクションオブジェクトを生成する。このときオブジェクト制御部１３は、翻訳部１６から受け取った翻訳結果を属性の値とするアクションオブジェクトを生成する。このようにして生成されたアクションオブジェクトは、オブジェクト管理部１４により、生成元のオブジェクトＯに対応づけて管理される。
【０１３３】
以下に、本実施形態に係る編集装置１００で実行される編集機能の処理について説明する。
《処理》
図２７は、本実施形態に係る編集装置１００の処理手順例を示すフローチャートである。図２７に示す処理は、主にオブジェクト制御部１３が実行する。なお、本実施形態に係る編集装置１００では、オブジェクトＯの連結、結合、分離などの各種編集操作に加えて、オブジェクトＯの消去操作が可能である。図２７に示すように、本実施形態に係る編集装置１００は、例えば、電源がオフされるなどの装置が終了するまで（ステップＳ２４０：ＮＯ）、オブジェクト制御部１３により、以下の処理を実行する。
【０１３４】
本実施形態に係るオブジェクト制御部１３は、まず、入力データからオブジェクトを生成すると(ステップＳ２４１：ＹＥＳ)、生成したオブジェクトＯに対応するアクションオブジェクトを生成する(ステップＳ２４２)。このときオブジェクト制御部１３は、オブジェクト管理部１４に、生成したアクションオブジェクトを、生成元のオブジェクトＯに対応づけて保存する。また、このとき、表示部１２が、画面上の表示を更新してもよい。また、サービスを提供するソフトウェア（アプリケーション）が、アクションオブジェクトの生成に伴う所定の処理を実行してもよい。なお、オブジェクト制御部１３は、入力データからオブジェクトを生成しなかった場合（ステップＳ２４１：ＮＯ）、ステップＳ２４２の処理をスキップする。
【０１３５】
次にオブジェクト制御部１３は、オブジェクトＯに対して、編集操作が行われたか否かを判定する（ステップＳ２４３）。その結果、オブジェクト制御部１３は、オブジェクトＯが操作された場合（ステップＳ２４３：ＹＥＳ）、オブジェクトＯに対する編集操作を判別する（ステップＳ２４４）。なお、オブジェクト制御部１３は、オブジェクトＯに対して、編集操作が行われなかった場合（ステップＳ２４３：ＮＯ）、ステップＳ２４０の処理に移行する。
【０１３６】
その結果、オブジェクト制御部１３は、受け付けた編集操作が、連結操作又は結合操作の場合、連結又は結合により生成されたオブジェクトＯに対し、連結又は結合オブジェクトの文Ｓから生成可能なデータを属性として設定した新しいアクションオブジェクト（連結又は結合オブジェクトに対応するアクションオブジェクト）を生成する（ステップＳ２４５）。
【０１３７】
また、オブジェクト制御部１３は、受け付けた編集操作が、分離操作の場合、分離により生成されたオブジェクトＯに対し、分離オブジェクトの文Ｓから生成可能なデータを属性として設定した新しいアクションオブジェクト（分離オブジェクトに対応するアクションオブジェクト）を生成する（ステップＳ２４６）。
【０１３８】
また、オブジェクト制御部１３は、受け付けた編集操作が、消去操作の場合、消去対象のオブジェクトＯに対応するアクションオブジェクトを消去する（ステップＳ２４７）。このときオブジェクト制御部１３は、オブジェクト管理部１４から、該当するアクションオブジェクトを、対応するオブジェクトＯとともに消去する。また、このとき、表示部１２が、画面上の表示を更新してもよい。また、サービスを提供するソフトウェア（アプリケーション）が、アクションオブジェクトの消去に伴う所定の処理を実行してもよい。
【０１３９】
＜まとめ＞
以上のように、本実施形態に係る編集装置１００によれば、入力受付部１１で受け付けた入力データから、オブジェクト制御部１３が、編集時に操作可能な１又は複数のオブジェクトＯを生成する。本実施形態に係る編集装置１００は、表示部１２が、生成されたオブジェクトＯを表示し、オブジェクトＯの連結、結合、又は分離を指示するジェスチャー操作を受け付ける。本実施形態に係る編集装置１００は、オブジェクト制御部１３が、受け付けた操作に従って、操作時に指定されたオブジェクトＯに対して、連結、結合、又は分離の編集処理を行い、新たなオブジェクトＯを生成する。このときオブジェクト制御部１３は、連結、結合、又は分離の編集処理を行ったオブジェクトＯから生成可能なデータを属性とするアクションオブジェクトと生成する。その結果、本実施形態に係る編集装置１００は、表示部１２が、生成された新たなオブジェクトＯを表示し、編集操作が反映された内容に編集画面を更新する。
【０１４０】
これによって、本実施形態に係る編集装置１００は、入力データに対して直感的な操作が行える環境を提供するとともに、生成したアクションオブジェクトを、生成元のオブジェクトＯの編集操作に同期して処理する。その結果、本実施形態に係る編集装置１００では、翻訳などの各種サービスでの編集操作が容易となり、また、言語の文法上、誤った箇所（誤認識）を自動修正するため、誤った箇所を修正するなどの編集作業の負担を軽減できる。これにより、本実施形態に係る編集装置１００は、ユーザに対する利便性の向上を図ることができる。
【０１４１】
なお、上記実施形態では、入力された音声の認識結果から生成されたテキスト文を編集し翻訳する場面を例に説明を行ったが、この限りでない。本実施形態に係る編集装置１００の機能（編集機能）は、例えば、商品の注文履歴を管理するサービスなどの編集場面にも適用できる。
【０１４２】
［変形例３］
本変形例３は、上記実施形態に係る編集装置１００を、商品の注文履歴を管理するサービス（以下「商品管理サービス」という）に適用した場合について説明する。なお、以下の説明では、上記実施形態と異なる事項について説明を行い、同じ事項については、同一符号を付し、その説明を簡略又は省略する。
【０１４３】
＜概要＞
本変形例３の適用例の場合、オブジェクト制御部１３は、例えば、受け付けた注文のオブジェクトＯから、注文品名と個数などを属性として有するアクションオブジェクトを生成する。また、商品の注文履歴を管理するため、アクションオブジェクトは、生成時刻を属性として有する。
【０１４４】
図２８は、商品管理サービスの提供例を示す図である。図２８に示すように、例えば、音声入力による商品管理サービスでは、音声入力をテキスト化し、商品の注文の受付結果を生成する。このような商品管理サービスでは、受け付けた注文内容が、画面左側に商品ごとに表示され、注文履歴に相当する受付結果が、入力履歴として画面右側に表示される。
【０１４５】
例えば、ユーザが、商品管理サービスを、次のように利用したとする。ユーザは、最初に「商品Ａを１個と商品Ｂを３個」という注文を発声し、音声入力する。その結果、翻訳サービスでは、図２８（Ａ）に示すように、「商品Ａを１個と商品Ｂを３個」というオブジェクトＯが生成され、属性が「商品Ａ  １個」と「商品Ｂ  ３個」とを有するアクションオブジェクトが生成され、表示される。
【０１４６】
続いて、ユーザは、「商品Ｂは・・・１個に変更」と注文の変更を発生したとする。このとき、「商品Ｂは」と「１個に変更」とに区切って発声した場合、図２８（Ｂ）に示すように、入力音声が誤って認識され、「商品Ｂは」の「は」が欠落し、２つの文に分かれたとする。この場合、商品管理サービスでは、認識結果の「商品Ｂ」から、商品Ｂを１個注文したと判断し、商品Ｂの注文を１個追加し、アクションオブジェクトの個数を表す属性が、「商品Ａ  １個」と「商品Ｂ  ４個」とに更新される。また、商品管理サービスでは、認識結果の「１個に変更」について、商品名が不明であることから、商品名を指定するよう、ユーザに対して、所定のメッセージを通知する。
【０１４７】
ここで、ユーザは、図２８（Ｃ）に示すような編集操作（変更内容の修正）を行う。これを受けて、商品管理サービスは、編集操作に従って、「１個に変更」のオブジェクトＯを、「商品Ｂ」のオブジェクトＯに連結する。その結果、商品管理サービスは、まず、修正した「商品Ｂ」と「１個に変更」の２つのオブジェクトを消去し、これらのオブジェクトＯに対応するアクションオブジェクトも消去する。さらに、商品管理サービスは、オブジェクト管理部１４で管理されるアクションオブジェクトの生成時刻を表す属性を参照し、注文履歴上、最も古い時刻に該当するアクションオブジェクトを特定する。つまり、商品管理サービスでは、最初に入力された「商品Ａ  １個」と「商品Ｂ  ３個」との注文内容を属性とするアクションオブジェクトを特定する。
【０１４８】
その後、商品管理サービスは、連結したオブジェクト「商品Ｂは１個に変更」に対し、先に特定したアクションオブジェクトの注文内容「商品Ｂ  ３個」を１個に更新する。次に商品管理サービスは、「商品Ａ  １個」と「商品Ｂ  １個」との注文内容を属性とするアクションオブジェクトを生成する。これにより、商品管理サービスでは、「商品Ｂは１個に変更」のオブジェクトＯに対応する新しいアクションオブジェクトが生成される。その結果、商品管理サービスでは、図２８（Ｄ）に示すように、「商品Ｂは１個に変更」のオブジェクトＯが表示され、画面表示が更新される。
【０１４９】
商品管理サービスでは、このような入力と編集処理を繰り返し、ユーザの注文が完了すると、最新の生成時刻を属性とするアクションオブジェクトが、該当商品の注文内容として確定する。
【０１５０】
このように、上記実施形態に係る編集装置１００は、音声入力を用いた商品管理サービスに適用することができ、ユーザに対する利便性の向上を図ることができる。
【０１５１】
＜装置＞
図２９は、上記実施形態に係る編集装置１００の構成例を示す図である。図２９に示すように、実施形態に係る編集装置１００は、ＣＰＵ（Central  Processing  Unit）１０１、及び主記憶装置１０２などを備える。また、編集装置１００は、補助記憶装置１０３、通信ＩＦ（interface）１０４、外部ＩＦ１０５、ドライブ装置１０７、及び表示装置１０９などを備える。編集装置１００は、各デバイスがバスＢを介して相互に接続される。このように、実施形態に係る編集装置１００は、例えば、スマートフォンやタブレットなどの一般的な情報端末（情報処理装置）に相当する。つまり、実施形態に係る編集装置１００は、ユーザの操作を受け付けることができ、受け付けた操作に従って、指示された処理が実行可能な機器であればよい。
【０１５２】
ＣＰＵ１０１は、装置全体の制御や搭載機能を実現するための演算装置である。主記憶装置１０２は、プログラムやデータなどを所定の記憶領域に保持する記憶装置（メモリ）である。主記憶装置１０２は、例えば、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などである。また、補助記憶装置１０３は、主記憶装置１０２より容量の大きい記憶領域を備える記憶装置である。補助記憶装置１０３は、例えば、ＨＤＤ（Hard  Disk  Drive）やメモリカード（Memory  Card）などの不揮発性の記憶装置である。よって、ＣＰＵ１０１は、例えば、補助記憶装置１０３から主記憶装置１０２上に、プログラムやデータを読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する。
【０１５３】
通信ＩＦ１０４は、装置をデータ伝送路Ｎに接続するインタフェースである。これにより、編集装置１００は、データ伝送路Ｎを介して接続される他の外部機器（他の情報処理装置）とデータ通信が行える。外部ＩＦ１０５は、編集装置１００と外部装置１０６との間でデータを送受信するためのインタフェースである。外部装置１０６には、例えば、操作入力を受け付ける入力装置（例えば「テンキー」又は「キーボード」）などがある。ドライブ装置１０７は、記憶媒体１０８の書き込み又は読み取りを行う制御装置である。記憶媒体１０８は、例えば、フレキシブルディスク（ＦＤ）、ＣＤ（Compact  Disk）、及びＤＶＤ（Digital  Versatile  Disk）などである。表示装置１０９は、例えば、液晶ディスプレイなどであり、処理結果などの各種情報を画面に表示する装置である。また、表示装置１０９は、画面上の接触又は非接触などを検知するセンサ（例えば「タッチセンサ」）などを備える。これにより、編集装置１００は、画面を介した各種操作（例えば「ジェスチャー操作」）を受け付ける。
【０１５４】
また、上記実施形態に係る編集機能は、例えば、編集装置１００において、プログラムを実行することで、上記各機能部が連携動作することで実現される。この場合、プログラムは、実行環境の装置（コンピュータ）が読み取り可能な記憶媒体に、インストール可能な形式又は実行可能な形式のファイルで記録され提供される。例えば、編集装置１００の場合には、プログラムは、上記各機能部を含むモジュール構成となっており、ＣＰＵ１０１が記憶媒体１０８からプログラムを読み出し実行することで、主記憶装置１０２のＲＡＭ上に各機能部が生成される。なお、プログラムの提供方法は、この限りでない。例えば、プログラムを、インターネットなどに接続された外部機器に格納し、データ伝送路Ｎ経由でダウンロードする方法であってもよい。また、主記憶装置１０２のＲＯＭや補助記憶装置１０３のＨＤＤなどに予め組み込んで提供する方法であってもよい。なお、ここでは、編集機能をソフトウェアの実装により実現する例を説明したが、この限りでない。例えば、編集機能が有する各機能部の一部又は全部を、ハードウェアの実装により実現してもよい。
【０１５５】
また、上記実施形態では、編集装置１００が、入力受付部１１、表示部１２、オブジェクト制御部１３、オブジェクト管理部１４、言語処理部１５、及び翻訳部１６などの一部又は全部を有する構成について説明を行ったが、この限りでない。例えば、編集装置１００が、これらの機能部の一部の機能（例えば「言語処理部１５」や「翻訳部１６」）を有する外部機器と、通信ＩＦ１０４を介して接続され、接続された外部機器とデータ通信を行うことで、各機能部が連携動作し、上記編集機能を提供する構成であってもよい。これにより、本実施形態に係る編集装置１００は、クラウド環境などにも適用できる。
【０１５６】
最後に、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５７】
１１    入力受付部
１２    表示部
１３    オブジェクト制御部
１４    オブジェクト管理部
１５    言語処理部
１６    翻訳部
１００  編集装置
【図１】
2014202832.tif 000003
【図２】
2014202832.tif 000004
【図３】
2014202832.tif 000005
【図４】
2014202832.tif 000006
【図５】
2014202832.tif 000007
【図６】
2014202832.tif 000008
【図７】
2014202832.tif 000009
【図８】
2014202832.tif 000010
【図９】
2014202832.tif 000011
【図１０】
2014202832.tif 000012
【図１１】
2014202832.tif 000013
【図１２】
2014202832.tif 000014
【図１３】
2014202832.tif 000015
【図１４】
2014202832.tif 000016
【図１５】
2014202832.tif 000017
【図１６】
2014202832.tif 000018
【図１７】
2014202832.tif 000019
【図１８】
2014202832.tif 000020
【図１９】
2014202832.tif 000021
【図２０】
2014202832.tif 000022
【図２１】
2014202832.tif 000023
【図２２】
2014202832.tif 000024
【図２３】
2014202832.tif 000025
【図２４】
2014202832.tif 000026
【図２５】
2014202832.tif 000027
【図２６】
2014202832.tif 000028
【図２７】
2014202832.tif 000029
【図２８】
2014202832.tif 000030
【図２９】
2014202832.tif 000031
【手続補正書】
【提出日】平成26年2月6日(2014.2.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
ここで、オブジェクト制御部１３が生成するオブジェクトについて説明する。オブジェクトは、編集時の操作対象に相当し、認識結果の属性と認識結果を表示する表示領域の属性とを有するデータである。例えば、テキストが認識結果として出力される場合に生成されるオブジェクト（以下「オブジェクトＯ」という）は、文属性と形状属性との２つの属性を有する。この場合、文属性の値（以下「文Ｓ」という）は、テキスト（文字又は文字列）で表現される文（認識結果）となる。また、形状属性の値は、テキストが表示される表示領域の形状を表す画面上の座標となる。具体的には、画面左上隅を原点として、水平方向右向きを正の方向とするｘ軸と、垂直方向下向きを正の向きとするｙ軸との座標系で表現された２つの座標点Ｐ＝（ｘ１，ｙ１）及びＱ＝（ｘ２，ｙ２）；（ｘ１＜ｘ２，ｙ１＜ｙ２）の組［Ｐ，Ｑ］（以下「形状［Ｐ，Ｑ］」という）である。このような形状属性の２つの座標値からは、左上隅（ｘ１，ｙ１）、右上隅（ｘ２，ｙ１）、右下隅（ｘ２，ｙ２）、左下隅（ｘ１，ｙ２）を各頂点とする矩形が一意に定まる。よって、［Ｐ，Ｑ］は、オブジェクトＯの領域（オブジェクト領域）が矩形に相当することを表している。なお、以下の説明では、文Ｓと形状［Ｐ，Ｑ］との各属性の値を有するオブジェクトＯを｛Ｓ，［Ｐ，Ｑ］｝と表す。また、座標点ＰとＱとの中点（＝（Ｐ＋Ｑ）／２）を、オブジェクトＯの中心点、又は、オブジェクトＯの座標という。また、オブジェクトＯが、認識結果を文Ｓとして有する場合には、「オブジェクトＯに対応づけられた文Ｓ」又は「文Ｓに対応づけられたオブジェクトＯ」と表現する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
図１８に示すように、本実施形態に係る分離部１３３は、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ，Ｏ’），．．．，（ｑ［Ｋ］，Ｏ，Ｏ’）｝を受け取る。なお、Ｋは、検出した操作点の総数である。これを受けて、分離部１３３は、まず、Ｑの操作点ｑ［ｋ］を、ｙ座標の昇順（ｑ［ｋ］のｙ座標＜ｑ［ｋ＋１］のｙ座標）となるようにソートする。分離部１３３は、ソート後の配列Ｑ［ｋ］を、あらためて、操作点の集合Ｑ＝｛（ｑ［１］，Ｏ，Ｏ’），．．．，（ｑ［Ｋ］，Ｏ，Ｏ’）｝とする（ステップＳ９０）。なお、このとき分離部１３３は、ｙ座標が同じ場合、ｘ座標について昇順（ｑ［ｋ］のｘ座標＜ｑ［ｋ＋１］のｘ座標）となるようにソートしてもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
その結果、連結部１３１は、画面右方向がｘ軸正の方向、画面下方向がｙ軸正の方向であることから、条件式（｜ｓｉｎθ｜≦ＴＨｈ、かつ、ｃｏｓθ＞ＴＨｖ）を満たす場合、連結方向が上であると判別する。また、連結部１３１は、条件式（｜ｓｉｎθ｜≦ＴＨｈ、かつ、ｃｏｓθ＞ＴＨｖ）を満たす場合、連結方向が下であると判別する。また、連結部１３１は、条件式（｜ｃｏｓθ｜≦ＴＨｖ、かつ、ｓｉｎθ＜−ＴＨｈ）を満たす場合、連結方向が左であると判別する。また、連結部１３１は、条件式（｜ｃｏｓθ｜≦ＴＨｖ、かつ、ｓｉｎθ＞ＴＨｈ）を満たす場合、連結方向が右であると判別する。なお、ＴＨｈ，ＴＨｖは、予め定められた閾値である。