IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-533716知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート
<>
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図1
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図2
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図3
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図4
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図5A
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図5B
  • 特表-知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシート
(51)【国際特許分類】
   G06F 16/23 20190101AFI20240905BHJP
【FI】
G06F16/23
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024518727
(86)(22)【出願日】2022-09-23
(85)【翻訳文提出日】2024-05-24
(86)【国際出願番号】 US2022044611
(87)【国際公開番号】W WO2023049403
(87)【国際公開日】2023-03-30
(31)【優先権主張番号】17/485,056
(32)【優先日】2021-09-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ラベリー、アンドリュー ジェイ.
(72)【発明者】
【氏名】ワグナー、アール ジェイ.
(72)【発明者】
【氏名】オルブライト、マシュー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA09
(57)【要約】
方法は、処理デバイスによって、複数のセルを含む表構造を有する文書を識別することを含む。文書には、複数のセルのうち少なくとも1つのセルの内容を自動的に更新するための更新制御のセットが関連付けられている。方法はさらに、処理デバイスによって、更新制御のセットに基づいて、少なくとも1つのセル内の内容の自動更新をトリガするイベントを検出すること、及びイベントの検出に応じて、処理デバイスによって、更新制御のセットに従って少なくとも1つの外部データソースからデータを取得すること、及び処理デバイスによって、少なくとも1つの外部データソースからのデータに基づいて少なくとも1つのセル内の内容が更新されることを含む。
【特許請求の範囲】
【請求項1】
処理デバイスによって、複数のセルを含む表形式の構造を有する文書を識別することであって、前記文書は、前記複数のセルのうちの少なくとも1つのセルの内容を自動的に更新するための更新制御のセットに関連付けられている、前記識別することと、
前記処理デバイスによって、前記更新制御のセットに基づいて、前記少なくとも1つのセル内の前記内容の自動更新をトリガするイベントを検出することと、
前記イベントの検出に応じて、
前記処理デバイスによって、前記更新制御のセットに従って少なくとも1つの外部データソースからデータを取得するとともに、
前記処理デバイスによって、前記少なくとも1つの外部データソースからの前記データに基づいて、前記少なくとも1つのセルの前記内容の更新を生じさせることとを含む、方法。
【請求項2】
前記処理デバイスによって、1つまたは複数の自然言語クエリを使用して前記文書の少なくとも一部を生成することをさらに含み、前記文書の少なくとも一部を生成することは、前記更新制御のセットを定義することを含む、請求項1に記載の方法。
【請求項3】
前記更新制御のセットは、前記少なくとも1つのセルに保持されている前記内容の更新間の時間量に対応する更新頻度を含む、請求項1に記載の方法。
【請求項4】
前記更新頻度は、推奨される更新頻度に対応する既定の更新頻度である、請求項3に記載の方法。
【請求項5】
前記処理デバイスによって、前記少なくとも1つのセルに関連付けられた既定の更新頻度を提示するユーザインターフェースを提供することと、
前記処理デバイスによって、前記少なくとも1つのセルのユーザ定義の更新頻度を指定するユーザ入力を受信することであって、前記ユーザ入力によって、前記ユーザインターフェースが修正され、前記少なくとも1つのセルに関連付けられた前記ユーザ定義の更新頻度が表示される、前記受信することと、
前記処理デバイスによって、データストアに記憶された前記更新制御のセットを修正し、前記少なくとも1つのセルの前記ユーザ定義の更新頻度を含めることとをさらに含む、請求項3に記載の方法。
【請求項6】
前記少なくとも1つの外部データソースから前記データを取得することは、
前記時間量が、前記少なくとも1つのセルに保持されている前記内容に対する最新の更新から経過したと決定することと、
前記時間量が、前記最新の更新から経過したと決定することに応じて、前記少なくとも1つの外部データソースから前記データを取得することとをさらに含む、請求項3に記載の方法。
【請求項7】
前記少なくとも1つの外部データソースから前記データを取得することは、前記少なくとも1つの外部データソースの一部に関連付けられたサブスクライバから前記データを受信することをさらに含む、請求項1に記載の方法。
【請求項8】
メモリデバイスと、
前記メモリデバイスに結合された処理デバイスと、を備え、前記処理デバイスは、
複数のセルを含む表形式の構造を有する文書を識別することであって、前記文書は、前記複数のセルのうちの少なくとも1つのセルの内容を自動的に更新するための更新制御のセットに関連付けられている、前記識別することと、
前記更新制御のセットに基づいて、前記少なくとも1つのセル内の前記内容の自動更新をトリガするイベントを検出することと、
前記イベントの検出に応じて、
前記更新制御のセットに従って少なくとも1つの外部データソースからデータを取得するとともに、
前記少なくとも1つの外部データソースからの前記データに基づいて、前記少なくとも1つのセルの前記内容の更新を生じさせることとを含む動作を実行する、システム。
【請求項9】
前記動作は、1つまたは複数の自然言語クエリを使用して前記文書の少なくとも一部を生成することをさらに含み、前記文書の少なくとも一部を生成することは、前記更新制御のセットを定義することを含む、請求項8に記載のシステム。
【請求項10】
前記更新制御のセットは、前記少なくとも1つのセルに保持されている前記内容の更新間の時間量に対応する更新頻度を含む、請求項8に記載のシステム。
【請求項11】
前記更新頻度は、推奨される更新頻度に対応する既定の更新頻度である、請求項10に記載のシステム。
【請求項12】
前記動作は、
前記少なくとも1つのセルに関連付けられた既定の更新頻度を提示するユーザインターフェースを提供することと、
前記少なくとも1つのセルのユーザ定義の更新頻度を指定するユーザ入力を受信することであって、前記ユーザ入力によって、前記ユーザインターフェースが修正され、前記少なくとも1つのセルに関連付けられた前記ユーザ定義の更新頻度が表示される、前記受信することと、
データストアに記憶された前記更新制御のセットを修正し、前記少なくとも1つのセルの前記ユーザ定義の更新頻度を含めることとをさらに含む、請求項10に記載のシステム。
【請求項13】
前記少なくとも1つの外部データソースから前記データを取得することは、
前記時間量が、前記少なくとも1つのセルに保持されている前記内容に対する最新の更新から経過したと決定することと、
前記時間量が、前記最新の更新から経過したと決定することに応じて、前記少なくとも1つの外部データソースから前記データを取得することとをさらに含む、請求項10に記載のシステム。
【請求項14】
前記少なくとも1つの外部データソースから前記データを取得することは、前記少なくとも1つの外部データソースの一部に接続されたサブスクライバから前記データを受信することをさらに含む、請求項8に記載のシステム。
【請求項15】
処理デバイスによって実行されると、前記処理デバイスに、
複数のセルを含む表形式の構造を有する文書を識別することであって、前記文書は、前記複数のセルのうちの少なくとも1つのセルの内容を自動的に更新するための更新制御のセットに関連付けられている、前記識別することと、
前記更新制御のセットに基づいて、前記少なくとも1つのセル内の前記内容の自動更新をトリガするイベントを検出することと、
前記イベントの検出に応じて、
前記更新制御のセットに従って少なくとも1つの外部データソースからデータを取得するとともに、
前記少なくとも1つの外部データソースからの前記データに基づいて、前記少なくとも1つのセルの前記内容の更新を生じさせることとを含む動作を実行させる、サーバ用の命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項16】
前記動作は、1つまたは複数の自然言語クエリを使用して前記文書の少なくとも一部を生成することをさらに含み、前記文書の少なくとも一部を生成することは、前記更新制御のセットを定義することを含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記更新制御のセットは、前記少なくとも1つのセルに保持されている前記内容の更新間の時間量に対応する更新頻度を含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記更新頻度は、推奨される更新頻度に対応する既定の更新頻度である、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記動作は、
前記少なくとも1つのセルに関連付けられた既定の更新頻度を提示するユーザインターフェースを提供することと、
前記少なくとも1つのセルのユーザ定義の更新頻度を指定するユーザ入力を受信することであって、前記ユーザ入力によって、前記ユーザインターフェースが修正され、前記少なくとも1つのセルに関連付けられた前記ユーザ定義の更新頻度が表示される、前記受信することと、
データストアに記憶された前記更新制御のセットを修正し、前記少なくとも1つのセルの前記ユーザ定義の更新頻度を含めることとをさらに含む、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記少なくとも1つの外部データソースから前記データを取得することは、前記少なくとも1つの外部データソースの一部に接続されたサブスクライバから前記データを受信することをさらに含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の態様及び実施態様は、一般的には電子文書の更新に関するものであり、より詳細には、知識監視及び自然言語処理に基づいて、表形式構造を有する電子文書を動的かつ選択的に更新することに関する。
【背景技術】
【0002】
電子文書(「文書」)は、複数のセルを含む表形式の構造を有し得る。そのような文書は、「データ表」または単に「表」と呼ばれ得る。各セルは、特定の形式(例えば、数値データまたはテキストデータ)でデータを入力するための領域に対応しており、文書を使用して入力データを整理、分析、及び/または保存できる。各セルには、数値以外のデータ入力、セルに値を割り当てる数式を含めることができ、または空のままにすることもできる。数式には、数値、スプレッドシート内の1つまたは複数のセルの値への参照、算術演算子、関係演算子、関数などを含めることができる。さらに、文書はプログラミング機能をサポートできる。例えば、セルの内容は、文書内の1つまたは複数の他のセルの内容から派生できる。いくつかの実施態様では、文書はスプレッドシートであり得る。スプレッドシート内のセルは、複数の行及び複数の列を含む配列として配置することができ、スプレッドシートの特定のセルは、表内の列の位置及び表内の行の位置を基準にしてアドレス指定または参照できる。いくつかの例では、列は文字(例えば、列A、列B、…)で表され、行は数字(例えば、行1、行2、…)で表される。例えば、列Dの行5にあるセルは、セルD5として参照できる。
【発明の概要】
【0003】
以下の概要は、開示のいくつかの態様についての基本的な理解を提供するために、開示の簡略化された概要である。この概要は開示内容の包括的な概要ではない。これは、開示の主要または重要な要素を特定すること、または開示の特定の実施態様の範囲または任意の特許請求の範囲を定義することを意図するものではない。その唯一の目的は、後ほど提示されるより詳細な説明の前置きとして、開示のいくつかの概念を簡略化した形で提示することである。
【0004】
いくつかの実施態様では、システム及び方法が開示される。一実施態様では、方法は、処理デバイスによって、複数のセルを含む表構造を有する文書を識別することを含む。文書には、複数のセルのうち少なくとも1つのセルの内容を自動的に更新するための更新制御のセットが関連付けられている。方法はさらに、処理デバイスによって、更新制御のセットに基づいて、少なくとも1つのセル内の内容の自動更新をトリガするイベントを検出すること、及びイベントの検出に応じて、処理デバイスによって、更新制御のセットに従って少なくとも1つの外部データソースからデータを取得すること、及び処理デバイスによって、少なくとも1つの外部データソースからのデータに基づいて少なくとも1つのセル内の内容が更新されることを含む。
【0005】
いくつかの実施態様では、方法はさらに、処理デバイスによって、1つまたは複数の自然言語クエリを使用して文書の少なくとも一部を生成することも含む。文書の少なくとも一部を生成することは、更新制御のセットを定義することを含む。
【0006】
いくつかの実施態様では、方法はさらに、少なくとも1つのセルに保持されている内容の更新間の時間量に対応する更新頻度を含む更新制御のセットを含む。少なくとも1つの外部データソースからデータを取得することはさらに、少なくとも1つのセルに保持されている内容に対する最新の更新から経過した時間量を決定すること、及び最新の更新から経過した時間量を決定することに応じて、少なくとも1つの外部データソースからデータを取得することを含む。例えば、更新頻度は、推奨される更新頻度に対応する既定の更新頻度にすることができる。別の例として、方法は、処理デバイスによって、少なくとも1つのセルに関連付けられた既定の更新頻度を提示するユーザインターフェースを提供すること、処理デバイスによって、少なくとも1つのセルのユーザ定義の更新頻度を指定するユーザ入力を受信すること、ここで、ユーザ入力によって、少なくとも1つのセルに関連付けられたユーザ定義の更新頻度を提示するようにユーザインターフェースが修正されること、及び処理デバイスによって、データストアに記憶されている更新制御のセットを修正して、少なくとも1つのセルのユーザ定義の更新頻度を含むことをさらに含み得る。
【0007】
いくつかの実施態様では、少なくとも1つの外部データソースからデータを取得することは、少なくとも1つの外部データソースの一部に関連付けられたサブスクライバからデータを受信することをさらに含む。
【0008】
本開示の態様及び実施態様は、以下に示す詳細な説明、ならびに本開示の様々な態様及び実施態様の添付図面からより完全に理解されるであろうが、これらの図面は、本開示を特定の態様または実施態様に限定するものではなく、説明及び理解のみを目的としている。
【図面の簡単な説明】
【0009】
図1】本開示の実施態様による、システムアーキテクチャの一例を示す。
図2】本開示の実施態様による、複数のセルを含むスプレッドシートの一例を示す図である。
図3】本開示の実施態様による、それぞれの更新頻度に従って更新される複数のセルを含むスプレッドシートの一例を示す図である。
図4】本発明の実施例による、知識監視及び自然言語処理に基づいて文書を動的かつ選択的に更新する方法のフロー図を示す。
図5A】本開示の実施態様による、文書内に保持されている内容を動的に更新する方法のフロー図を示す。
図5B】本開示の実施態様による、文書内に保持されている内容を動的に更新する方法のフロー図を示す。
図6】本開示の実施態様による、例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0010】
本開示の態様は、知識監視及び自然言語処理に基づいて動的かつ選択的に更新されるスプレッドシートに関する。表形式の構造(例えば、スプレッドシート)を有する電子文書(「文書」)を作成する際の課題の1つは、文書にデータを入力することである。例示として、列A~I及び行1~3を含むスプレッドシートの次の部分を表1に示す。
【表1】
【0011】
表1は、書籍のセットに関連するデータを整理したスプレッドシートの一部である。書籍のセットには、John Doeによる「ABC」及びJane Doeによる「XYZ」、ならびに書籍のセットの各書籍の属性が含まれている。より詳細には、列Aの各セルは書籍の名前を定義し、列Bの各セルは、同じ行内の列Aのセルによって定義された書籍の著者を定義し、列Cの各セルは、同じ行内の列Aのセルによって定義された書籍の初版発効日を定義し、列Dの各セルは、同じ行内の列Aのセルによって定義された書籍の最新版の日付を定義し、列Eの各セルは、同じ行内の列Aのセルによって定義された書籍の販売ランキングを定義し、列Fの各セルは、同じ行内の列Aのセルによって定義された書籍の2019年の販売数を定義し、G列の各セルは、同じ行内のA列のセルによって定義された書籍の2020年の販売数を定義し、列Hの各セルは、同じ行内の列Aのセルによって定義された書籍の2021年の販売数を定義し、列Iの各セルは、同じ行内の列Aのセルによって定義された書籍の2019年から2021年までの販売数を定義する。列Iのセルの値は、同じ行内の列F~Hのセルの対応する値から導出され得る。例えば、セルI2の値は、セルF2からセルH2までの値の合計として導出され得る。
【0012】
列A及びBは、ユーザがコンピューティングデバイスを使用してスプレッドシートに手動で入力できる。列Iの値は列F~Hから導出されるため、列F~Hにデータが入力されると、列Iのセルには自動的にデータが入力される。列Cの初版発行日、列Fの2019年からの販売数、及び列Gの2020年からの販売数などのデータは、固定値または静的な値に対応し得るが、列Dの最新版発行日、列Eの販売ランキング、列Hの2021年からの販売数などのデータは、時間の経過とともに変化する動的な値に対応し得る。例えば、2021年の販売数は毎日更新でき、さらに細かい設定(例えば、1時間ごと)で更新することもできる。
【0013】
従来のスプレッドシートでは、数式を使用して他のセルの値を参照して内部的にセルの値を導出できるが(前述のとおり)、時間の経過とともにセルの値が変化するため、通常、ユーザは手動でセルの値を更新する必要がある。スプレッドシートのセルを手動で更新すると、人為的なエラーにより一部のセルに誤った値が生じる可能性があり、多大な時間と計算リソースが必要な可能性がある。
【0014】
本開示の側面は、知識監視及び自然言語処理に基づいて、表形式の構造(例えば、スプレッドシート)を有する文書を動的かつ選択的に更新することにより、上記及びその他の欠陥に対処する。自然言語処理とは、人間とコンピューティングデバイス間の対話を可能にするために自然言語を処理することを指し得る。例えば、自然言語処理技術は、コンピューティングデバイスが理解できない非構造化自然言語形式を有する自然言語クエリを、コンピューティングデバイスが理解できる構造化形式を有するクエリに変換して、自然言語処理タスクを実行するために使用できる。自然言語クエリには、テキストクエリ、音声クエリなどがある。自然言語処理タスクの例には、テキスト及び音声処理、形態素解析、構文解析、語彙意味論、関係意味論などがある。
【0015】
コンピューティングシステムの文書更新マネージャは、自然言語クエリを利用して、文書の1つまたは複数のセルに外部データソース(例えば、外部データベースまたはリポジトリ、ナレッジグラフ、Webサイトなど)からのデータを入力できる。例えば、スプレッドシートの場合、スプレッドシートの列に対して自然言語式を定義でき、スプレッドシートの行には、その行のデータのコンテキスト情報を提供する1つまたは複数のセルを含め得る。文書更新マネージャは、内容情報を、スプレッドシートの他の列に対する自然言語クエリと組み合わせて使用し、行の残りの部分にデータを入力できる。例えば、いくつかの実施態様では、スプレッドシートの列内のセルに入力する自然言語式は、=NLP、(「[自然言語クエリ文字列]」、[行Mの参照セル1]、[行Mの参照セル2]、…、[行Mの参照セルN])という形式になり得る。例示的に、表1を参照した上記の例では、各行の列A~Bに書籍のタイトルと著者が含まれている。列Cのセルには、「第1版はいつ発行されましたか」という自然言語クエリに基づいてデータを入力できる。自然言語表現は、例えば=NLP(第1版はいつ発行されましたか、A2、B2)の形式になり得る。
【0016】
ナレッジ監視とは、外部データソースで発生する内容の変更を監視することを指し得る。文書更新マネージャは、文書内で保持されている内容を動的に更新またはリフレッシュするための更新制御のセットをさらに定義できる。例えば、文書更新マネージャは、1つまたは複数の自然言語クエリを使用して1つまたは複数の外部データソースから取得された内容が少なくとも部分的に入力された複数のセルを有する文書に関して、1つまたは複数の外部データソースから取得されたデータを使用してセルに保持されている内容を動的に更新できる。例えば、文書の一部には、手動で入力されたデータで埋められたセルの第1のセットが含まれ、文書更新マネージャは、外部データソースから取得されるデータで埋められたセルの第2のセットを含む文書の残りの部分を自動的に更新できる。例えば、セルの第2のセットを埋めるために使用されるデータは、時間の経過とともに変化する動的データに対応できる。
【0017】
いくつかの実施態様では、文書更新マネージャは、それぞれの更新頻度がそれぞれのセルに対応するいくつかの更新頻度に従って文書を更新する。更新頻度の例としては、時間ごと、日ごと、月ごと、年ごとなどがある。例えば、更新頻度はスプレッドシートのセルに対応し得る。ここで、更新頻度は、特定の列のすべての行のセルに対して制御可能(「列レベル制御」)、特定のセルに対して制御可能(「セルレベル制御」)、特定の行に対して制御可能(「行レベル制御」)などであり得る。例えば、行レベル制御を列レベル制御と組み合わせて提供し、行のセルの各々に対して定義された列更新頻度をオーバーライドできる。行レベル制御は、例えば、ユーザが特定の行のセルを他の行(列に関係なく)よりも頻繁に更新したい場合に使用され得る。セルレベル制御は、例えば、ユーザが特定のセルを他のセル(列または行に関係なく)よりも頻繁に更新したい場合に使用され得る。
【0018】
セルに対する更新頻度は、対応する外部データソース内のデータの変更頻度の分析に基づいて決定され得る。例えば、外部データソース内のデータの連続した更新間の平均経過時間量を決定する分析を実行できる(例えば、連続した更新間のタイムスタンプの比較に基づいて、外部データソースで発生した更新の監査ログを保持することによって、外部データソースがWebサイトである場合、更新率の見積もりを取得するために検索エンジンの履歴を分析することによって、など)。例示として、更新するデータが書籍「ABC」の最新版の日付である場合、外部データソースに「ABC」の新版が毎年追加されると判定されれば、更新頻度を1年に設定できる。いくつかの実施態様では、更新頻度を固定スケジュールの既定の更新頻度として設定できる。ユーザは、現在設定されている更新頻度を修正して、より頻繁な更新またはより頻繁でない更新を実行する任意選択を有し得る(例えば、更新頻度を毎日から毎週に変更する、または毎日から毎時間に変更する)。したがって、既定の更新頻度を推奨事項として提供でき、ユーザは、文書内に入力されたデータの少なくとも一部に対してカスタマイズされた更新スケジュールを設定する任意選択を有する。それぞれの更新頻度の視覚的なインジケータを文書内に提供できる。例えば、スプレッドシートの特定の列のセルに関する更新頻度が毎日である場合、文書更新マネージャは、更新頻度が現在毎日に設定されている列の更新頻度の視覚的なインジケータを提供できる。したがって、文書更新マネージャは、1つまたは複数のセルに割り当てられたそれぞれの固定された更新スケジュールに従って、1つまたは複数の外部データソースから1つまたは複数のセルを更新するためのデータを「プル」できる。
【0019】
変更頻度が低い(例えば、少なくとも毎月)データに関するなどのいくつかの例では、固定された更新頻度に従って更新を実行するのは非効率であり得る。これに対処するために、いくつかの実施態様では、文書更新マネージャは、外部データソース(例えば、ナレッジグラフのノード)に接続された1つまたは複数のサブスクライバまたはリスナを使用して文書を更新できる。サブスクライバは、外部データソース(例えば、ナレッジグラフ)の少なくとも一部に接続して、外部データソースの一部が更新されたタイミングを識別し、更新イベントを識別すると、更新されたデータを文書更新マネージャに転送して、対応するセルに挿入できる。したがって、文書更新マネージャは、1つまたは複数のそれぞれの外部データソースに接続された1つまたは複数のサブスクライバによって「プッシュ」された、1つまたは複数のセルを更新するためのデータを受信できる。
【0020】
セルの値を自動的に更新すると、手動入力によって発生する可能性のある人為的なエラーを排除し、更新に必要な時間及びコンピューティングリソースを削減できる。さらに、更新制御を使用すると、計算効率がさらに向上し、コンピューティングリソースの使用量が削減される。例えば、変更頻度の分析に基づいて決定された更新頻度に従って1つまたは複数のセルを更新することにより、不必要に頻繁な更新を減らしてリソースの消費を減らす方法で文書内容の更新を最適化できる。別の例として、サブスクライバまたはリスナに従って1つまたは複数のセルを更新することにより、サブスクライバによって更新が指示された場合にそれらのセルに対してのみ文書内容の更新が可能になり、したがって、リソースの消費が削減される。したがって、本明細書で説明する更新制御のセットを使用してスプレッドシートのセルを自動的に更新することにより、計算効率を向上させることができる。
【0021】
文書更新マネージャは、1つまたは複数の追加機能を提供できる。そのような機能の例としては、データ探索のための外部データソースへのアクセスバックを提供する、不正確なデータまたは部分的に正しいデータを識別する、データ信頼性機能を実装する、非構造化データソース及び/または構造化データソースを活用するための自然言語クエリの意図を識別する、多次元データを処理することなどがある。例えば、スプレッドシートに米国の都市のリストが含まれていると仮定する。スプレッドシートの列の1つに「人口」があり、ユーザは複数の都市の人口に基づいたグラフ及び計算を表示することに関心を持ち得る。「人口」列の各セルは、一次元の値(例えば、最新の人口)または多次元の値にでき、自然言語クエリに応じて取得されたデータのデータ型などを識別できる。文書更新マネージャによって実行される動作の詳細については、本明細書中で以下に記載する。
【0022】
図1は、本開示の実施態様による、システムアーキテクチャの100一例を示す。システムアーキテクチャ100(本明細書では「システム」とも呼ばれる)には、ネットワーク130を介して文書プラットフォーム120(例えば、サーバ)などのサーバに接続できる、少なくとも1つのクライアントデバイス110が含まれる。簡潔にするために、1つのクライアントデバイス110及び1つの文書プラットフォーム120がネットワーク130に接続されているように示されている。実際には、クライアントデバイス及び/または文書プラットフォームがさらに存在し得る。また、場合によっては、クライアントデバイスが文書プラットフォームの1つまたは複数の機能を実行し、文書プラットフォームがクライアントデバイスの1つまたは複数の機能を実行し得る。クライアントデバイス110は、文書プラットフォーム120から情報にアクセスし得るか、または情報を受信し得る。システムアーキテクチャ100は、クラウドベースの環境を表すことができ、これにより、文書プラットフォーム120をホストするサーバ(複数可)とクライアントデバイス110との間の通信をネットワーク130を介して可能にし、電子文書を保存及び共有できる。あるいは、システムアーキテクチャ100は、ローカルに相互接続されたシステムに適用することもできる。さらに、本開示のいくつかの態様は、スプレッドシート及びスプレッドシートを管理する文書アプリケーションを参照して説明されているが、本開示のシステム、方法、機能、及び実施形態は、任意のタイプの電子文書、及び任意のタイプのホストアプリケーションによって提供される任意のタイプのプログラムまたはサービスに適用できることは、当業者ならば理解するであろう。
【0023】
実施態様では、ネットワーク130には、パブリックネットワーク(例えば、インターネット)、プライベートネットワーク(例えば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、有線ネットワーク(例えば、イーサネット(登録商標)ネットワーク)、無線ネットワーク(例えば、802.11ネットワークまたはWi-Fiネットワーク)、セルラネットワーク(例えば、ロングタームエボリューション(LTE)ネットワーク)、ルータ、ハブ、スイッチ、サーバコンピュータ、及び/またはそれらの組み合わせが含まれ得る。クライアントデバイス110には、パーソナルコンピュータ(PC)、ラップトップ、携帯電話、スマートフォン、タブレットコンピュータ、ネットブックコンピュータ、ネットワーク接続テレビなどのコンピューティングデバイスが含まれ得る。クライアントデバイス110は、1人または複数のユーザに関連付けられ得、クライアントデバイス110は「ユーザデバイス」とも呼ばれ得る。
【0024】
図示の実施態様では、文書プラットフォーム120は、クライアントデバイス110が文書プラットフォーム120と連携して、表構造を有する文書を含む様々な文書を管理するための電子文書(「文書」)アプリケーションを実行できるように、クライアントデバイス110と対話し得る。例えば、文書アプリケーションはオンライン文書アプリケーションであり得る。いくつかの実施態様では、文書アプリケーションは、スプレッドシートアプリケーション(例えば、オンラインスプレッドシートアプリケーション)である。あるいは、文書アプリケーションは、文書プラットフォーム120を使用せずに、本明細書に記載の機能を提供することもできる。また、代替的に、文書プラットフォーム120は、(指定された文書アプリケーションではなく)Webブラウザ115と対話して、例えば、文書を表示したり、文書に関連するユーザ入力を受け取ったりすることもできる。
【0025】
クライアントデバイス110のユーザの文書は、文書プラットフォーム120によって、例えば、データストア140に保存され得る。図1では単一のデバイスとして示されているが、文書プラットフォーム120は、例えば、単一のコンピューティングデバイスとして、または複数の分散コンピューティングデバイスとして実装され得る。デバイスがサーバとして機能するか、クライアントデバイスとして機能するかは、実装されている特定のアプリケーションに依存し得ることが理解及び認識されるべきである。すなわち、コンピューティングデバイスがクライアントとして動作しているか、サーバとして動作しているかは、アプリケーション内でのコンピューティングデバイスの役割のコンテキストに依存し得る。クライアントとサーバの関係は、それぞれのデバイス上で実行され、相互にクライアント-サーバの関係を有するプログラムによって生じる。
【0026】
上記で論じたように、クライアントデバイス110と文書プラットフォーム120との対話は、クライアントデバイス110で実行されるWebブラウザ115を通じて実装され得る。「Webブラウザ」という用語は、ブラウザプログラムがスタンドアロンプログラムであるか、オペレーティングシステムの一部として含まれるブラウザプログラムなどの組み込みプログラムであるかに関係なく、ユーザがマークアップ文書(例えば、Web文書)を閲覧することを可能にする任意のプログラムを指すことを意図する。いくつかの実施態様では、本明細書で説明する文書アプリケーションは、文書アプリケーションの一部がクライアントデバイス110及び文書プラットフォーム120の1つまたは複数で実行される分散Webアプリケーションとして実装される。より詳細には、クライアントデバイス(複数可)110は、文書プラットフォーム120から文書アプリケーションを要求し得る。これに応じて、文書プラットフォーム120は、文書アプリケーションの一部をクライアント110でのローカル実行用に送信し得る。したがって、文書アプリケーションは、文書プラットフォーム120及び1つまたは複数のクライアントデバイス110にわたって分散アプリケーションとして実行し得る。このように、クライアントデバイス110は、文書プラットフォーム120によってホストされる文書アプリケーションを使用するために、ローカルに文書アプリケーションをインストールする必要がない場合がある。
【0027】
一般に、文書プラットフォーム120によって実行されるものとして実施態様で説明されている機能は、適切な場合、他の実施態様ではクライアントデバイス110でも実行できる。さらに、特定のコンポーネントに割り当てられた機能は、異なるコンポーネントまたは複数のコンポーネントが連携して動作することで実行できる。文書プラットフォーム120には、適切なアプリケーションプログラミングインターフェースを通じて他のシステムまたはデバイスに提供されるサービスとしてアクセスすることもできる。
【0028】
本開示の実施態様では、「ユーザ」は単一の個人として表され得る。ただし、本開示の他の実施態様では、「ユーザ」は、ユーザのセット及び/または自動化されたソースによって制御されるエンティティである。例えば、ソーシャルネットワーク内のコミュニティとして統合された個々のユーザのセットは、「ユーザ」と見なすことができる。別の例では、自動化されたコンシューマは、文書プラットフォーム120のトピックチャネルなどの自動化された取り込みパイプラインであり得る。
【0029】
本明細書で説明するように、文書は、アプリケーションの一部が複数のクライアントデバイス110及び文書プラットフォーム120で実行され、単一の文書で作業する複数のユーザ間の共同作業を提供する分散型Webアプリケーションとして実装され得る。例えば、複数のユーザが同時にまたは並行してそのような共同文書を編集し、各ユーザの編集内容をリアルタイムまたはほぼリアルタイム(例えば、数ミリ秒または数秒以内)で表示し得る。あるユーザが文書(例えば、文書のセル)を編集すると、その編集内容は文書プラットフォーム120に送信され、次いで、スプレッドシートを編集または表示している他の共同作業ユーザに転送され得る。このようにして、文書プラットフォーム 120は、2人のユーザが同時に特定のセルを編集しようとした場合など、共同作業ユーザ間の競合を処理することができる。例えば、文書プラットフォーム120は、受信した最初の編集を受け入れるか、または何らかの方法で、優先順位の高いユーザの編集が優先順位の低いユーザの編集よりも優先されるように、共同作業ユーザに優先順位を付け得る。ユーザの編集が文書プラットフォーム120によって拒否された場合、文書プラットフォーム120は、編集が拒否されたことをユーザに通知するメッセージをユーザに返信し得る。このようにして、複数のユーザが1つのスプレッドシート上で、リアルタイム(またはほぼリアルタイム)で共同作業を行う可能性があり得る。いくつかの実施態様では、特定の文書を表示及び共同作業する当事者は、文書の最初の作成者によって指定され得る。例えば、文書の最初の作成者には、その作成者が他の共同作業者候補の各人に対して権限を指定できるようになる「管理者」権限が与えられ得る。最初の作成者は、他の共同作業者が、スプレッドシートの編集、スプレッドシートの表示のみ、スプレッドシートの指定された部分の編集、共同作業者候補のリストへの追加ユーザの追加のうちの1つまたは複数を行う権限を有するように指定し得る。例えば、特定のユーザはスプレッドシートの特定の部分を編集でき得るが、他の指定されたセルまたはセルの領域は、そのユーザに対して「ロック」されたままになり、その結果、そのユーザはロックされたセルを表示することはできるが編集することはできない。最初の作成者はまた、スプレッドシート内で保持されている内容を動的に更新またはリフレッシュするための更新制御のセットを構成すること、及び/または少なくとも一部の共同作業者に構成を許可することができる。いくつかの実施態様では、文書は誰でも表示及び/または編集できる「パブリック」文書として指定され得る。
【0030】
さらに示されているように、文書プラットフォーム120は、文書の更新を管理するための文書更新マネージャ122を含み得る。文書更新マネージャ122は、自然言語クエリを利用して、表形式の構造を有する文書の1つまたは複数のセルに、1つまたは複数の外部データソース150-1~150-Nのデータを入力することができる。文書にスプレッドシートが含まれている場合、スプレッドシートの列に対して自然言語式を定義でき、スプレッドシートの行には、その行のデータのコンテキスト情報を提供する1つまたは複数のセルを含め得る。文書更新マネージャ122は、内容情報を、スプレッドシートの他の列に提供された他の自然言語クエリと組み合わせて使用し、行の残りの部分にデータを入力できる。
【0031】
いくつかの実施態様では、外部データソース150-1~150-Nの少なくとも1つにナレッジグラフが含まれる。ナレッジグラフは、エンティティ(例えば、オブジェクト、イベント、概念)のネットワーク、ならびに各エンティティ間の関係、及び各エンティティに関する属性またはプロパティに関する構造化データの包括的なコレクションを提供するグラフ構造のデータモデルである。ナレッジグラフは、それぞれのエンティティに対応するいくつかのノード、及びノード(エンティティ)の対間の関係を定義するいくつかのエッジを含み得る。ナレッジグラフは、無向グラフ、またはノード間の一方向の関係またはリンクを定義する有向グラフとして具体化できる。ナレッジグラフは推論機構を使用して新しい知識を導出することができる。ナレッジグラフ内のデータは、静的またはほぼ静的(例えば、本のタイトル、本の著者、本の初版発行日)から動的(例えば、書籍の販売ランキング、今年度の書籍の販売数)までの範囲になり得る。ナレッジグラフは時間の経過とともに更新されるため、ナレッジグラフ内のデータの変更の監査ログを保持できる。そのような監査ログには、特定の種類のデータに関する更新頻度を識別するために使用できるタイムスタンプまたは他のメタデータを含めることができる。ナレッジグラフには、一般的なナレッジグラフ、個人のナレッジグラフ、1つまたは複数の個体群に基づくコホートナレッジグラフなどがある。
【0032】
別の例として、外部データソースはWebサイトであり得る。例えば、ナレッジグラフにまだ存在しないエンティティの場合は、検索エンジンを使用してデータの外部データソースを見つけ出すことができる。一部のWebサイトは静的またはほぼ静的で更新頻度が低い一方、他のWebサイトは動的で更新頻度が高くなり得る。特定のWebサイトに対応する変更頻度を推定するには、Webサイトの検索履歴(例えば、検索エンジンの履歴)を使用して、Webサイトデータソースの変更頻度を推定できる。
【0033】
文書更新マネージャ122は、文書内に入力されたデータを動的及び選択的に更新またはリフレッシュできる。例えば、文書更新マネージャ122は、1つまたは複数の自然言語クエリを使用して取得されたデータが少なくとも部分的に入力された文書に関して、1つまたは複数の外部データソースから取得されたデータを使用して1つまたは複数のセルを動的に更新できる。例えば、文書の一部には、手動で入力されたデータで埋められたセルの第1のセット(例えば、複数のセル)が含まれ、文書更新マネージャ122は、外部データソースから取得されるデータで埋められたセルの第2のセットを含む文書の残りの部分を自動的に更新できる。例えば、セルの第2のセットを埋めるために使用されるデータは、時間の経過とともに変化する動的データに対応できる。いくつかの実施態様では、文書更新マネージャ122は、更新頻度(例えば、時間ごと、日ごと、月ごと、年ごと)で少なくとも1つのセルの更新を実行できる。例えば、更新頻度はスプレッドシートのセルに対応できる。ここで、更新頻度は、特定の列のすべての行のセルに対して制御可能(「列レベル制御」)、特定のセルに対して制御可能(「セルレベル制御」)、特定の行に対して制御可能(「行レベル制御」)などであり得る。例えば、行レベル制御を列レベル制御と組み合わせて提供し、行のセルの各々に対して定義された列更新頻度をオーバーライドできる。
【0034】
本明細書に記載の実施態様に従って文書内のデータを入力及び/または更新するために、文書更新マネージャ122は、文書内で定義された(例えば、スプレッドシートの列によって定義された)自然言語クエリをユーザから受信できる。文書更新マネージャ122は、自然言語クエリを、外部データソースからデータにアクセスして列のセル(例えば、スプレッドシートの列に対応する各行内のセル)を埋めるためのデータアクセスクエリに変換するクエリ変換機構を実装できる。例えば、クエリ変換機構は、自然言語クエリ内の意味関係を活用して、自然言語文字列を、外部データソースからデータにアクセスするための機械可読文字列に変換できる。変換が完了すると、文書更新マネージャ122はデータアクセスクエリを利用してセルにデータをインポートし、セルにインポートされたデータの更新頻度を決定できる。
【0035】
いくつかの実施態様では、文書更新マネージャ122は、それぞれの更新頻度がそれぞれのセルに対応するいくつかの更新頻度に従って文書を更新する。セルに対する更新頻度は、データの変更頻度の分析に基づいて決定され得る。データの変更頻度は、外部データソースに対応する監査ログから取得できる。例えば、外部データソース内のデータに対する連続した変更または更新間の経過する時間量を(例えば、連続した更新間の監査ログのタイムスタンプの比較に基づいて)決定する分析を実行できる。
【0036】
更新頻度は、連続する更新間の時間量の所与のサンプルのセットに関する更新パターンを考慮して決定できる。例えば、特定のデータ項目が、所与のサンプルのセットを考慮して、実質的に規則的または一定の頻度で変更されると判定された場合、更新頻度をその頻度に設定できる。別の例として、特定のデータ項目が様々な頻度(例えば、不規則なスケジュール)で変更されると判定される場合があり得る。例えば、第1の更新と第2の更新との間の経過する時間量は1日であり得るが、第2の更新と第3の更新との間の経過する時間量は1週間であり得る。これを考慮して、更新頻度は、所与のサンプルのセット内で決定された最小時間量、所与のサンプルのセット内で決定された平均時間量などとして設定できる。所与のサンプルのセット内のサンプル数を増やすことによって、更新頻度の計算の精度が向上し得る。
【0037】
いくつかの実施態様では、更新頻度を固定スケジュールの既定の更新頻度として設定でき、更新頻度はユーザが修正できる。ユーザは、現在の更新頻度を修正して、より頻繁な更新またはより頻繁でない更新を実行する任意選択を有し得る(例えば、更新頻度を毎日から毎週に変更する、または毎日から毎時間に変更する)。したがって、既定の更新頻度を推奨事項として提供でき、ユーザは、文書内に入力されたデータの少なくとも一部に対してカスタマイズされた更新スケジュールを設定する任意選択を有する。少なくとも1つのセルの少なくとも1つの更新頻度は、更新頻度が最適に設定されるように、自動的にまたはユーザの要求によって随時更新され得る。例えば、これまで毎年変更されていたデータ項目が、現在は毎月変更されている場合があり得る。
【0038】
それぞれの更新頻度の視覚的なインジケータを文書内に提供できる。例えば、スプレッドシートの特定の列のセルに関する更新頻度が毎日である場合、文書更新マネージャ122は、更新頻度が現在毎日に設定されている列の更新頻度の視覚的なインジケータを提供できる。したがって、文書更新マネージャ122は、1つまたは複数のセルに割り当てられたそれぞれの固定された更新スケジュールに従って、1つまたは複数の外部データソースから1つまたは複数のセルを更新するためのデータを「プル」できる。
【0039】
上記で説明したように、文書更新マネージャ122は、更新頻度に従ってデータ更新のために外部データソースをポーリングできる。変更頻度が低い(例えば、少なくとも毎月)データに関するなどのいくつかの例では、更新頻度に従って更新を実行するのは非効率であり得る。これに対処するために、いくつかの実施態様では、文書更新マネージャ122は、外部データソース(例えば、ナレッジグラフのノード)に関連付けられた1つまたは複数のサブスクライバまたはリスナを使用して(例えば、受け取る、または通知を受ける)更新イベント(例えば、ナレッジグラフを管理するサービスと文書更新マネージャ122との間のサービス間通信を使用する)をサブスクライブすることにより、文書を更新できる。サブスクライバは、外部データソース(例えば、ナレッジグラフ)の少なくとも一部に関連付け(例えば、接続)して、外部データソースの一部が更新されたタイミングを識別し、更新されたデータを文書更新マネージャに転送して、対応するセルに挿入できる。したがって、文書更新マネージャ122は、1つまたは複数のそれぞれの外部データソースに関連付けられた1つまたは複数のサブスクライバによって「プッシュ」された、1つまたは複数のセルを更新するためのデータを受信できる。
【0040】
文書更新マネージャ122は、1つまたは複数の追加機能を提供できる。いくつかの実施態様では、文書更新マネージャ122は、外部データソースへのアクセス(例えば、外部データソースへのリンク)をさらに提供できる。これにより、ユーザは文書に入力されたデータをより詳細に調べることができ、ユーザがデータの信頼性を検証する方法が提供される。例えば、ユーザが外部データソースからのデータの正確性を懸念している場合、ユーザは(例えば、提供されたリンクを介して)外部データソース自体にアクセスして、データの正確性を信頼するかどうかを判定できる。
【0041】
いくつかの実施態様では、文書更新マネージャ122は、セルに入力されたデータが正しくないか部分的に正しいかどうかをさらに判定できる。これは、ユーザがデータをセルに静的に入力した場合でも当てはまる。次いで、文書更新マネージャ122は、データに対する提案された変更の通知をユーザに送信、及び/またはデータを自動的に更新できる。例示的に、上記の表1を参照すると、文書更新マネージャが(例えば、セルの内容を外部データソースのそれぞれの内容と比較することによって)書籍「ABC」にJohn Smithという名前の共著者がいると判定した場合、文書更新マネージャ122は、セルB2を「John Doe及びJohn Smith」に更新するという提案をユーザに通知でき、及び/またはセルB2を「John Doe及びJohn Smith」に自動的に更新できる。
【0042】
いくつかの実施態様では、文書更新マネージャ122は、データ信頼性機能をさらに実装できる。例えば、データ信頼性機能は、特定のソースから取得されたデータが特定の自然言語クエリに正確に応答するという信頼性に関連付けることができる。データ信頼性機能では、信頼性のパーセンテージ、信頼性の範囲に対応するシンボル(例えば、色)(例えば、信頼性が90%を超える場合は緑の円、信頼性が50%未満の場合は赤の円)など、データの視覚的な信頼性インジケータを利用できる。ユーザは、対応するセルにデータを入力するために超過する必要があるカスタマイズ可能な信頼性しきい値を設定できる。例えば、いくつかの自然言語クエリでは、ユーザは信頼性の高いデータのみを確実に使用したい(例えば、信頼性しきい値を90%に設定することによって)場合があり、いくつかの他の自然言語クエリでは、ユーザは信頼性の低いデータに対してより大きな許容範囲(例えば、信頼性しきい値を設定しないことによって)を有する場合がある。
【0043】
いくつかの実施態様では、文書更新マネージャ122はさらに、非構造化データソース及び/または構造化データソースを活用するための自然言語クエリの意図を識別できる。例えば、スプレッドシートに関しては、文書更新マネージャは列(例えば、書籍の出版日)と1つまたは複数のコンテキスト値(例えば、Book ABC、著者John Doe)を組み合わせて、自然言語クエリの意図を識別できる。
【0044】
いくつかの実施態様では、文書更新マネージャ122は多次元データを処理できる。例えば、文書が米国の都市のリストを含むスプレッドシートであると仮定する。スプレッドシートの列の1つに「人口」があり、ユーザは複数の都市の人口に基づいて作成されたグラフ及び計算を表示することに関心を持ち得る。「人口」列の各セルは、一次元の値(例えば、最新の人口)または多次元の値(例えば、各国勢調査測定からの人口など、時間の経過に伴う人口の配列)であり得る。データはプログラムによってそれぞれのセルに入力されるため、文書更新マネージャ122はグラフ作成及び/または計算のために時系列の人口データを取得できる。
【0045】
いくつかの実施態様では、文書更新マネージャ122は、自然言語クエリに応じて取得されたデータのデータ型を識別できる。例えば、データは、GPS座標、日付、単一の整数値、整数値の配列などの特定のデータ型を有し得る。文書更新マネージャ122は、データ操作(例えば、グラフの作成、計算)を支援するために使用できるデータ型に関するメタデータを保持できる。
【0046】
上記の説明に加えて、本明細書に記載のシステム、プログラム、または機能が、ユーザ情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクション、またはアクティビティ、職業、ユーザの好み、またはユーザの現在地に関する情報)の収集を可能にするかどうか、及びいつ可能にするか、ならびに、サーバからユーザにコンテンツまたは通信が送信されるかどうか、の両方について、ユーザが選択を行うことを可能にする制御がユーザに提供され得る。さらに、特定のデータは、保存または使用される前に、個人を特定できる情報が削除されるように、1つまたは複数の方法で処理される場合がある。例えば、ユーザのアイデンティティは、ユーザ個人を特定できる情報を特定できないように処理され得るか、または、位置情報が取得される(市、郵便番号、または州レベルなど)場合、ユーザの特定の場所を特定することができないように、ユーザの地理的位置が一般化され得る。したがって、ユーザは、ユーザについてどのような情報が収集されるか、その情報がどのように使用されるか、及びユーザにどのような情報が提供されるかを制御し得る。
【0047】
図2は、本開示の実施態様による、複数のセルを有する例示的なスプレッドシート200を示す図である。スプレッドシート200のセルのうち少なくとも一部は、文書更新マネージャ(例えば、図1の文書更新マネージャ122)を使用してデータ内に入力されていると仮定する。図2にはスプレッドシートが示されているが、そのような例は限定的なものと見なされるべきではなく、表形式の構造を有する任意の適切な文書が考慮される。
【0048】
図に示すように、スプレッドシート200には、複数の列210A~210I、及び複数の行220-1~220-3が含まれている。9列及び3行が表示されていますが、列数及び行数は限定として考えられるものではない。行220-1は、対応する列のセル内に挿入されるデータの種類を示す説明行である。例えば、行220-1及び列210Aで定義されたアドレスを有するセルにテキスト「書籍名」が入力され、列210Aの他のセル(例えば、列210A及び行220-2及び220-3で定義されたアドレスを有する各セル)に保持されているデータが書籍名に対応していることを示す。例えば、行220-2及び列210Aで定義されたアドレスを有するセルには書籍名「ABC」が入力され、行220-3及び列210Aで定義されたアドレスを有するセルには書籍名「XYZ」が入力される。したがって、列210Aは「書籍名」列として定義され、それぞれの書籍名を示す値を有する複数のセルを含み、列210Bは「著者」列として定義され、列210A内のそれぞれの書籍名のそれぞれの著者を示す値を有する複数のセルを含む。
【0049】
さらに、列210Cは「初版発行日」列として定義され、列210A内の書籍名のそれぞれの初版発行日を示す値を有する複数のセル(例えば、セル230-1及び230-2)を含み、列210Dは「最新版日」列として定義され、列210A内のそれぞれの書籍名のそれぞれの最新版日を示す値を有する複数のセル(例えば、セル240-1及び240-2)を含み、列210Eは「販売ランキング」列として定義され、列210A内の書籍名のそれぞれの販売ランキングを示す値を有する複数のセル(例えば、セル250-1及び250-2)を含み、列210Fは「2019年の販売」列として定義され、列210A内の書籍名のそれぞれの2019年の販売数を示す値を有する複数のセル(例えば、セル260-1及び260-2)を含み、列210Gは「2020年の販売」列として定義され、列210A内の書籍名のそれぞれの2020年の販売数を示す値を有する複数のセル(例えば、セル270-1及び270-2)を含み、列210Hは「2021年の販売」列として定義され、列210A内の書籍名のそれぞれの2021年の販売数を示す値を有する複数のセル(例えば、セル280-1及び280-2)を含み、列210Iは「2019年~2021年の販売」列として定義され、列210A内の書籍名のそれぞれの2019年~2021年の総販売数を示す値を有する複数のセル(例えば、セル290-1及び290-2)を含む。セル230~290は、これらの特定のセル内でデータがまだ伝播されていないため、現在は空である。セル290-1は、セル270-1及び280-1に入力された値の合計として定義でき、セル290-2は、セル270-2及び280-2に入力された値の合計として定義できる。セル230~290を含むスプレッドシート200の更新に関する詳細については、図3を参照して以下に説明する。
【0050】
図3は、本開示の実施態様による、複数のセルを有する例示的なスプレッドシート300を示す図である。スプレッドシート300のセルのうち少なくとも一部は、文書更新マネージャ(例えば、図1の文書更新マネージャ122)を使用して入力されているものと仮定する。スプレッドシート300は、図2のスプレッドシート200に基づいており、列210A~210I及び行220-1~220-3を含む。
【0051】
図2のスプレッドシート200のセル230~290にはデータが入力されている。さらに、列210C~210Hのそれぞれには、それぞれの列内のセルを更新するための推奨事項または提案に対応する既定の更新頻度310-1~310-6が割り当てられている。図に示すように、既定の更新頻度310-1は、列210Cのセルが推奨によって更新されない静的列として列210Cを定義し、既定の更新頻度310-2は、列210Dのセルが推奨によって毎年更新される年間更新列として列210Dを定義し、既定の更新頻度310-3は、列210Eのセルが推奨によって毎日更新される毎日更新列として列210Eを定義し、既定の更新頻度310-4は、列210fのセルが推奨によって更新されない静的列として列210fを定義し、既定の更新頻度310-5は、列210Gのセルが推奨によって更新されない静的列として列210Gを定義し、既定の更新頻度310-6は、列210Hのセルが推奨によって毎週更新される毎週更新列として列210Hを定義する。列210Iのセルの値は、同じ行内の列210Fから210Hまでのセルの値の合計(例えば、SUM()関数を使用)として定義される。したがって、この例では、列210Hに現在設定されている毎週更新頻度によって、列210Iのセルの毎週更新頻度が暗黙的に設定される。既定の更新頻度の決定に関する詳細は、上記の図1及び以下の図4図5で説明する。
【0052】
この例では、既定の更新頻度310-1、310-2、310-4、310-5、及び310-6が、それぞれの列に現在設定されている更新頻度として定義されている。すなわち、ユーザはこれらの既定の更新頻度の推奨事項を受け入れたことになる。ただし、ユーザが既定の更新頻度で提供される更新間隔をより長くまたはより短くしたい場合は、ユーザは、現在設定されている更新頻度及び/または既定の更新頻度の推奨をオーバーライドするユーザ定義の更新頻度を指定できる。この例では、ユーザ定義の更新頻度320が、列210Eの現在設定されている更新頻度として提供される。ユーザ定義の更新頻度320は、既定の更新頻度310-3で推奨される毎日更新とは対照的に、列のセルが毎週更新される列として列210Dを定義する。
【0053】
更新頻度310-1~310-6及び320のそれぞれは、スプレッドシート300内で視覚的なインジケータとして提供され得る。これらの視覚インジケータは、推奨または既定の更新頻度、及び/または現在設定されている更新頻度(例えば、310-1などの推奨される更新頻度、または320などのユーザ定義の更新頻度)を分析して、ユーザが現在設定されている更新頻度310-1~310-6を修正したいかどうかを判断するための視覚インターフェースをユーザに提供する。
【0054】
この例示的な例では、スプレッドシート300は、それぞれの更新頻度に従って更新されているように示されている。ただし、このような例は限定的なものと見なされるべきではない。例えば、図1を参照して上記で説明したように、及び図4図5を参照して以下でさらに詳しく説明するように、スプレッドシート300は、1つまたは複数の外部データソースに関連付けられた1つまたは複数のサブスクライバを利用して更新でき、各サブスクライバは、対応する外部データソースでデータ更新を検出し、そのデータ更新を文書更新マネージャにプッシュして更新する。
【0055】
図4は、本発明の実施例による、知識監視及び自然言語処理に基づいて文書を動的かつ選択的に更新する方法400のフロー図を示す。方法400は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。一実施態様では、方法400の一部またはすべての動作は、図1の文書更新マネージャ122によって実行され得る。
【0056】
ブロック410において、処理ロジックは、複数のセルを含む表形式の構造を有する文書を識別し、文書は、少なくとも1つのセルの内容を自動的に更新するための更新制御のセットに関連付けられている。更新制御のセットは、それぞれのセル(複数可)に関連付けられた文書に保存され得る(例えば、データストア140内)。例えば、文書は、複数の列及び複数の行によって定義されたセルを含むスプレッドシートであり得る。更新制御のセットには、文書のそれぞれのセルを更新するための1つまたは複数の更新制御を含み得る。例えば、文書がスプレッドシートである場合、各更新制御は、セルの列を更新するための列レベルの更新制御、セルの行を更新するための行レベルの更新制御、または個別のセルを更新するためのセルレベルの更新制御とし得る。
【0057】
いくつかの実施態様では、更新制御のセットには、少なくとも1つのセルに対応する更新頻度を含む。処理ロジックは、更新頻度に従って少なくとも1つの外部データソースからデータを「プル」することにより、少なくとも1つのセルを更新するためのデータを取得し得る。更新頻度に関する詳細は、図1図3及び図5Aを参照して上記で説明した。いくつかの実施態様では、更新制御の既定設定を提供することは、少なくとも1つの外部データソース(例えば、ナレッジグラフ)に関連付けられた少なくとも1つのサブスクライバまたはリスナを実装することを含む。処理ロジックは、外部データソースの一部に関する更新イベントが識別されると、少なくとも1つのサブスクライバによって「プッシュ」されたデータを受信することにより、少なくとも1つのセルのデータを取得できる。サブスクライバに関する詳細は、図1図3を参照して上記で説明され、図5Bを参照して以下で説明されている。
【0058】
いくつかの実施態様では、文書を識別することは、1つまたは複数の自然言語クエリを使用して文書の少なくとも一部を生成することを含む。文書の少なくとも一部を生成することは、更新制御のセットを定義することを含み得る。例えば、更新制御のセットを定義することは、少なくとも1つのセルに対応する更新頻度を決定することを含む。別の例として、更新制御のセットを定義することは、少なくとも1つのサブスクライバを少なくとも1つの外部データソースに関連付けることを含み得る。
【0059】
ブロック420において、処理ロジックは、更新制御のセットに基づいて、少なくとも1つのセルの内容の自動更新をトリガするイベントを検出する。いくつかの実施態様では、イベントは、少なくとも1つのセルの内容の前回の更新から経過した時間量が、少なくとも1つのセルの内容を更新するための更新頻度に等しいことを検出することである。いくつかの実施態様では、イベントは、少なくとも1つのセルの内容を更新するための、ナレッジグラフのノードに接続されたサブスクライバからの更新通知を受信することである。
【0060】
ブロック430において、処理ロジックは更新制御のセットに従って少なくとも1つの外部データソースからデータを取得し、ブロック440において、(例えば、少なくとも1つのセルの内容の更新を実行することによって、または更新を実行するように指定された対応するクライアントデバイスアプリケーションに外部データソースからのデータを提供することによって)処理ロジックにより、少なくとも1つの外部データソースからのデータに基づいて少なくとも1つのセルの内容が更新される。ブロック410~440に関する詳細は、図1図4を参照して上記では説明され、図5A図5Bを参照して以下で説明されている。
【0061】
図5Aは、文書内に保持されている内容を動的に更新する方法500Aのフロー図を示す。方法500Aは、ハードウェア(回路、専用ロジックなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。一実施態様では、方法500Aの一部またはすべての動作は、図1の文書更新マネージャ122によって実行され得る。
【0062】
ブロック510Aにおいて、処理ロジックは、表形式の構造を有する文書の少なくとも1つのセルに保持されている内容の更新間の時間量に対応する更新頻度を定義する。例えば、文書はスプレッドシートであり得る。いくつかの実施態様では、更新頻度は、更新頻度の推奨に対応する既定の更新頻度である。いくつかの実施態様では、更新頻度は、更新頻度の推奨をオーバーライドするユーザ定義の更新頻度である。
【0063】
いくつかの実施態様では、少なくとも1つのセルに関連付けられた既定の更新頻度を提示するためのユーザインターフェースが提供される。少なくとも1つのセルのユーザ定義の更新頻度を指定するユーザ入力を受信すると、ユーザインターフェースを修正して、少なくとも1つのセルに関連付けられたユーザ定義の更新頻度を表示できる。さらに、データストアに記憶されている更新制御のセットを修正して、少なくとも1つのセルのユーザ定義の更新頻度を含め得る。
【0064】
いくつかの実装では、更新頻度は、スプレッドシートの特定の列内のセルに保持されているデータの更新を制御するための列レベルの更新制御である。いくつかの実施態様では、更新頻度は、スプレッドシートの特定の行内のセルに保持されているデータの更新を制御するための行レベルの更新制御である。いくつかの実施態様では、更新頻度は、スプレッドシートの1つまたは複数の個別のセルに保持されているデータの更新を制御するためのセルレベルの更新制御である。
【0065】
ブロック520Aにおいて、処理ロジックは、少なくとも1つのセルに保持されている内容への最新の更新から経過した時間量を決定し、ブロック530Aにおいて、処理ロジックは少なくとも1つの外部データソースからデータを取得して、少なくとも1つのセルを更新する。データ取得は、少なくとも1つの外部データソース(例えば、ナレッジグラフ、Webページ)を指定する自然言語クエリを使用して文書をプログラミングすることによって実装できる。処理ロジックは、クエリ変換機構を利用して、自然言語クエリを、少なくとも1つの外部データソースからデータにアクセスして少なくとも1つのセルを埋めるためのデータアクセスクエリに変換できる。例えば、クエリ変換機構は、自然言語クエリ内の意味関係を活用して、自然言語文字列を、少なくとも1つの外部データソースからデータにアクセスするための機械可読文字列に変換できる。
【0066】
セルの更新頻度は、(例えば、連続した更新間のタイムスタンプの比較に基づいて)外部データソース内のデータの連続した更新間で経過する平均時間量としての時間量に対するデータの変更頻度の分析に基づき得る。例えば、外部データソースがナレッジグラフである場合、ナレッジグラフ内のデータの変更の監査ログを保持できる。そのような監査ログは、特定の種類のデータに関する更新頻度を識別するために使用できるタイムスタンプまたは他のメタデータを含み得る。別の例として、外部データソースがWebサイトである場合、Webサイトの検索履歴(検索エンジンの履歴など)を使用して、Webサイトの変更頻度を推定できる。ブロック510A~530Aに関する詳細は、図1図4を参照して上記で説明されている。
【0067】
図5Bは、本開示の実施態様による、文書内に保持されている内容を動的に更新する方法500Bのフロー図を示す。方法500Bは、ハードウェア(回路、専用ロジックなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。一実施態様では、方法500Aの一部またはすべての動作は、図1の文書更新マネージャ122によって実行され得る。
【0068】
ブロック510Bにおいて、処理ロジックは、表形式の構造を有する文書の少なくとも1つのセルに保持されている内容に関する更新を監視するために、サブスクライバを外部データソースに関連付ける。いくつかの実施態様では、文書はスプレッドシートである。例えば、サブスクライバをナレッジグラフに接続して、ノードへの更新を受信できる(例えば、ナレッジグラフを管理するサービスによって関連する更新が公開された場合)。
【0069】
ブロック520Bにおいて、処理ロジックは、サブスクライバを介して、少なくとも1つのセルを更新するためのデータを受信する。例えば、外部データソースの一部(例えば、ナレッジグラフのノード)に対する更新イベントを識別すると、サブスクライバはセルに挿入する必要がある更新データを提供できる。ブロック510B及び520Bに関する詳細は、図1図4を参照して上記で説明されている。
【0070】
図6は、本開示の実施態様による、例示的なコンピュータシステムを示すブロック図である。コンピュータシステム600は、図1の文書プラットフォーム130またはクライアントデバイス110であり得る。マシンは、エンドポイントサーバネットワーク環境ではサーバまたはエンドポイントマシンとして動作し得るか、またはピアツーピア(または分散)ネットワーク環境ではピアマシンとして動作し得る。マシンには、テレビ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、Webアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、または任意のマシンであって、そのマシンによって実行される動作を指定する1組の命令を(順次的に、またはそれ以外の方法で)実行できる任意のマシンであり得る。さらに、単一のマシンのみが例示されるが、用語「マシン」には、本明細書で論じる方法論のうちの任意の1つまたは複数を実行するために、1組(または複数の組)の命令を個々でまたは共同して実行するマシンの任意の集合も含まれるものとする。
【0071】
例示のコンピュータシステム600には、処理デバイス(プロセッサ)602、メインメモリ604(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)、ダブルデータレート(DDR SDRAM)、またはDRAM(RDRAM(登録商標))などのダイナミックランダムアクセスメモリ(DRAM)など)、スタティックメモリ606(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、及びデータ記憶デバイス618が含まれており、これらはバス640を介して相互に通信する。
【0072】
プロセッサ(処理デバイス)602は、マイクロプロセッサ、中央処理装置などのような1つまたは複数の汎用処理デバイスを表す。より具体的には、プロセッサ602は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサ、あるいは命令セットの組み合わせを実装するプロセッサであり得る。プロセッサ602はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理装置であり得る。プロセッサ602は、本明細書で論じる動作を実行するための命令605(例えば、チャンネルラインナップの視聴者数を予測するための命令)を実行するように構成されている。
【0073】
コンピュータシステム600には、ネットワークインターフェースデバイス608がさらに含まれ得る。コンピュータシステム600にはまた、ビデオ表示ユニット610(例えば、液晶ディスプレイ(LCD)またはブラウン管(CRT))、入力デバイス612(例えば、キーボード、及び英数字キーボード、モーションセンサ入力デバイス、タッチスクリーン)、カーソル制御デバイス614(例えば、マウス)、及び信号生成デバイス620(例えば、スピーカ)が含まれ得る。
【0074】
データ記憶デバイス618には、本明細書で説明した方法論または機能の1つまたは複数を具体化する(例えば、最適化されたエンコーダパラメータ設定を取得するための)命令605の1つまたは複数のセットが記憶された非一時的な機械可読記憶媒体624(コンピュータ可読記憶媒体でもある)を含み得る。命令は、コンピュータシステム600によって実行中、完全にまたは少なくとも部分的にメインメモリ604内及び/またはプロセッサ602内に存在し得、メインメモリ604及びプロセッサ602はまた、機械可読記憶媒体を構成する。命令は、ネットワークインターフェースデバイス608を介してネットワーク630経由でさらに送信または受信され得る。
【0075】
一実施態様では、命令605には、口頭の声明を投票質問として指定するための命令が含まれる。コンピュータ可読記憶媒体624(機械可読記憶媒体)は、例示的な実施態様では単一の媒体として示されているが、用語「コンピュータ可読記憶媒体」及び「機械可読記憶媒体」には、1つまたは複数の命令セットを記憶する単一の媒体または複数の媒体(例えば、集中型または分散型のデータベース、及び/または関連するキャッシュ及びサーバ)が含まれるものと解釈されるべきである。用語「コンピュータ可読記憶媒体」及び「機械可読記憶媒体」には、マシンによって実行される命令のセットを記憶、符号化、または搬送することができ、マシンに本開示の方法論の1つまたは複数を実行させる任意の媒体も含まれるものと解釈される。したがって、用語「コンピュータ可読記憶媒体」及び「機械可読記憶媒体」には、限定されないが、ソリッドステートメモリ、光学媒体、磁気媒体が含まれるものとする。
【0076】
本明細書全体を通して「1つの実施態様(one implementation)」または「一実施態様(an implementation)」への言及は、実施態様に関連して説明されている特定の特徴、構造、または特性が少なくとも1つの実施態様に含まれていることを意味する。したがって、本明細書の様々な箇所で「1つの実施態様では(in one implementation)」または「一実施態様では(in an implementation)」という語句が現れるが、状況に応じて、同じ実施態様を指す場合もあるが、必ずしもそうではない。さらに、特定の特徴、構造、または特性は、1つまたは複数の実施態様において任意の適切な方法で組み合わせ得る。
【0077】
用語「含む(includes)」、「含んでいる(including)」、「有する(has)」、「含む(contains)」、それらの変形、及びその他の類似の単語が詳細な説明または特許請求の範囲のいずれかで使用される限りにおいて、これらの用語は、追加の要素またはその他の要素を排除することなく、オープントランジションワードとしての「含む(comprising)」という用語と同様に包括的であることが意図されている。
【0078】
本出願で使用される用語「構成要素」、「モジュール」、「システム」などは、一般に、コンピュータ関連のエンティティ、ハードウェア(例えば、回路)、ソフトウェア、ハードウェアとソフトウェアの組み合わせ、または1つまたは複数の特定の機能を備えた動作マシンに関連するエンティティを指すことを意図している。例えば、構成要素は、限定されないが、プロセッサ(例えば、デジタル信号プロセッサ)上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/またはコンピュータであり得る。例示として、コントローラ上で実行されるアプリケーション及びコントローラの両方が構成要素になり得る。1つまたは複数の構成要素は、プロセス及び/または実行スレッド内に存在し得、構成要素は、1つのコンピュータ上にローカライズされ得るか、及び/または2つ以上のコンピュータ間に分散され得る。さらに、「デバイス」は、特別に設計されたハードウェア、ハードウェアが特定の機能(関心点及び/または記述子の生成)を実行できるようにするソフトウェアの実行によって特化された汎用ハードウェア、コンピュータ可読媒体上のソフトウェア、またはそれらの組み合わせの形態で提供され得る。
【0079】
前述のシステム、回路、モジュールなどは、複数の構成要素及び/またはブロック間の相互作用に関して説明されている。そのようなシステム、回路、構成要素、ブロックなどには、それらの構成要素または指定されたサブ構成要素、指定された構成要素またはサブ構成要素の一部、及び/または追加の構成要素が含まれ得、前述の様々な順列及び組み合わせに従うことが理解されよう。サブ構成要素は、親構成要素(階層型)に含まれるのではなく、他の構成要素と通信可能に結合された構成要素として実装することもできる。さらに、1つまたは複数の構成要素は、統合機能を提供する単一の構成要素に組み合わされ得るか、またはいくつかの別個のサブ構成要素に分割され得ること、及び管理層などの任意の1つまたは複数の中間層が、統合機能を提供するために、そのようなサブ構成要素と通信可能に結合するために提供され得ることに留意されたい。本明細書に記載の任意の構成要素はまた、本明細書に具体的に記載されていないが、当業者には既知の1つまたは複数の他の構成要素と相互作用し得る。
【0080】
さらに、「例」または「例示的」という単語は、例、実例、または例示として機能することを意味するために本明細書で使用される。本明細書で「例示的」として記載された任意の態様または設計は、必ずしも他の態様または設計よりも好ましい、または有利であると解釈されるべきではない。むしろ、「例」または「例示的」という単語の使用は、概念を具象的な態様で提示することを意図したものである。本出願で使用されるように、用語「または」は、排他的な「または」ではなく包含的な「または」を意味することが意図される。すなわち、別様に指定されない限り、または文脈から明らかでない限り、「XはAまたはBを使用する」とは、自然な包括的置換を意味することが意図される。すなわち、XがAを使用する場合、XがBを使用する場合、または、XがA及びBの両方を使用する場合、前述のいずれの場合でも、「XはAまたはBを使用する」が満たされる。さらに、本出願及び添付の請求項で使用される冠詞「a」及び「an」は、特に指定がない限り、または文脈から単数形を指すことが明らかでない限り、一般に「1つまたは複数」を意味すると解釈されるべきである。
【0081】
最後に、本明細書に記載の実施態様には、ユーザ及び/またはユーザの活動を記述するデータの収集が含まれる。一実施態様では、そのようなデータは、ユーザがこのデータの収集に同意した場合にのみ収集される。いくつかの実施態様では、ユーザはデータ収集を明示的に許可するように求められる。さらに、ユーザはそのようなデータ収集活動への参加をオプトインまたはオプトアウトし得る。一実施態様では、収集されたデータは、収集されたデータからユーザの身元を特定することができないように、任意の統計パターンを取得するための任意の分析を実行する前に匿名化される。
図1
図2
図3
図4
図5A
図5B
図6
【国際調査報告】