(57)【特許請求の範囲】
【請求項１】
マーキング支援サーバが行うマーキング支援方法であって、
複数のユーザのコンテンツへのマーキング操作履歴を用いて、共通してマーキングされた共通文字列を抽出する抽出ステップと、
前記コンテンツにおいて、前記共通文字列の直前の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直前の文字を含む形態素を前記共通文字列に追加するとともに、前記コンテンツにおいて、前記共通文字列の直後の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直後の文字を含む形態素を前記共通文字列に追加する追加ステップと、
前記追加ステップ後の共通文字列を、マーキング候補文字列として出力する出力ステップと、を行い、
前記直前の文字を含む形態素は、前記共通文字列の直前の文字の前後の文字列に対して形態素解析エンジンを用いて形態素解析を実行することで取得され、前記直後の文字を含む形態素は、前記共通文字列の直後の文字の前後の文字列に対して前記形態素解析エンジンを用いて形態素解析を実行することで取得されること
を特徴とするマーキング支援方法。
【請求項２】
請求項１記載のマーキング支援方法であって、
前記抽出ステップで抽出した共通文字列において、前記マーキング操作履歴を用いて、所定の操作条件で当該共通文字列をマーキングした割合が、所定の閾値以上か否かを判別する判別ステップをさらに行い、
前記割合が前記所定の閾値以上の場合、前記追加ステップは行わず、
前記出力ステップは、前記抽出ステップで抽出した共通文字列を、マーキング候補文字列として出力すること
を特徴とするマーキング支援方法。
【請求項３】
請求項１または請求項２記載のマーキング支援方法であって、
前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、
前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列をハイライト表示する表示ステップと、をさらに行うこと
を特徴とするマーキング支援方法。
【請求項４】
請求項１または請求項２記載のマーキング支援方法であって、
前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、
前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列を前記マーキング操作に追従してハイライト表示する第１の表示ステップと、
前記マーキング候補文字列とは異なる他の文字へのマーキング操作が検出された場合、前記他の文字については、前記マーキング操作に遅れてハイライト表示する第２の表示ステップと、をさらに行うこと
を特徴とするマーキング支援方法。
【請求項５】
コンピュータが行うマーキング支援方法であって、
コンテンツにおけるマーキング候補文字列を、サーバから受信する受信ステップと、
前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、
前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列をハイライト表示する表示ステップと、を行うこと
を特徴とするマーキング支援方法。
【請求項６】
コンピュータが行うマーキング支援方法であって、
コンテンツにおけるマーキング候補文字列を、サーバから受信する受信ステップと、
前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、
前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列を前記マーキング操作に追従してハイライト表示する第１の表示ステップと、
前記マーキング候補文字列とは異なる他の文字へのマーキング操作が検出された場合、前記他の文字については、前記マーキング操作に遅れてハイライト表示する第２の表示ステップと、を行うこと
を特徴とするマーキング支援方法。
【請求項７】
マーキング支援サーバであって、
複数のユーザのコンテンツへのマーキング操作履歴を用いて、共通してマーキングされた共通文字列を抽出する抽出部と、
前記コンテンツにおいて、前記共通文字列の直前の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直前の文字を含む形態素を前記共通文字列に追加するとともに、前記コンテンツにおいて、前記共通文字列の直後の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直後の文字を含む形態素を前記共通文字列に追加する調整部と、
前記調整部による追加後の共通文字列を、マーキング候補文字列として出力する出力部と、を備え、
前記直前の文字を含む形態素は、前記共通文字列の直前の文字の前後の文字列に対して形態素解析エンジンを用いて形態素解析を実行することで取得され、前記直後の文字を含む形態素は、前記共通文字列の直後の文字の前後の文字列に対して前記形態素解析エンジンを用いて形態素解析を実行することで取得されること
を特徴とするマーキング支援サーバ。
【請求項８】
コンピュータであって、
コンテンツにおけるマーキング候補文字列を、サーバから受信する受信部と、
前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得部と、
前記取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列をハイライト表示する表示部と、を備えること
を特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツの文字列をハイライト表示する技術に関する。
【背景技術】
【０００２】
従来、デジタルデバイス上に表示するコンテンツ（電子ファイル）に対して、文字列（テキスト）をハイライト表示する機能を提供するサービスまたはアプリケーションが存在する。例えばPDF(Portable Document Format) 文書に対しては、Adobe Reader が提供する注釈機能によって、閲覧者は、テキストの一部をハイライト表示させることができる（非特許文献１参照）。また、Firefox ブラウザにインストールすることで、閲覧中のウェブページにマーカーを引くことができるアドオンも存在する（非特許文献２参照)。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ADOBE、「Acrobat Help / Adobe Reader の注釈機能 （Adobe Reader X）」、インターネット、＜URL：https://helpx.adobe.com/jp/acrobat/kb/4561.html＞
【非特許文献２】WiredMarker、「ブックマーク、情報収集・整理・共有のためのFirefox無料アドオン」、インターネット、＜URL：http://www.wired-marker.org/index.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デジタルデバイス上で文字列をハイライト表示させるには、前述した非特許文献２のように、閲覧者はマウスやスタイラスペン、指などの入力手段によって、ハイライト表示させる文字列の範囲を始点から終点までなぞる操作で指定するのが一般的である。これは、紙媒体の書類にマーカーペンでマーカーを引くときと同じような操作である。
【０００５】
タブレット、スマートフォンなどのスクリーンサイズの小さいデジタルデバイスにコンテンツを表示させ、ハイライト表示させる文字列の範囲の指定をスタイラスペンまたは指でおこなうときには、表示されている文字列の文字サイズが小さいことがあるために、範囲を正しく指定しにくい。また、急いでいるときにはハイライト表示させる範囲指定が雑になりやすく、閲覧者の意図した通りに範囲指定を行いにくい。
【０００６】
これにより、文字列の範囲指定に失敗し、範囲指定をやり直す回数が増加してしまったり、範囲指定の失敗を防ぐためにピンチアウトなどの操作によってコンテンツを拡大表示する必要などが生じてしまうという課題がある。
【０００７】
また、範囲指定に失敗したにも関わらず、範囲指定をやり直すことができないことにより、例えば指定した文字列の範囲をコピーアンドペーストするなどの範囲指定後の処理、または、指定した範囲の活用時における閲覧者の利便性を損なってしまうという課題がある。
【０００８】
本発明は、上記課題に鑑みてなされたものであり、本発明の目的は、コンテンツの一部の文字列をハイライト表示させる際に、ユーザのマーキング操作を支援し、ユーザの利便性を向上することにある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、本発明は、マーキング支援サーバが行うマーキング支援方法であって、複数のユーザのコンテンツへのマーキング操作履歴を用いて、共通してマーキングされた共通文字列を抽出する抽出ステップと、前記コンテンツにおいて、前記共通文字列の直前の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直前の文字を含む形態素を前記共通文字列に追加するとともに、前記コンテンツにおいて、前記共通文字列の直後の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直後の文字を含む形態素を前記共通文字列に追加する追加ステップと、前記追加ステップ後の共通文字列を、マーキング候補文字列として出力する出力ステップと、を行い、前記直前の文字を含む形態素は、前記共通文字列の直前の文字の前後の文字列に対して形態素解析エンジンを用いて形態素解析を実行することで取得され、前記直後の文字を含む形態素は、前記共通文字列の直後の文字の前後の文字列に対して前記形態素解析エンジンを用いて形態素解析を実行することで取得される。
【００１０】
本発明は、コンピュータが行うマーキング支援方法であって、コンテンツにおけるマーキング候補文字列を、サーバから受信する受信ステップと、前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列をハイライト表示する表示ステップと、を行う。
【００１１】
本発明は、コンピュータが行うマーキング支援方法であって、コンテンツにおけるマーキング候補文字列を、サーバから受信する受信ステップと、前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得ステップと、前記取得ステップで取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列を前記マーキング操作に追従してハイライト表示する第１の表示ステップと、前記マーキング候補文字列とは異なる他の文字へのマーキング操作が検出された場合、前記他の文字については、前記マーキング操作に遅れてハイライト表示する第２の表示ステップと、を行う。
【００１２】
本発明は、マーキング支援サーバであって、複数のユーザのコンテンツへのマーキング操作履歴を用いて、共通してマーキングされた共通文字列を抽出する抽出部と、前記コンテンツにおいて、前記共通文字列の直前の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直前の文字を含む形態素を前記共通文字列に追加するとともに、前記コンテンツにおいて、前記共通文字列の直後の文字を含む形態素の一部が、前記共通文字列に含まれている場合、前記直後の文字を含む形態素を前記共通文字列に追加する調整部と、前記調整部による追加後の共通文字列を、マーキング候補文字列として出力する出力部と、を備え、前記直前の文字を含む形態素は、前記共通文字列の直前の文字の前後の文字列に対して形態素解析エンジンを用いて形態素解析を実行することで取得され、前記直後の文字を含む形態素は、前記共通文字列の直後の文字の前後の文字列に対して前記形態素解析エンジンを用いて形態素解析を実行することで取得される。
【００１３】
本発明は、コンピュータであって、コンテンツにおけるマーキング候補文字列を、サーバから受信する受信部と、前記コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応する前記コンテンツの文字を取得する取得部と、前記取得した文字が、前記マーキング候補文字列に含まれている場合、前記コンテンツ上の前記マーキング候補文字列をハイライト表示する表示部と、を備える。
【発明の効果】
【００１４】
本発明によれば、コンテンツの一部の文字列をハイライト表示させる際に、ユーザのマーキング操作を支援し、ユーザの利便性を向上することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態におけるマーキング支援システムの構成図である。
【図２】始点終点抽出部の構成を示すブロック図である。
【図３】コンテンツDBのデータ構造の一例を示す図である。
【図４】操作履歴DBのデータ構造の一例を示す図である。
【図５】マーカーDBのデータ構造の一例を示す図である。
【図６】ハイライトDBのデータ構造の一例を示す図である。
【図７】マーカー表示部の構成を示すブロック図である。
【図８】サーバの始点終点抽出部の処理の一例を示すフローチャートである。
【図９】サーバの始点終点抽出部の処理の変形例を示すフローチャートである。
【図１０】クライアントのマーカー表示部の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を、図面を参照して説明する。
【００１７】
図１は、本発明の実施形態におけるマーキング支援システムの全体構成を示す図である。図示するマーキング支援システムは、ユーザが使用するクライアント１（コンピュータ、デジタルデバイスなど）と、サーバ２（マーキング支援装置）とを備え、これらの装置は、インターネットなどのネットワークにより接続される。
【００１８】
サーバ２は、コンテンツ取得部２１と、始点終点抽出部２２と、コンテンツDB２３と、操作履歴DB２４と、操作履歴更新部２５と、マーカーDB２６とを備える。
【００１９】
コンテンツ取得部２１は、クライアント１（コンテンツ要求送信部１１）からのコンテンツCの取得要求を受信し、コンテンツDB２３からコンテンツCの電子ファイルFCを取得するとともに、マーカーDB２６からコンテンツCに関するマーカー情報MCを取得し、これらの情報をクライアント（コンテンツ受信部１２）に送信する。
【００２０】
始点終点抽出部２２は、操作履歴DB２４を用いて、コンテンツDB２３に格納されている各コンテンツに対して、マーカーが引かれやすいと推測される文字列（テキスト範囲）をマーキング候補文字列として抽出し、抽出したマーキング候補文字列に関する情報をマーカーDB２６に格納する。このとき、１つのコンテンツから抽出するマーキング候補文字列は複数あってもよい。
【００２１】
始点終点抽出部２２は、操作履歴DB２４に新しいレコードが追加されたタイミングで、処理を実行するようにしてもよいし、あるいは、一定時間間隔で処理を実行するようにしてもよい。つまり、マーカーDB２６は、随時更新される。ただし、同一のレコードがすでにマーカーDB２６に格納されている場合は、新たに同一のレコードを格納する必要はない。
【００２２】
図２は、本実施形態の始点終点抽出部２２の具体的な構成を示すブロック図である。図示する始点終点抽出部２２は、抽出部２２１と、調整部２２２と、出力部２２３とを備える。抽出部２２１は、複数のユーザのコンテンツへの操作履歴DB２４を用いて、共通してマーキングされた共通文字列を抽出する。
【００２３】
調整部２２２は、共通文字列の直前の文字を含む形態素の一部が共通文字列に含まれている場合、直前の文字を含む形態素を共通文字列に追加するとともに、共通文字列の直後の文字を含む形態素の一部が共通文字列に含まれている場合、直後の文字を含む形態素を共通文字列に追加して、共通文字列を調整する。また、調整部２２２は、抽出した共通文字列において、操作履歴DB２４を用いて、所定の操作条件で当該共通文字列をマーキングした割合が、所定の閾値以上か否かを判別する処理を行い、判別結果に応じて、前記調整処理を行うか否かを決定することとしてもよい。出力部２２３は、調整後の共通文字列を、マーキング候補文字列としてマーカーＤＢ２６に出力する。
【００２４】
図３は、コンテンツDB２３のデータ構造の一例を示す図である。コンテンツDB２３は、コンテンツに関する情報を管理するためのDBであって、１つのレコードが１つのコンテンツ（電子ファイル）に関する情報を保持している。
【００２５】
図示するコンテンツDB２３は、コンテンツID カラムとコンテンツカラムとを備える。コンテンツID カラムには、コンテンツを一意に識別可能なID が格納される。また、コンテンツカラムには、コンテンツファイルが格納される。コンテンツファイルのファイル形式は所定の形式に限定されず、どのようなものであってもよく、例えば、PDF、word、html などの様々なファイル形式を用いることができる。
【００２６】
図４は、操作履歴DB２４のデータ構造の一例を示す図である。操作履歴DB２４は、複数のユーザが行ったマーキング操作の履歴情報が記憶されるデータベースである。図示する操作履歴DB２４は、ユーザID カラム、コンテンツID カラム、文字列カラム、始点カラム、終点カラムなどを含む。
【００２７】
ユーザID カラムには、ユーザを一意に識別可能なID が格納される。コンテンツID カラムには、コンテンツを一意に識別可能なID が格納される。文字列カラムには、ユーザがコンテンツ内でハイライト表示させた一続きの文字列（テキスト）が格納される。始点カラムには、前記文字列の開始位置を示すコンテンツ内の絶対座標が、終点カラムには前記文字列の終了位置を示すコンテンツ内の絶対座標がそれぞれ格納される。
【００２８】
操作履歴更新部２５は、クライアント１（マーカー表示部１４）からコンテンツDB２３ に格納されたいずれかのコンテンツについて、当該コンテンツを閲覧しているユーザが所定の箇所の文字列をハイライト表示させたマーキング操作情報を取得し、操作情報（レコード）を操作履歴DB２４に登録する。
【００２９】
図５は、マーカーDB２６のデータ構造の一例を示す図である。マーカーDB２６には、始点終点抽出部２２が抽出したマーキング候補文字列に関する情報が記憶されるデータベースである。図示するマーカーDB２６は、コンテンツID カラム、マーキング候補文字列（マーカーテキスト）カラム、マーカー始点カラム、マーカー終点カラムなどを含む。
【００３０】
コンテンツID カラムには、コンテンツを一意に識別可能なIDが格納される。マーキング候補文字列カラムには、始点終点抽出部２２ がコンテンツ毎にそれぞれ抽出したマーキング候補文字列（一続きの文字列）が格納される。マーカー始点カラムには、マーキング候補文字列の開始位置を示すコンテンツ内の絶対座標が、マーカー終点カラムにはマーキング候補文字列の終了位置を示すコンテンツ内の絶対座標がそれぞれ格納される。
【００３１】
クライアント１は、サーバ２から取得したコンテンツをディスプレイに表示し、ユーザが閲覧可能なデバイスである。クライアント１には、例えば、スマートフォン、タブレット端末、PCなどを用いることができる。図示するクライアント１は、コンテンツ要求送信部１１と、コンテンツ受信部１２と、ハイライトDB１３と、マーカー表示部１４とを備える。
【００３２】
コンテンツ要求送信部１１は、ユーザの操作を受け付けて、コンテンツCの取得要求を、サーバ２のコンテンツ取得部２１に送信する。コンテンツCは、例えば、クライアント１の使用者であるユーザによって指定される。
【００３３】
コンテンツ受信部１２は、サーバ２（コンテンツ取得部２１）からコンテンツCに関する情報を受信する。コンテンツCに関する情報は、コンテンツCの電子ファイルFC、および、マーカーDB２６に記憶されたコンテンツCに対応するマーカー情報MC（レコード）である。コンテンツ受信部１２は、電子ファイルFCのコンテンツCをクライアント１のディスプレイに表示するとともに、コンテンツCに関するマーカー情報MCをハイライトDB１３に格納する。
【００３４】
図６は、ハイライトDB１３のデータ構造の一例を示す図である。ハイライトDB１３は、マーカーDB２６と同一のデータ構造を有するため、ここでは説明を省略する。
【００３５】
マーカー表示部１４は、ユーザが発生させたコンテンツに対するドラッグ開始イベント を取得し、ユーザがコンテンツに対してマーカーを引く操作を支援する。
【００３６】
図７は、本実施形態のマーカー表示部１４の具体的な構成を示すブロック図である。図示するマーカー表示部１４は、取得部１４１と、表示部１４２とを備える。
【００３７】
取得部１４１は、コンテンツへのユーザのマーキング操作を検知して、当該マーキング操作の開始位置に対応するコンテンツの文字を取得する。表示部１４２は、取得した文字が、マーキング候補文字列に含まれている場合、コンテンツ上のマーキング候補文字列をハイライト表示する。あるいは、表示部１４２は、取得した文字がマーキング候補文字列に含まれている場合、コンテンツ上のマーキング候補文字列をユーザのマーキング操作に追従してハイライト表示し、マーキング候補文字列とは異なる他の文字へのマーキング操作が検出された場合、他の文字については、マーキング操作に遅れてハイライト表示する。
【００３８】
上記説明したクライアント１およびサーバ２は、例えば、ＣＰＵと、メモリと、ハードディスク等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵがメモリ上にロードされた所定のプログラムを実行することにより、各部の各機能が実現される。例えば、クライアント１およびサーバ２の各機能は、クライアント１用のプログラムの場合はクライアント１のＣＰＵが、そして、サーバ２用のプログラムの場合はサーバ２のＣＰＵが、それぞれ実行することにより実現される。
【００３９】
また、クライアント１用のプログラムおよびサーバ２用のプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【００４０】
以下に、本実施形態の処理について説明する。
【００４１】
図８は、サーバ２の始点終点抽出部２２の処理の一例を示すフローチャートである。始点終点抽出部２２は、操作履歴DB２４を用いて、コンテンツ毎に、マーキング候補文字列を抽出する。
【００４２】
Ｓ１１０において、始点終点抽出部２２は、操作履歴DB２４から未処理のコンテンツCに関するレコードを取得し、集合Scを生成する。
【００４３】
例えば、図３に示す操作履歴DB２４において、コンテンツID がC1のコンテンツが未処理の場合、始点終点抽出部２２は、コンテンツID がC1の６つの以下のレコードを取得し、集合Scの要素とする。すなわち、取得したレコード（コンテンツIDを除く）を要素とする集合Scを生成する。
【００４４】
[ID:User1, text:石川町駅で降, 始点:(80, 20), 終点:(85,20))],
[ID:User2, text:みなとみらいで観光する, 始点:(10, 5), 終点:(20,5))],
[ID:User2, text:石川町駅で降りると, 始点:(80, 20), 終点:(88,20))],
[ID:User3, text:石川町駅で降りる, 始点:(80, 20), 終点:(87,20))],
[ID:User4, text:石川町駅で降りると便利, 始点:(80, 20), 終点:(90,20))],
[ID:User5, text:川町駅で降り, 始点:(81, 20), 終点:(86,20))]
Ｓ１２０において、始点終点抽出部２２は、文字列が表示されている位置が近い要素同士が同じグループになるように、集合Sを１つ以上のグループに分割する。例えば、要素s（s ∈ S）の文字列が表示されている範囲の中に、当該文字列の一部を含む要素s′（s′∈ S かつ s ≠ s′）を取得し、１つ以上の要素s′を取得した場合、これらの要素を１つのグループとする。すなわち、文字列の少なくとも一部が互いに重複している要素sを１つのグループとする。
【００４５】
集合Sの各要素に対して同様の処理をおこない、集合Sを１個以上n（S）個以下のグループGに分割する。このとき、生成したグループの中に、同一の要素集合からなるグループが複数存在する場合にはそれらを１つにまとめ、グループGには同一の要素集合からなるグループが複数存在しないようにする。また、要素sは、複数のグループに存在してもよい。例えば、Ｓ１１０で生成した集合Scは、以下の要素数5のグループG1：{
[ID:User1, text:石川町駅で降, 始点:(80, 20), 終点:(85,20))],
[ID:User2, text:石川町駅で降りると, 始点:(80, 20), 終点:(88,20))],
[ID:User3, text:石川町駅で降りる, 始点:(80, 20), 終点:(87,20))],
[ID:User4, text:石川町駅で降りると便利, 始点:(80, 20), 終点:(90,20))],
[ID:User5, text:川町駅で降り, 始点:(81, 20), 終点:(86,20))]
} と、以下の要素数１のグループG2:{
[ID:User2, text:みなとみらいで観光する, 始点:(10, 5), 終点:(20,5))]
}と、に分割される。
【００４６】
以下のＳ１３０からＳ１９０の処理は、分割したグループ毎に行われる。
【００４７】
Ｓ１３０において、始点終点抽出部２２は、未処理のグループGを選択し、当該グループG に含まれる要素の文字列の中に条件M1を満たす文字列が存在するか否かを判定し、存在する場合はＳ１４０に進み、存在しない場合はＳ２００に進む。なお、条件M1は、例えば、あらかじめ、管理者などがサーバに設定し、図示しない記憶部に記憶しているものとする。
【００４８】
例えば、条件M1が「グループの要素数が３以上であり、かつ、すべての要素に含まれる文字列が存在する」であるとき、グループG1 においては条件M1を満たす文字列「川町駅で降」が存在するため、Ｓ１４０に進む。また、グループG2 においては、条件M1を満たす文字列が存在しないため、Ｓ２００に進む。
【００４９】
Ｓ１４０において、始点終点抽出部２２は、Ｓ１３０で抽出した文字列T（共通文字列）の直前の１文字l1と、直後の１文字l2とを取得する。例えば、文字列Tが「川町駅で降」であるとき、「l1 ＝石」、「l2 ＝り」となる。
【００５０】
Ｓ１５０において、始点終点抽出部２２は、l1 を含む形態素の一部が文字列Tに含まれているか否かを判別し、含まれている場合はＳ１６０に進み、含まれていない場合はＳ１７０に進む。l1 を含む形態素は、例えば形態素解析エンジンMecab(https://code.google.com/p/mecab/(2014 年9月30 日現在)) などを用いて、l1 前後の文字列に対して形態素解析を実行することで容易に取得することができる。
【００５１】
例えば、「文字列T ＝川町駅で降」、「l1 ＝石」である場合、l1 前後の文字列「京浜東北線に乗り石川町駅で」に対して形態素解析エンジンを用いて形態素解析を実行すると「京浜東北線に乗り石川町駅で」は８つの形態素（「京浜東北」「線」「に」「乗り」「石川」「町」「駅」「で」）に分解される。この場合、「l1 ＝石」を含む形態素「石川」の一部「川」が文字列T に含まれているため、Ｓ１６０に進む。
【００５２】
Ｓ１６０において、始点終点抽出部２２は、l1 を含む形態素のうち、文字列Tに含まれていない文字列を文字列Tに追加する。例えば、「文字列T ＝川町駅で降」、「l1 ＝石」であるとき、「l1 ＝石」を含む形態素「石川」のうち，「文字列T ＝川町駅で降」に含まれていない文字列「石」を文字列Tに追加する。つまり、「文字列T ＝石川町駅で降」に調整される。
【００５３】
Ｓ１７０において、始点終点抽出部２２は、l2 を含む形態素の一部が文字列Tに含まれているか否かを判別し、含まれている場合はＳ１８０に進み、含まれていない場合はＳ１９０に進む。例えば、「文字列T ＝石川町駅で降」、「l2 ＝り」であるとき、l2 前後の文字列「石川町駅で降りると便利です」に対して形態素解析エンジンを用いて形態素解析を実行すると、「石川町駅で降りると便利です」は、８つの形態素（「石川」「町」「駅」「で」「降りる」「と」「便利」「です」）に分解される。そして、「l2 ＝り」を含む形態素「降りる」の一部「降」が文字列T に含まれているから、Ｓ１８０に進む。
【００５４】
Ｓ１８０において、始点終点抽出部２２は、l2 を含む形態素のうち、文字列Tに含まれていない文字列を文字列Tに追加する。例えば、「文字列T ＝石川町駅で降」、「l2 ＝り」であるとき、「l2 ＝り」を含む形態素「降りる」のうち、「文字列T ＝石川町駅で降」に含まれていない文字列「りる」を文字列T に追加する。つまり、「文字列T ＝石川町駅で降りる」に調整する。
【００５５】
このように、形態素の単位で共通文字列Tの前後に文字を追加して調整することで、マーカーDB２６に格納するマーキング候補文字列を、適切な範囲でコンテンツから抽出することができる。
【００５６】
Ｓ１９０において、始点終点抽出部２２は、調整後の文字列T（マーキング候補文字列）をマーカーDB２６に格納（出力）する。例えば、調整後の「文字列T ＝石川町駅で降りる」であるとき、始点終点抽出部２２は、マーカーDB２６にレコード: [ コンテンツID : C1, マーキング候補文字列: 石川町駅で降りる, マーカー始点: (80, 20), マーカー終点: (87,20))] を追加する。マーカー始点およびマーカー終点は、マーキング候補文字列に応じて設定する。
【００５７】
なお、前述のグループG2 の場合、条件M1を満たす文字列が存在しないため（Ｓ１３０：ＮＯ）、マーカーDB２６にレコードを追加することなく、Ｓ２００に進む。
【００５８】
Ｓ２００において、始点終点抽出部２２は、未処理のグループがある場合はＳ１３０に戻り、未処理のグループがない場合はＳ２１０に進む。
【００５９】
Ｓ２１０において、始点終点抽出部２２は、未処理のコンテンツがある場合はＳ１１０に戻り、未処理のコンテンツがある場合は処理を終了する。
【００６０】
以上説明した図８の処理により、始点終点抽出部２２は、コンテンツDB２３に格納された各コンテンツについて、操作履歴DB２４を用いて抽出した共通文字列を、形態素単位となるように適宜調整して、マーカーDB２６に出力する。
【００６１】
なお、始点終点抽出部２２の処理は図６に限定されることなく、数々の変形および応用が可能である。
【００６２】
図９は、始点終点抽出部２２の処理の変形例を示すフローチャートである。
【００６３】
図９に示すフローチャートは、図６に示すフローチャートに、Ｓ１３１およびＳ１３２の処理を追加したものである。すなわち、Ｓ１１０−Ｓ１３０および、Ｓ１４０−Ｓ２１０については、図８に示すフローチャートと同じであるため、ここでは説明を省略する。
【００６４】
Ｓ１３１において、始点終点抽出部２２は、Ｓ１３０で抽出した文字列T（共通文字列）が、ユーザの意図した範囲の文字列であるか、それとも真に指定しようとしていた文字列の範囲に対して過不足が生じているのか否かを判定する。
【００６５】
本実施形態では、操作履歴DB２４の履歴情報を用いて、所定の条件M2で文字列Tをマーキングした割合が、所定の閾値V以上か否かを判別する。すなわち、文字列T をマーキング領域として範囲指定したユーザが、条件M2 を満たすユーザであるかを判定する。
【００６６】
具体的には、始点終点抽出部２２は、文字列Tをマーキング領域として範囲指定した操作回数（またはユーザ数）Nall と、前記操作回数Nallにうち条件M2 を満たす操作回数（またはユーザ数）NM2 とを用いて、割合R （R＝NM2/Nall）を算出する。
【００６７】
条件M2は、ユーザが指定した文字列の範囲が意図通りであるか、それとも真に指定しようとしていた文字列の範囲に対して過不足が生じているのかを判定するための条件である。例えば、ユーザが文字列の指定範囲を修正した上で文字列の範囲を決定していたのであれば、ユーザは、修正後の文字列の範囲を指定したいという明確な意図を持っていると考えられる。また、普段は文字列の指定範囲を修正して文字列の範囲を指定することが多いユーザが、文字列の指定範囲を修正することなく文字列の範囲を決定していたのであれば、ユーザは文字列の指定範囲を正しくおこなったと考えていると考えられる。
【００６８】
一方、文字列の範囲指定の過不足が生じる場合には、ユーザに焦りが生じている可能性があると考えることができる。例えば、文字列の範囲指定直後にユーザによる別の操作がおこなわれるなど、ユーザに関係するコンテキストが大きく変化するようなときには、文字列の範囲指定の過不足が生じやすいと考えられる。つまり、上記のような事象が発生していない、ユーザが焦る必要がないと考えられるときに指定された文字列の範囲はユーザの意図通りであると考えることができる。
【００６９】
さらに、あるコンテンツを同一のユーザが複数回閲覧していたときに、複数回指定された文字列の範囲はコンテンツ内で重要度が高いと推測され、そのような文字列の範囲はユーザの意図通りの指定であると考えられる。
【００７０】
よって、例えば、条件M2は、「テキスト範囲指定後t秒間は端末操作が発生していない」などが考えられる。この場合、操作履歴DB２４には、図４に示すデータ以外に、ユーザID、操作時刻などの条件M2を判定可能なデータが格納されるものとする。なお、条件M2および時間tは、例えば、あらかじめ管理者などがサーバ２に設定し、図示しない記憶部に記憶しているものとする。
【００７１】
Ｓ１３２において、始点終点抽出部２２は、Ｓ１３１で算出した割合Rが所定の閾値V 以上であれば、文字列T（共通文字列）の前後を調整（補間）する必要がないと判断してＳ２００に進み、閾値V 未満の場合は、Ｓ１４０に進み、文字列Tを調整する。なお、所定の閾値Vは、例えば、あらかじめ管理者などがサーバ２に設定し、図示しない記憶部に記憶しているものとする。
【００７２】
次に、クライアント１のマーカー表示部１４の処理について説明する。
【００７３】
図１０は、マーカー表示部１４の処理の流れを示すフローチャートである。図１０では、クライアント１のユーザは、サーバ２から受信した電子ファイルFCのコンテンツC をブラウザ（ウェブブラウザ）上で閲覧し、１本の指を用いてマーカーを引く場合を例として説明する。
【００７４】
Ｓ２１０において、マーカー表示部１４は、ユーザu が発生させた、コンテンツC に対するドラッグ開始イベントd （マーキング操作）を検知する。ドラッグ開始イベントd は、例えば、ondragstart イベントなどをブラウザから取得することが考えられる。
【００７５】
Ｓ２２０において、マーカー表示部１４は、イベントd が発生したディスプレイ上のイベント発生位置p(xu, yu) を取得する。イベント発生位置p は、例えば、ブラウザの左上隅を基点にしたxy 座標とすればよく、そのxy 座標はイベントd オブジェクトのclientX プロパティとclientY プロパティとをそれぞれ取得すればよい。
【００７６】
Ｓ２３０において、マーカー表示部１４は、イベント発生位置p に対応するコンテンツC 上の絶対座標p′(x, y) を算出し、座標p′の位置に表示されている文字（または複数の文字の文字列）を取得し、当該文字をtpとする。座標p′の位置に文字が表示されていない場合には、座標p′に最も近い位置に表示されている文字を取得し、当該文字をtpとする。
【００７７】
座標p′は、例えば、コンテンツCが拡大縮小表示されていなく、かつ、ブラウザの左上隅とコンテンツC の左上隅が一致している（つまり、コンテンツC がスクロールされていない）ときには、イベント発生位置p と座標p′は一致する。それ以外の場合においては、例えば、(1)ブラウザの拡大縮小率scale、(2)x軸方向のスクロール量scrollx、(3)y軸方向のスクロール量scrollyを、以下のように算出または取得して用いることで、ブラウザ上の相対座標であるイベント発生位置p をコンテンツC 上の絶対座標p′に変換することができる。
【００７８】
(1)  var scale = document.body.clientWidth / window.innerWidth;
(2)  var scrollx = document.documentElement.scrollLeft || document.body.scrollLeft;
(3)  var scrolly = document.documentElement.scrollTop || document.body.scrollTop;
Ｓ２４０において、マーカー表示部１４は、文字tpを含むマーキング候補文字列MpがハイライトDB１３に含まれているか否かを判別し、含まれている場合はＳ２５０に進み、含まれていない場合は、Ｓ２６０のマーキング操作の支援処理を行うことなく処理を終了する。文字tpを含むマーキング候補文字列MpがハイライトDB１３に含まれているかどうかは、当該文字tpの絶対座標p′(x, y)と、ハイライトDB１３の各レコードのマーカー始点およびマーカー終点とを比較することで判定する。
【００７９】
Ｓ２５０において、マーカー表示部１４は、ハイライトDB１３から、文字tpを含むマーキング候補文字列Mpのレコードを取得する。
【００８０】
Ｓ２６０において、マーカー表示部１４は、ユーザu がコンテンツCの所望の文字列にマーカーを引くマーキング操作を支援するための処理を実行する。また、マーカー表示部１４は、マーキング操作の情報をサーバ２の操作履歴更新部２５に送信する。
【００８１】
Ｓ２６０のマーキング操作の支援処理には、以下の２つの方法がある。
【００８２】
＜第１の方法＞
第１の方法では、マーカー表示部１４は、コンテンツC上の前記文字tpを含むマーキング候補文字列Mpの全体を、ハイライト表示する（マーカーが引かれた状態にする）。
【００８３】
すなわち、第１の方法では、コンテンツへのユーザのマーキング操作を検知し、マーキング操作を行ったコンテンツ上の位置を含む所定の領域の文字列（マーキング候補文字列Mp）を、ハイライト表示する。
【００８４】
このように、第１の方法では、コンテンツに一部の文字列をユーザがハイライト表示させる場合に、ユーザのマーキング操作開始を契機に、先回りして、ハイライトDB１３に格納されたマーキング候補文字列をハイライト表示する。
【００８５】
＜第２の方法＞
第２の方法は、マーキング候補文字列以外の部分について、ユーザがマーキング操作を行う場合、容易に操作できない感覚（操作し難い感覚）をユーザに与えることで、ユーザのマーキング操作を支援するものである。
【００８６】
第２の方法では、マーカー表示部１４は、マーキング候補文字列Mpへのマーキング操作に対しては、ユーザのマーキング操作に追従して（合わせて）、コンテンツ上のユーザがマーキング操作した文字列（すなわち、マーキング候補文字列Mp）をハイライト表示する。また、マーキング候補文字列Mp 以外（すなわち、マーキング候補文字列Mpとは異なる他の文字）へのマーキング操作に対しては、ユーザのマーキング操作に対して、遅れてハイライト表示する。
【００８７】
具体的には、マーカー表示部１４は、マーキング候補文字列Mpの終点位置の文字meの直後の文字me+1 に対して引き続きマーカーを引く操作を検知した場合、すなわち、マーキング候補文字列Mpを超えて直後の文字me+1に対してもマーカーを引く操作がおこなわれた場合、直後の文字ms+1（およびそれ以降の文字）をハイライト表示させるタイミングを、ユーザのマーキング操作のタイミングより、所定の時間遅らせて、文字me+1 をハイライト表示する。
【００８８】
同様に、マーカー表示部４１は、マーキング候補文字列Mpを後ろから前に向かって逆方向にマーキング操作がおこなわれた場合において、マーキング候補文字列Mpの始点位置の文字msの直前の文字ms-1に対して引き続きマーカーを引く操作を検知した場合、すなわち、マーキング候補文字列Mpを超えて直前の文字ms-1に対してもマーカーを引く操作がおこなわれた場合、直前の文字ms-1をハイライト表示させるタイミングを、ユーザのマーキング操作のタイミングより、所定の時間遅らせて、文字ms-1をハイライト表示する。
【００８９】
このように、第２の方法では、マーキング候補文字列Mp以外の領域の文字（マーキング候補文字列Mpとは異なる領域の他の文字）をハイライト表示する場合、実際のユーザの操作より少し遅れてハイライト表示させることで、ユーザにマーキング操作がし難いように実感させて、マーキング候補文字列Mp以外の文字を本当にハイライト表示するのか否かをユーザに確認させ、マーカーの引きすぎを防止する。
【００９０】
また、第２の方法において、マーキング候補文字列Mp 以外の文字列に対するハイライト表示については、ユーザのマーキング操作の速度より、遅い速度でハイライト表示することで、ユーザにマーキング操作がし難いように実感させることとしてもよい。
【００９１】
なお、第１の方法および第２の方法において、前述した非特許文献１、２のテキストをハイライト表示する機能を提供するサービスやアプリケーションと同様に、マーカー表示部１４は、マーカーを引く範囲を指定しなおすなどの調整機能をユーザに提供するものとする。
【００９２】
また、第１の方法および第２の方法において、処理実行のための起点は、ユーザu はマーカーを引く操作を始める以外にも、マーカーを引こうとしている文字列の範囲をタップしたり、文字列の範囲の全体または一部を含むように丸で囲むなどの操作が考えられる。
【００９３】
以上説明した本実施形態により、クライアント１に表示されたコンテンツに対して所望の文字列をハイライト表示させる際に、ユーザがハイライト表示させる文字列の範囲を指定しやすくなり、これにより、文字列の範囲指定に要するユーザの操作時間を短縮させることができる。また、文字列を正しく指定するためのやり直しの操作回数を削減し、文字列の範囲を指定するために必要なピンチアウト操作回数を削減することができる。
【００９４】
すなわち、本実施形態によれば、コンテンツの一部の文字列をハイライト表示させる際に、ユーザのマーキング操作を支援し、ユーザの利便性を向上することができる。
【００９５】
具体的には、本実施形態の始点終点抽出部２２によれば、複数のユーザの操作履歴が格納された操作履歴DB２４を用いて、マーカーが引かれる可能性が高いマーキング候補文字列を適切に推定し、抽出することができる。
【００９６】
また、始点終点抽出部２２が、図９に示すＳ１３１およびＳ１３２の処理を行うことにより、コンテンツの中から、ユーザが明確な意図を持ち、正しく範囲指定した可能性が高いテキスト範囲を推定することができる。
【００９７】
また、マーカー表示部１４がーキング候補文字列を用いて、ユーザのマーキング操作を支援することにより、文字列の範囲指定するためのやり直し回数を削減し、範囲指定するために必要なピンチアウト操作回数を削減することができる。
【００９８】
また、マーカー表示部１４の第１の方法では、ユーザがマーカーを引く可能性が高い文字列の範囲（マーキング候補文字列）を、当該範囲の全てにマーカーを引く操作をおこなうよりも前に、ハイライト表示する。これにより、マーカーを引く範囲が広い場合には、マーカーを引く操作時間を削減するとともに、適切に範囲指定することができる。
【００９９】
また、マーカー表示部１４の第２の方法では、マーキング候補文字列以外の文字列については、ユーザのマーキング操作に遅れてハイライト表示することで操作のしにくい感覚をユーザに与え、マーカーの引きすぎを防止することができる。
【０１００】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形および応用が可能である。
【符号の説明】
【０１０１】
１  ：クライアント
１１：コンテンツ要求送信部
１２：コンテンツ受信部
１３：ハイライトDB
１４：マーカー表示部
２  ：サーバ
２１：コンテンツ取得部
２２：始点終点抽出部
２３：コンテンツDB
２４：操作履歴DB
２５：操作履歴更新部
２６：マーカーDB  
【図１】
0006315599.tif 000002
【図２】
0006315599.tif 000003
【図３】
0006315599.tif 000004
【図４】
0006315599.tif 000005
【図５】
0006315599.tif 000006
【図６】
0006315599.tif 000007
【図７】
0006315599.tif 000008
【図８】
0006315599.tif 000009
【図９】
0006315599.tif 000010
【図１０】
0006315599.tif 000011