(57)【要約】  非構造化入力を用いて異種データストアを更新するアプローチは、非構造化テキスト入力を受信し、非構造化テキスト入力を解釈するためのテンプレートを受信し、エンティティ分類器を使用して非構造化テキスト入力内のエンティティを特定し、テンプレートに基づいて、特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、テンプレート及び選択された親エンティティに基づいて、特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、特定されたエンティティ及びテンプレートに基づいて、非構造化テキスト入力内のアクションアイテムを特定し、意図分類器を使用してアクションアイテムの意図を決定し、そして、決定された意図、特定されたエンティティ、及び選択された子エンティティに基づいてデータストアを更新することを含む。【特許請求の範囲】
【請求項１】
自然言語処理のための方法であって、
サーバの１つ以上のプロセッサにより、非構造化テキスト入力を受信し、
前記１つ以上のプロセッサにより、前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記１つ以上のプロセッサにより、前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上のプロセッサにより、前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記１つ以上のプロセッサにより、前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上のプロセッサにより、前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記１つ以上のプロセッサにより、前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ことを有する方法。
【請求項２】
前記データストアを更新することは更に、前記選択された親エンティティに基づく、請求項１に記載の方法。
【請求項３】
前記エンティティを特定することは、前記エンティティの各々のタイプ、前記エンティティの各々の値、及び前記特定することにおける信頼度を特定することを有する、請求項１又は２に記載の方法。
【請求項４】
前記エンティティの各々のタイプは、組織、人物、日付、時間、パーセンテージ、金銭的価値、及びピックリストタイプから成る群から選択される、請求項３に記載の方法。
【請求項５】
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて前記データストアを更新することは、
前記アクションアイテム内で特定された１つ以上のエンティティの前記決定された意図及びタイプを、前記テンプレート内のアクションアイテム署名とマッチングすることと、
前記アクションアイテム内で特定された前記１つ以上のエンティティの署名及び値に基づいてデータベースクエリを生成することと、
を有する、請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記データベースクエリに含めるべき前記データストア内のレコードからのフィールドが、前記アクションアイテム内で特定された対応するエンティティのタイプによって、前記テンプレート内で特定される、請求項５に記載の方法。
【請求項７】
前記１つ以上の可能性ある親エンティティを特定することは、前記データストア内の１つ以上の親テーブルのレコード内で、前記１つ以上の親テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の親テーブルは前記テンプレート内で特定される、
請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記１つ以上の可能性ある子エンティティを特定することは、前記データストア内の１つ以上の子テーブルのレコード内で、前記１つ以上の子テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の子テーブルは前記テンプレート内で特定され、
前記レコードは、前記選択された親エンティティに対応するレコードに関連する、
請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記１つ以上の可能性ある子エンティティを特定することは更に、
前記テンプレート内のフィルタに基づいて前記レコードをフィルタリングすること、又は
前記テンプレートによって指定される順序に基づいて前記１つ以上の可能性ある子エンティティを順序付けること、
のうちの１つ以上を有する、請求項８に記載の方法。
【請求項１０】
前記更新することに基づいて前記データストアへの変更を公表する、ことを更に有する請求項１乃至９のいずれかに記載の方法。
【請求項１１】
非構造化テキスト入力は、オーディオ入力として受信され、
当該方法は更に、前記オーディオ入力に対して音声認識を実行することを有する、
請求項１乃至９のいずれかに記載の方法。
【請求項１２】
実行可能コードを有した非一時的な機械読み取り可能媒体であって、前記実行可能コードは、コンピューティング装置に関連する１つ以上のプロセッサによって実行されるときに、該１つ以上のプロセッサに方法を実行させるように適応されており、当該方法は、
非構造化テキスト入力を受信し、
前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、そして、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ことを有する、
非一時的な機械読み取り可能媒体。
【請求項１３】
前記エンティティの各々のタイプは、組織、人物、日付、時間、パーセンテージ、金銭的価値、及びピックリストタイプから成る群から選択される、請求項１２に記載の非一時的な機械読み取り可能媒体。
【請求項１４】
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて前記データストアを更新することは、
前記アクションアイテム内で特定された１つ以上のエンティティの前記決定された意図及びタイプを、前記テンプレート内のアクションアイテム署名とマッチングすることと、
前記アクションアイテム内で特定された前記１つ以上のエンティティの署名及び値に基づいてデータベースクエリを生成することと、
を有する、請求項１２又は１３に記載の非一時的な機械読み取り可能媒体。
【請求項１５】
前記データベースクエリに含めるべき前記データストア内のレコードからのフィールドが、前記アクションアイテム内で特定された対応するエンティティのタイプによって、前記テンプレート内で特定される、請求項１４に記載の非一時的な機械読み取り可能媒体。
【請求項１６】
前記１つ以上の可能性ある親エンティティを特定することは、前記データストア内の１つ以上の親テーブルのレコード内で、前記１つ以上の親テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の親テーブルは前記テンプレート内で特定される、
請求項１２乃至１５のいずれかに記載の非一時的な機械読み取り可能媒体。
【請求項１７】
前記１つ以上の可能性ある子エンティティを特定することは、前記データストア内の１つ以上の子テーブルのレコード内で、前記１つ以上の子テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の子テーブルは前記テンプレート内で特定され、
前記レコードは、前記選択された親エンティティに対応するレコードに関連する、
請求項１２乃至１６のいずれかに記載の非一時的な機械読み取り可能媒体。
【請求項１８】
メモリと、
前記メモリに結合された１つ以上のプロセッサと、
を有し、
前記１つ以上のプロセッサは、
非構造化テキスト入力を受信し、
前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、そして、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ように構成される、
コンピューティング装置。
【請求項１９】
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて前記データストアを更新するために、前記１つ以上のプロセッサは、
前記アクションアイテム内で特定された１つ以上のエンティティの前記決定された意図及びタイプを、前記テンプレート内のアクションアイテム署名とマッチングし、
前記アクションアイテム内で特定された前記１つ以上のエンティティの署名及び値に基づいてデータベースクエリを生成する、
ように構成される、請求項１８に記載のコンピューティング装置。
【請求項２０】
前記１つ以上の可能性ある親エンティティを特定するために、前記１つ以上のプロセッサは、前記データストア内の１つ以上の親テーブルのレコード内で、前記１つ以上の親テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索するように構成され、
前記１つ以上の親テーブルは前記テンプレート内で特定され、
前記１つ以上の可能性ある子エンティティを特定するために、前記１つ以上のプロセッサは、前記データストア内の１つ以上の子テーブルのレコード内で、前記１つ以上の子テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索するように構成され、
前記１つ以上の子テーブルは前記テンプレート内で特定され、
前記レコードは、前記選択された親エンティティに対応するレコードに関連する、
請求項１８又は１９に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、“Using  Unstructured  Input  to  Update  Heterogeneous  Data  Stores”と題されて２０１８年９月１８日に出願された米国特許出願第１６／１３４，９５６号に対する優先権及びその利益を主張するものであり、その全体をここに援用する。
【０００２】
この特許文献の開示の一部は、著作権保護の対象となる素材を含んでいる。著作権者は、それは特許商標庁の特許ファイル又は記録において行われることであるので、本文書又は特許開示の何者かによるファクシミリ複製について異論はないが、他の点については全ての著作権を保持する。
【０００３】
本開示は、概してデータベースシステムに関し、より具体的には、非構造化入力を用いて異種（ヘテロジニアス）データストアを更新するためのシステム及び方法に関する。
【背景技術】
【０００４】
この背景セクションで論じられる事項は、単に背景セクションでの言及の結果として、従来技術であるとして仮定されるべきでない。同様に、背景セクションにて言及される又は背景セクションの事項に関連付けられる問題は、従来技術において以前から認識されていたと仮定されるべきでない。
【０００５】
コンピュータ及びソフトウェアの開発は、クライアント−サーバモデルから、インターネット又は他のネットワークを介してデータ及びサービスへのアクセスを提供するネットワークベースの処理システムへと進化しつつある。ネットワーク化されたアプリケーションを専用のサーバハードウェア上でホストする伝統的なシステムとは対照的に、“クラウド”コンピューティングモデルは、アプリケーションが、インフラストラクチャプロバイダによって提供される“サービスとして（as  a  service）”、ネットワーク上で提供されることを可能にする。インフラストラクチャプロバイダは典型的に、ユーザ（例えば、クラウドベースのサービスの消費者）がもはや専用サーバハードウェアを稼働及びサポートする必要がないように、ユーザが開発したアプリケーションを配信するのに使用される基礎となるハードウェア及び他のリソースを抽象化する。専用のサーバハードウェアをサポートして、専用のネットワークインフラストラクチャ、電気的制御及び温度制御、物理的セキュリティ、並びに他のロジスティクスをもはやユーザが提供する必要がないので、クラウドコンピューティングモデルは、アプリケーションの寿命を通してユーザに実質的なコスト削減を提供できることが多い。
【０００６】
クラウドプラットフォーム（すなわち、クラウドコンピューティングのためのコンピューティングプラットフォーム）は、リモートサーバの共有ネットワークを用いてデータを保存、管理、及び処理するために、多数のユーザによって使用され得る。ユーザは、データの保存、管理、及び処理を扱うために、クラウドプラットフォーム上でアプリケーションを開発し得る。一部のケースで、クラウドプラットフォームはマルチテナントデータベースシステムを利用し得る。ユーザは、様々なユーザ装置（例えば、デスクトップコンピュータ、ラップトップ、スマートフォン、タブレット、又は他のコンピューティングシステムなど）を使用してクラウドプラットフォームにアクセスし得る。一例において、クラウドプラットフォームは、カスタマーリレーションシップマネジメント（ＣＲＭ）ソリューションをサポートし得る。これは、セールス、サービス、マーケティング、コミュニティ、分析、アプリケーション、モノのインターネット（ＩｏＴ）に対するサポートを含み得る。
【０００７】
マルチテナントデータベースシステムでは、異なるテナントのデータをテナント固有のスキーマ及び／又はデータ構成に従って格納することは珍しいことではない。これは、異種の複数のデータストアを含んだデータベースを生み出す。データストアの各々が異なるスキーマ及び／又はデータ構成に従って異なる情報を格納するからである。これは、ユーザ及び開発者の双方に難題を提示する。何故なら、ユーザが、新しいデータを入力する及び／又はデータ変更を指定するのに、基礎となるデータストアのスキーマによって典型的に制約されるユーザインタフェースを中心に構築される構造化アプローチを使用することに制約されるからである。
【０００８】
従って、ユーザがデータへの追加及び／又は変更を指定するために使用し得る改良された方法及びシステム、より具体的には、ユーザが非構造化入力を用いて追加及び／又は変更を指定することを可能にする方法及びシステムを有することが有利となる。
【図面の簡単な説明】
【０００９】
【図１】一部の実施形態に従ったコンピューティングシステムの簡略図である。
【図２】一部の実施形態に従った他のコンピューティングシステムの簡略図である。
【図３】一部の実施形態に従った非構造化入力をサポートするコンピューティングシステムの簡略図である。
【図４】一部の実施形態に従った非構造化入力を処理する方法の簡略図である。
【図５】一部の実施形態に従ったアクションアイテムを処理する方法の簡略図である。
【図６】一部の実施形態に従った非構造化入力を解釈するためのテンプレートの一例の簡略図である。
【図７】一部の実施形態に従った非構造化自然言語入力の一例の簡略図である。
【００１０】
図面において、同じ参照符号を持つ要素は、同じ又は同様の機能を持つ。
【発明を実施するための形態】
【００１１】
態様、実施形態、実装、又は用途を例示するこの明細書及び添付の図面は、限定的なものと解釈されるべきでなく、請求項が、保護される発明を規定する。この説明及び請求項の精神及び範囲から逸脱することなく、種々の機械的、組成的、構造的、電気的、及び動作的な変更が為され得る。一部の例において、周知の回路、構造、又は技術は、それらは当業者に知られているので、詳細に図示したり説明したりしていない。２つ以上の図における似通った参照符号は、同じ又は同様の要素を表している。
【００１２】
この説明においては、本開示と一貫した一部の実施形態を記述する具体的詳細事項が記載されている。それらの実施形態の完全な理解を提供するために、数多くの具体的詳細事項が記載される。しかしながら、当業者に明らかになることには、一部の実施形態は、それらの具体的詳細事項の一部又は全てなしで実施され得る。ここに開示される特定の実施形態は、例示的なものであり、限定的なものではない。当業者は、ここに具体的に記載されていないが本開示の範囲及び精神の中にある他の要素に気付き得る。また、不要な繰り返しを避けるため、１つの実施形態に関連して図示して説明された１つ以上の機構が、別のことが具体的に記載されていない限り、あるいは、該１つ以上の機構が実施形態を機能しないものにしない限り、他の実施形態に組み込まれてもよい。
【００１３】
マルチテナントクラウドベースのアーキテクチャは、データセキュリティを犠牲にすることなく、顧客テナント間でのコラボレーション、統合、及びコミュニティベースの協力を向上させるように開発されてきた。一般的に言えば、マルチテナントとは、単一のハードウェア及びソフトウェアプラットフォームが、共通のデータストレージ要素（“マルチテナントデータベース”とも称される）から複数のユーザグループ（“組織”又は“テナント”とも称される）を同時にサポートするシステムを指す。マルチテナント設計は、従来のサーバ仮想化システムに対して、多数の利点を提供する。第一に、マルチテナントプラットフォームオペレータは、テナントコミュニティ全体からの集合体の情報に基づいてプラットフォームに改良を行えることが多い。さらに、マルチテナント環境内の全てのユーザが共通の処理空間内でアプリケーションを実行するので、マルチテナントプラットフォーム内のユーザに対して特定のセットのデータへのアクセスを許可又は拒否することが比較的容易であり、それによって、アプリケーションと種々のアプリケーションによって管理されるデータとの間の協調及び統合が改善される。従って、マルチテナントアーキテクチャは、複数組のユーザ間での同様のアプリケーション機能の簡便でコスト効率的な共有を可能にする。
【００１４】
図１は、一部の実施形態に従ったコンピューティングシステム１１０の簡略図である。図１に示すように、コンピューティングシステム１１０は、ユーザシステム１１２、ネットワーク１１４、データベースシステム１１６、プロセッサシステム１１７、アプリケーションプラットフォーム１１８、ネットワークインタフェース１２０、テナントデータストレージ１２２、システムデータストレージ１２４、プログラムコード１２６、及び、データベースシステムプロセス及び例えばアプリケーションホスティングサービスの一部としてアプリケーションを走らせることなどのテナント固有プロセスを実行するためのプロセス空間１２８を含んでいる。一部の実施形態において、コンピューティングシステム１１０は、列挙されたコンポーネントの全てを有していなくてもよく、及び／又は、上に列挙されたコンポーネントに代えて又は加えて他のコンポーネントを有していてもよい。
【００１５】
一部の実施形態において、コンピューティングシステム１１０は、複数のユーザ及び／又はテナントにオンデマンドデータベースサービスを提供する。ユーザシステム１１２は、データベースユーザシステムにアクセスするためにユーザによって使用される任意の機械又はシステムとし得る。一部の例において、ユーザシステム１１２のいずれかは、ハンドヘルドコンピューティング装置、携帯電話、ラップトップコンピュータ、ノートパッドコンピュータ、ワークステーション、コンピューティング装置のネットワーク、及び／又はこれらに類するものとし得る。図１に例示するように（及び図２に更に詳細に例示するように）、ユーザシステム１１２は、データベースシステム１１６であるオンデマンドデータベースサービスと、ネットワーク１１４を介してインタラクトし得る。
【００１６】
例えばデータベースシステム１１６を使用して実装され得るものなどのオンデマンドデータベースサービスは、データベースシステム１１６を所有し、維持し、又はそれへのアクセスを提供する（１つ以上の）企業の外部のユーザに利用可能にされるサービスである。上述のように、そのようなユーザは、データベースシステム１１６を構築及び／又は維持することに関心を持つ必要はない。代わりに、データベースシステム１１６によって提供されるサービスをユーザが必要とするときに（例えば、ユーザの要求に応じて）、データベースシステム１１６によって提供されるリソースがユーザによる使用に利用可能にされ得る。一部のオンデマンドデータベースサービスは、格納される１つ以上のテナントからの情報を共通データベースイメージのテーブルに格納して、マルチテナントデータベースシステム（ＭＴＳ）を形成し得る。従って、“オンデマンドデータベースサービス１１６”及び“データベースシステム１１６”は、ここでは交換可能に使用される。用語“マルチテナントデータベースシステム”は、データベースシステムのハードウェア及び／又はソフトウェアの様々な要素が、１つ以上の顧客又はテナントによって共有され得るシステムを指すことができる。例えば、所与のアプリケーションサーバは、多数の顧客のために複数の要求を同時に処理することができ、所与のデータベーステーブルは、潜在的に遥か多数の顧客のためのフィードアイテムなどの一連のデータを格納することができる。データベースイメージは、１つ以上のデータベースオブジェクトを含み得る。リレーショナルデータベース管理システム（ＲＤＢＭＳ）及び／又は等価物は、（１つ以上の）データベースオブジェクトに対する情報の記憶及び検索を実行し得る。
【００１７】
アプリケーションプラットフォーム１１８は、例えばハードウェアインフラストラクチャ及び／又はオペレーティングシステムなどのソフトウェアインフラストラクチャなど、データベースシステム１１６のアプリケーションが走ることを可能にするフレームワークとし得る。一部の実施形態において、オンデマンドデータベースサービス１１６は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム１１２を介してオンデマンドデータベースサービスにアクセスするユーザ、及び／又はユーザシステム１１２を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者、によって開発される１つ以上のアプリケーションの作成、管理、及び／又は実行を可能にするアプリケーションプラットフォーム１１８を含み得る。
【００１８】
ユーザシステム１１２のユーザは、それぞれの容量において異なることができ、特定のユーザシステム１１２の容量は、現在のユーザに対する許可（許可レベル）によって完全に決定されてもよい。例えば、営業担当者が特定のユーザシステム１１２を使用してデータベースシステム１１６とインタラクトしている場合、そのユーザシステム１１２は、その営業担当者に割り当てられた容量を持つ。しかしながら、管理者がそのユーザシステム１１２を使用してデータベースシステム１１６とインタラクトしている間は、そのユーザシステム１１２はその管理者に割り当てられた容量を持つ。階層的な役割モデルを有するシステムでは、１つの許可レベルのユーザは、下位の許可レベルのユーザによってアクセス可能なアプリケーション、データ、及びデータベース情報へのアクセスを有し得るが、上位の許可レベルのユーザによってアクセス可能な特定のアプリケーション、データベース情報、及びデータへのアクセスを有しないとし得る。従って、異なるユーザは、ユーザのセキュリティ又は許可レベルに依存して、アプリケーション及びデータベース情報にアクセスすること及びそれらを変更することに関して異なる能力を持つことになる。
【００１９】
ネットワーク１１４は、互いに通信する装置の任意のネットワーク又は複数のネットワークの組み合わせである。例えば、ネットワーク１１４は、１つ以上のローカルエリアネットワーク（ＬＡＮ）、１つ以上のワイドエリアネットワーク（ＷＡＮ）、１つ以上の電話ネットワーク、１つ以上の無線ネットワーク、１つ以上のポイントツーポイントネットワーク、１つ以上のスターネットワーク、１つ以上のトークンリングネットワーク、１つ以上のハブネットワーク、及び／又は他の適切な構成のうちの任意の１つ又は任意の組み合わせとし得る。現在使用されている最も一般的なタイプのコンピュータネットワークは、例えば、しばしば大文字の“Ｉ”を用いて“Ｉｎｔｅｒｎｅｔ”として参照される１つ以上のグローバルなインターネットワークなどの、転送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）ネットワークであり、そのネットワークが、ここでの例の多くで使用される。しかしながら、理解されるべきことには、ネットワーク１１４はそのように限定されず、他のネットワークプロトコルがサポートされてもよい。
【００２０】
ユーザシステム１１２は、ＴＣＰ／ＩＰを用いてデータベースシステム１１６と通信し得るとともに、より高いネットワークレベルで、共通のインターネットプロトコルを用いて通信し得る。例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、Ａｎｄｒｅｗファイルシステム（ＡＦＳ）、無線アプリケーションプロトコル（ＷＡＰ）、及び／又はこれらに類するもののうちの１つ以上である。ＨＴＴＰが使用される一部の例において、ユーザシステム１１２は、データベースシステム１１６におけるＨＴＴＰサーバに及びからＨＴＴＰメッセージを送受信するために、一般に“ブラウザ”と称されるＨＴＴＰクライアントを含み得る。そのようなＨＴＴＰサーバは、データベースシステム１１６とネットワーク１１４との間の唯一のネットワークインタフェースとして実装されてもよいが、同様に及び／又は代わりに他の技術も使用され得る。一部の実装において、データベースシステム１１６とネットワーク１１４との間のインタフェースは、例えば複数のサーバにわたって負荷をバランスさせ着信ＨＴＴＰ要求を均等に分配するためのラウンドロビンＨＴＴＰ要求分配器などの、負荷共有機能を含む。少なくとも、そのサーバにアクセスしているユーザのために、複数のサーバの各々がＭＴＳデータへのアクセスを有するが、代わりに他の代替構成が使用されてもよい。
【００２１】
一部の実施形態において、図１に示すデータベースシステム１１６は、ウェブベースのカスタマーリレーションシップマネジメント（ＣＲＭ）システムを実装する。一部の実施形態において、データベースシステム１１６は、アプリケーションサーバを含み、該アプリケーションサーバは、ＣＲＭソフトウェアアプリケーションを実装及び実行するように構成されるとともに、ユーザシステム１１２に及びから関連するデータ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連するデータ、オブジェクト、及びウェブページコンテンツをデータベースシステムに格納し及びそれらをデータベースシステムから検索するように構成される。マルチテナントシステムでは、複数のテナントに関するデータが同じ物理データベースオブジェクトに格納され得る。しかしながら、テナントデータは典型的に、データが明示的に共有されない限り１つのテナントが別のテナントのデータへのアクセスを有しないように、１つのテナントのデータが別のテナントのデータから論理的に分離されたままにされるように配置される。一部の実施形態において、データベースシステム１１６は、ＣＲＭアプリケーション以外のアプリケーションを実装し、又はＣＲＭアプリケーションに加えて別のアプリケーションを実装する。一部の例において、データベースシステム１１６は、ＣＲＭアプリケーションを含め、複数のホストした（標準及びカスタム）アプリケーションへのテナントアクセスを提供し得る。ＣＲＭを含んでも含まなくてもよいユーザアプリケーション及び／又はサードパーティ開発者アプリケーションは、アプリケーションプラットフォーム１１８によってサポートされてもよく、アプリケーションプラットフォーム１１８は、データベースシステム１１６のプロセス空間内での仮想マシンにおけるアプリケーションの作成、１つ以上のデータベースオブジェクトへのアプリケーションの保管、及び／又はアプリケーションの実行を管理する。
【００２２】
図１には、データベースシステム１１６の要素に関する１つの構成が、ネットワークインタフェース１２０、アプリケーションプラットフォーム１１８、テナントデータ１２３のためのテナントデータストレージ１２２、データベースシステム１１６及び可能性として複数のテナントにアクセス可能なシステムデータ１２５のためのシステムデータストレージ１２４、データベースシステム１１６の様々な機能を実装するためのプログラムコード１２６、並びに、ＭＴＳシステムプロセス及び例えばアプリケーションホスティングサービスの一部としてアプリケーションを走らせるなどのテナント固有プロセスを実行するためのプロセス空間１２８を含めて示されている。データベースシステム１１６上で実行し得る更なるプロセスは、データベース索引付けプロセスを含む。
【００２３】
図１に示すようなコンピューティングシステム１１０における幾つかの要素は、ここでは簡単に説明されるのみの従来からの周知の要素を含む。例えば、ユーザシステム１１２の各々は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、ノートパッドコンピュータ、ＰＤＡ、携帯電話、又は任意の無線アクセスプロトコル（ＷＡＰ）対応装置、又はインターネット若しくは他のネットワーク接続に対して直接的若しくは間接的にインタフェースをとることが可能な任意の他のコンピューティング装置を含み得る。ユーザシステム１１２の各々は典型的に、ＨＴＴＰクライアント（例えば、マイクロソフトのインターネットエクスプローラブラウザ、ネットスケープのナビゲータブラウザ、オペラのブラウザ、携帯電話、ノートパッドコンピュータ、ＰＤＡ、若しくは他の無線装置の場合のＷＡＰ対応ブラウザ、及び／又はこれらに類するもの）を走らせて、ユーザシステム１１２のユーザ（例えば、マルチテナントデータベースシステムの加入者）が、ネットワーク１１４上で、データベースシステム１１６からのそれに利用可能な情報、ページ、及び／又はアプリケーションにアクセスし、処理し、及び／又は閲覧することを可能にする。ユーザシステム１１２の各々はまた、典型的に、データベースシステム１１６及び／又は他のシステム及び／又はサーバによって提供されるページ、フォーム、アプリケーション、及び／又は他の情報とともにディスプレイ（例えば、モニタスクリーン、液晶ディスプレイ（ＬＣＤ）モニタ、発光ダイオード（ＬＥＤ）モニタ、有機発光ダイオード（ＯＬＥＤ）モニタ、及び／又はこれらに類するもの）上でブラウザによって提供されるグラフィカルユーザインタフェース（ＧＵＩ）とインタラクトするための１つ以上のユーザインタフェース装置（例えば、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペン、及び／又はこれらに類するもの）を含む。一部の例において、ユーザインタフェース装置は、データベースシステム１１６によってホストされるデータ及び／又はアプリケーションにアクセスするため、格納されたデータ上で検索を実行するため、及び／又はユーザに提示され得る様々なＧＵＩページとユーザがインタラクトすることを可能にするために使用され得る。上述のように、実施形態は、特定のグローバルインターネットワークのネットワークを参照するものであるインターネットとの使用に適している。しかしながら、理解されるべきことには、インターネットの代わりに、例えばイントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、非ＴＣＰ／ＩＰベースのネットワーク、任意のＬＡＮ若しくはＷＡＮ、及び／又はこれらに類するものなどの、他のネットワークが使用されてもよい。
【００２４】
一部の実施形態によれば、ユーザシステム１１２の各々及びそのコンポーネントは、例えばインテルＰｅｎｔｉｕｍ（登録商標）プロセッサ又はそれに類するものなどの中央演算処理ユニットを使用して走らされるコンピュータコードを含む例えばブラウザなどのアプリケーションを使用してオペレータ設定可能である。同様に、データベースシステム１１６（及び２つ以上存在する場合のＭＴＳの更なるインスタンス）及びそれらのコンポーネントは、コンピュータコードを含むアプリケーションを使用して、例えばインテルＰｅｎｔｉｕｍ（登録商標）プロセッサ若しくはこれに類するものを含み得るものであるプロセッサシステム１１７などの中央演算処理ユニット及び／又は複数のプロセッサユニットを使用して走るコンピュータコードを含む（１つ以上の）アプリケーションを使用してオペレータ設定可能とし得る。コンピュータプログラムプロダクトの実施形態は、ここに記載される実施形態のプロセスのいずれかを実行するようにコンピュータをプログラムするために使用されることが可能な命令を格納した（１つ以上の）機械読み取り可能記憶媒体を含む。相互通信し及び／又はここに記載されるようなウェブページ、アプリケーション、及び／又は他のデータ及びメディアコンテンツを処理するようにデータベースシステム１１６を動作させ及び構成するためのコンピュータコードは、好ましくは、ダウンロードされてハードディスクに格納されるが、プログラムコード全体又はその一部はまた、例えば読み出し専用メモリ（ＲＯＭ）若しくはランダムアクセスメモリ（ＲＡＭ）などの周知の他の揮発性若しくは不揮発性のメモリ媒体若しくはデバイスに格納されてもよく、あるいは、例えば、フロッピーディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、コンパクトディスク（ＣＤ）、マイクロドライブ、及び光磁気ディスクを含む、何らかのタイプの回転媒体、並びに、磁気カード若しくは光カード、ナノシステム（分子メモリ集積回路（ＩＣ）を含む）、又は命令及び／又はデータを格納するのに適した任意のタイプの媒体若しくはデバイスなどの、プログラムコードを格納することが可能な任意の媒体上で提供されてもよい。さらに、プログラムコード全体又はその一部は、ソフトウェアソースから伝送媒体上で（例えば、よく知られているようにインターネット上で及び／又は他のサーバから）伝送及びダウンロードされてもよいし、及び／又はよく知られているような通信媒体及び／又はプロトコル（例えば、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、イーサネット（登録商標）、及び／又はこれらに類するもの）を使用してよく知られているような他の従来からのネットワーク接続（例えば、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ＬＡＮ、及び／又はこれらに類するもの）上で伝送されてもよい。これまた理解されることには、本発明の実施形態を実装するためのコンピュータコードは、例えば、Ｃ、Ｃ＋＋、ＨＴＭＬ、任意の他のマークアップ言語、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、ＡｃｔｉｖｅＸ、任意の他のスクリプト言語（例えば、ＶＢＳｃｒｉｐｔ）などの、クライアントシステム及び／又はサーバ若しくはサーバシステム上で実行可能な任意のプログラミング言語で実装されることができ、及び／又はよく知られているような数多くの他のプログラミング言語が使用されてもよい（Ｊａｖａ（登録商標）はサンマイクロシステム社の商標である）。
【００２５】
一部の実施形態によれば、データベースシステム１１６は、ユーザ（クライアント）システム１１２にウェブページ、フォーム、アプリケーション、データ、及び／又はメディアコンテンツを提供し、データベースシステム１１６のテナントとしてのユーザシステム１１２によるアクセスをサポートするように構成される。従って、データベースシステム１１６は、データが共有されない限り、各テナントのデータを分離したままにするセキュリティ機構を提供する。２つ以上のＭＴＳが使用される場合、それらは互いに近接して配置されてもよいし（例えば、単一の建物及び／又はキャンパス内に配置されるサーバファーム内）、及び／又は互いに離れた場所に分散されてもよい（例えば、１つ以上のサーバが都市Ａに配置され、及び／又は１つ以上のサーバが都市Ｂに配置される）。一部の実施形態において、各ＭＴＳは、ローカルに及び／又は１つ以上の地理的位置にまたがって分布された、論理的及び／又は物理的に接続された１つ以上のサーバを含み得る。さらに、用語“サーバ”は、処理用のハードウェア及び（１つ以上の）プロセス空間を含むコンピュータシステムと、技術的によく知られているような関連するストレージシステム及びデータベースアプリケーション（例えば、オブジェクト指向データベース管理システム（ＯＯＤＢＭＳ）又はリレーショナルデータベース管理システム（ＲＤＢＭＳ））と、を含む意味である。これまた理解されるべきことには、“サーバシステム”及び“サーバ”は、ここではしばしば交換可能に使用される。同様に、ここに記載されるデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集合、及び冗長なオンラインバックアップ及び／又はオフラインバックアップ、他の冗長性、及び／又はこれらに類するものを備えたデータベースとして実装され得る。一部の例において、データベースオブジェクトは、分散データベース及び／又はストレージネットワーク及び関連する処理インテリジェンスを使用して実装され得る。
【００２６】
図２は、更なる実施形態に従ったコンピューティングシステム１１０の簡略図である。図２に示すように、ユーザシステム１１２の各々は、プロセッサシステム１１２Ａ、メモリシステム１１２Ｂ、入力システム１１２Ｃ、及び出力システム１１２Ｄを含み得る。図２は更に、ネットワーク１１４及びデータベースシステム１１６を示している。図２はまた、データベースシステム１１６が、テナントデータストレージ１２２、テナントデータ１２３、システムデータストレージ１２４、システムデータ１２５、ユーザインタフェース（ＵＩ）２３０、アプリケーションプログラムインタフェース（ＡＰＩ）２３２、ＰＬ／Ｓａｌｅｓｆｏｒｃｅ．ｃｏｍオブジェククエリ言語（ＰＬ／ＳＯＱＬ）２３４、保存ルーチン２３６、アプリケーションセットアップ機構２３８、アプリケーションサーバ２００１−２００Ｎ、システムプロセス空間２０２、テナントプロセス空間２０４、テナント管理プロセス空間２１０、テナントストレージ領域２１２、ユーザストレージ２１４、及びアプリケーションメタデータ２１６を含み得ることを示している。一部の実施形態において、コンピューティングシステム１１０は、上に列挙されたのと同じ要素を有していなくてもよく、及び／又は、上に列挙された要素に代えて又は加えて他の要素を有していてもよい。
【００２７】
ユーザシステム１１２、ネットワーク１１４、データベースシステム１１６、テナントデータストレージ１２２、及びシステムデータストレージ１２４は、図１に関して更に詳細に上述されている。ユーザシステム１１２に関して、プロセッサシステム１１２Ａは、１つ以上のプロセッサ、マイクロプロセッサ、マルチコアプロセッサ、グラフィックス処理ユニット（ＧＰＵ）、テンソル処理ユニット（ＴＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、及び／又はこれらに類するものの任意の組み合わせとし得る。メモリシステム１１２Ｂは、１つ以上のメモリデバイス、短期メモリ、及び／又は長期メモリの任意の組み合わせを含み得る。一部の例において、１つ以上のメモリデバイスの各々は、例えばフロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光学媒体、パンチカード、紙テープ、孔パターンを有する他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ（登録商標）−ＥＰＲＯＭの、他のメモリチップ若しくはカートリッジ、及び／又はプロセッサ若しくはコンピュータがそれから読み出すように適応される他の媒体などの、機械読み取り可能媒体を含み得る。
【００２８】
入力システム１１２Ｃは、例えば１つ以上のキーボード、マウス、トラックボール、スキャナ、カメラ、ネットワークへのインタフェース、及び／又はこれらに類するものなど、入力装置の任意の組み合わせとし得る。出力システム１１２Ｄは、例えば１つ以上のモニタ、プリンタ、ネットワークへのインタフェース、及び／又はこれらに類するものなど、出力装置の任意の組み合わせとし得る。
【００２９】
図２に示すように、データベースシステム１１６は、一組のＨＴＴＰアプリケーションサーバ２００、アプリケーションプラットフォーム１１８、テナントデータストレージ１２２、及び／又はシステムデータストレージ１２４として実装された図１のネットワークインタフェース１２０を含み得る。また、個々のテナントプロセス空間２０４及びテナント管理プロセス空間２１０を含むシステムプロセス空間２０２も示されている。各アプリケーションサーバ２００は、ユーザシステム１１２の要求に応えるために、テナントデータストレージ１２２及びその中のテナントデータ１２３、並びにシステムデータストレージ１２４及びその中のシステムデータ１２５にアクセスするように構成され得る。一部の例において、テナントデータ１２３は、データの物理的配置及び／又は論理的配置のいずれともし得るものである個々のテナントストレージ領域２１２に分割され得る。一部の例において、各テナントストレージ領域２１２内で、各ユーザに対してユーザストレージ２１４及びアプリケーションメタデータ２１６が割り当てられ得る。一部の例において、ユーザの最も直近に使用した（most  recently  used；ＭＲＵ）アイテムのコピーがユーザストレージ２１４に格納され得る。一部の例において、組織（例えば、テナント）全体に関するＭＲＵアイテムのコピーが、テナントストレージ領域２１２に格納され得る。
【００３０】
ＵＩ２３０は、ユーザインタフェースを提供し、ＡＰＩ２３２は、データベースシステム１１６の常駐プロセスへの及びユーザシステム１１２のユーザ及び／又は開発者へのアプリケーションプログラマインタフェースを提供する。テナントデータ１２３及びシステムデータ１２５は、例えば１つ以上のオラクル（登録商標）データベースなどの様々なデータベースに格納され得る。
【００３１】
アプリケーションプラットフォーム１１８は、アプリケーション開発者によるアプリケーションの作成及び／又は管理をサポートするアプリケーションセットアップ機構２３８を含む。一部の例において、アプリケーションセットアップ機構２３８は、テナント管理プロセス２１０によって管理される１つ以上のテナントプロセス空間２０４として加入者によって実行される保存ルーチン２３６によって、メタデータをテナントデータストレージ１２２に保存し得る。一部の例において、そのようなアプリケーションへの呼び出しは、ＡＰＩ２３２に対してプログラミング言語スタイルインタフェース拡張を提供するＰＬ／ＳＯＱＬ２３４を使用してコーディングされ得る。ＰＬ／ＳＯＱＬ言語の一部の実施形態は、“Method  and  System  for  Allowing  Access  to  Developed  Applications  via  a  Multi-Tenant  On-Demand  Database  Service”と題されて２００７年９月２１日に出願された米国特許第７，７３０，４７８号において更に詳細に論じられており、それをここに援用する。一部の例において、アプリケーションへの呼び出しは、加入者のためにアプリケーションメタデータ２１６を検索すること、呼び出しを作成すること、及び仮想マシンにおけるアプリケーションとしてメタデータを実行することを管理するものである１つ以上のシステムプロセスによって検出され得る。
【００３２】
各アプリケーションサーバ２００は、異なるネットワーク接続を介してデータベースシステムに通信可能に結合され得る（例えば、システムデータ１２５及びテナントデータ１２３へのアクセスを有する）。一部の例において、１つのアプリケーションサーバ２００１はネットワーク１１４を介して結合され、別のアプリケーションサーバ２００Ｎ−１は直接的なネットワークリンクを介して結合され、別のアプリケーションサーバ２００Ｎは更に異なるネットワーク接続によって結合され得る。ＴＣＰ／ＩＰは、アプリケーションサーバ２００とデータベースシステムとの間で通信するための典型的なプロトコルを含む。しかしながら、当業者に明らかになることには、使用されるネットワーク接続に応じてシステムを最適化するために、他の輸送プロトコルが使用されてもよい。
【００３３】
特定の実施形態において、各アプリケーションサーバ２００は、テナントであるいずれかの組織に関連するユーザに関する要求を処理するように構成される。何らかの理由のためにいつでもアプリケーションサーバをサーバプールから追加及び除去できることが望ましいので、特定のアプリケーションサーバ２００へのユーザ及び／又は組織のサーバアフィニティが存在しないことが好ましい。一実施形態では、従って、アプリケーションサーバ２００に対する要求を分散させるために、負荷分散機能（例えば、Ｆ５  Ｂｉｇ−ＩＰロードバランサ）を実装するインタフェースシステムが、アプリケーションサーバ２００とユーザシステム１１２との間に通信可能に結合される。一部の実施形態において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をアプリケーションサーバ２００にルーティングする。例えばラウンドロビン、観測応答時間、及び／又はこれらに類するものなどの、負荷分散アルゴリズムの他の例も使用され得る。一部の実施形態において、同一ユーザからの３つの連続した要求が３つの異なるアプリケーションサーバ２００によって取り扱われてもよいし、異なるユーザからの３つの要求が同一アプリケーションサーバ２００によって取り扱われてもよい。斯くして、データベースシステム１１６はマルチテナントであり、データベースシステム１１６は、異なるユーザ及び／又は組織にまたがって異なるオブジェクト、データ及び／又はアプリケーションの記憶及び／又はそれへのアクセスを取り扱う。
【００３４】
ストレージの一例として、１つのテナントは、セールスフォースを採用する会社であって、各販売員がデータベースシステム１１６を使用して自身の販売プロセスを管理するものとし得る。従って、ユーザは、そのユーザの個人的な販売プロセス（例えば、テナントデータストレージ１２２内）に適用可能な、連絡先データ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標進捗データ、及び／又はこれらに類するものを維持管理し得る。ＭＴＳ構成の一部の例において、ユーザは、アクセス、表示、修正、報告、送信、計算、及び／又はこれらに類することのためのデータ及び／又はアプリケーションが、ネットワークアクセスを持たないユーザシステム１１２によって維持及び／又はアクセスされることがあるので、自身の販売努力及びサイクルを、多数の異なるユーザシステムのいずれから管理してもよい。一部の例において、販売員が顧客を訪問しており、顧客がそのロビー内でインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間に、その顧客に関する重要な更新を得ることができる。
【００３５】
各ユーザのデータは、各ユーザの使用者に関係なく、他のユーザのデータから分離され得るが、一部のデータは、テナントである所与の組織についての複数のユーザ又は全ユーザによって共有される又はアクセス可能な組織全体のデータであってもよい。従って、データベースシステム１１６によって管理される一部のデータ構造はテナントレベルで割り当てられるのに対し、他のデータ構造はユーザレベルで管理され得る。ＭＴＳは、競合他社を含み得る複数のテナントをサポートし得るので、ＭＴＳは更に、データ、アプリケーション、及び／又はアプリケーション使用を別々に保つセキュリティプロトコルを持つべきである。また、多数のテナントが、自身のシステムを維持することよりむしろ、ＭＴＳへのアクセスを選び得るので、冗長性、アップタイム、及び／又はバックアップは、ＭＴＳに実装され得る更なる機能である。ユーザ固有データ及びテナント固有データに加えて、データベースシステム１１６はまた、複数のテナントによって使用可能なシステムレベルのデータ及び／又は他のデータも維持し得る。そのようなシステムレベルのデータは、テナント間で共有可能な産業レポート、ニュース、投稿、及び／又はこれらに類するものを含み得る。
【００３６】
特定の実施形態において、ユーザシステム１１２（クライアントシステムとし得る）は、データベースシステム１１６からのシステムレベル及び／又はテナントレベルのデータを要求及び／又は更新するためにアプリケーションサーバ２００と通信し、これは、テナントデータストレージ１２２及び／又はシステムデータストレージ１２４に１つ以上のクエリを送信することを伴い得る。データベースシステム１１６（例えば、データベースシステム１１６内のアプリケーションサーバ２００）は、所望の情報にアクセスし及び／又はそれを変更するように設計される１つ以上の構造化クエリ言語（ＳＱＬ）ステートメント（例えば、１つ以上のＳＱＬクエリ）を自動生成する。システムデータストレージ１２４は、データベースからの要求されたデータにアクセスするためのクエリ計画を生成し得る。
【００３７】
各データベースは、一般に、スキーマによって特徴付けられる複数の所定のカテゴリに収められるデータを含んだ、例えば一組の論理テーブルなどの、オブジェクトの集合として見ることができる。“テーブル”は、データオブジェクトの１つの表現であり、ここでは、オブジェクト及びカスタムオブジェクトの概念的な説明を単純化するために使用されることがある。理解されるべきことには、“テーブル”及び“オブジェクト”は、ここでは交換可能に使用され得る。各テーブルは、一般に、見ることが可能なスキーマにおいて列又はフィールドとして論理的に配列される１つ以上のデータカテゴリを収容する。テーブルの各行又はレコードは、フィールドによって規定される各カテゴリについてのデータのインスタンスを収容する。例えば、ＣＲＭデータベースは、例えば名前、アドレス、電話番号、ファックス番号などの基本的な連絡先情報のためのフィールドで顧客を記述するテーブルを含み得る。別のテーブルが、例えば顧客、製品、販売価格、日付などの情報に関するフィールドを含め、購入注文を記述し得る。一部のマルチテナントデータベースシステムでは、全てのテナントによる使用のために標準エンティティテーブルが提供され得る。ＣＲＭデータベースアプリケーションの場合、そのような標準エンティティは、アカウント、連絡先、リード、及び／又は機会データのテーブルを含むことができ、各々が予め規定されたフィールドを含み得る。理解されるべきことには、用語“エンティティ”は、ここでは“オブジェクト”及び“テーブル”と交換可能に使用されることがある。
【００３８】
一部のマルチテナントデータベースシステムにおいて、テナントは、カスタムオブジェクトを作成及び格納することを許されることがあり、及び／又は、例えば、カスタムインデックスフィールドを含め、標準オブジェクトにカスタムフィールドを作成することによって、標準エンティティ又はオブジェクトをカスタマイズすることを許されることがある。マルチテナントデータベースシステムにおいてカスタムオブジェクトを作成するため及び標準オブジェクトをカスタマイズするためのシステム及び方法は、“Custom  Entities  and  Fields  in  a  Multi-Tenant  Database  System”と題されて２００４年４月２日に出願された米国特許第７，７７９，０３９号に更に詳細に記載されており、それをここに援用する。一部の実施形態において、カスタムスキーマによって特徴付けられるカスタムエンティティデータ行が、組織ごとに複数の論理テーブルを含み得るものである単一のマルチテナント物理テーブルに格納され得る。顧客にトランスペアレントであることには、顧客の複数の“テーブル”が実際には１つの大きなテーブルに格納され、又は顧客のデータが他の顧客のデータと同じテーブルに格納されることがある。
【００３９】
一部の実施形態において、複数の組織うちの１つ以上が、データベースシステムを運用するパーティとは別個の異なる様々なベンダ及び／又はサービスプロバイダによって提供されるサービス又は情報にアクセスすることを望むことがある。そのようなサービスプロバイダによって提供される情報及び／又はサービスは、データベースシステムによって提供されるサービスを補足及び／又は補完し得る。データベースシステム１１６がカスタマーリレーションシップマネジメント（ＣＲＭ）サービスを組織に提供する一部の例において、他のベンダ及び／又はサービスプロバイダ（例えば、Ｄｕｎ＆Ｂｒａｄｓｔｒｅｅｔ又はＩｎｓｉｄｅＶｉｅｗ）が、競合するインテリジェンス情報を提供してもよい。
【００４０】
情報システム及び／又は例えばデータベースシステム１１６などのデータベースシステムと連動する際の難題の１つは、典型的なユーザは、基礎となるデータストア内（例えば、テナントデータストレージ１２２、システムデータストレージ１２４、及び／又はこれらに類するものの中）でデータがどのようにオブジェクト又はレコードとして分割されて格納されるかを知らないことである。一部の例において、この難題は、異なるユーザ、組織、及び／又はテナントが、それらそれぞれのデータを保管するために異なる（例えば、異種の）スキーマを使用するマルチテナントシステムにおいて、更に複雑になり得る。
【００４１】
一部の実施形態によれば、この問題に対処するための１つのソリューションは、（基礎となるデータストレージスキーマを理解している）アプリケーション開発者が、ユーザから新たなデータ及び／又は変更データを穴埋め式で要請するカスタムユーザインタフェース（例えば、ユーザインタフェース２３０の一部として）を開発することである。一部の例において、これは、各カスタムユーザインタフェースが開発し、テストし、及び／又は展開するのにかなりのリソースを要し得るので、コストが掛かるとともに非効率的である。一部の例において、これはまた、基礎となるスキーマにおける変更がカスタムユーザインタフェースに関するかなりの再開発コストをもたらし得るので柔軟性に欠け得る。一部の例において、ユーザはまた、カスタムユーザインタフェースを介して開発者によって指示された順序、配置、及び／又はフォーマットで新たなデータを表現するように制約されるので、このアプローチを苛立たしいものと感じ得る。
【００４２】
従って、これらの問題のうちの１つ以上に対処する改良されたデータ入力アプローチを有することが有利となる。１つのそのようなアプローチは、ユーザが自由な形式の語り口を用いて望ましい新たなデータ及び／又はデータへの変更を自由に表現できるよう、話された又は書かれた自然言語の形式でユーザが非構造化入力を提供することを可能にするデータ入力システムである。非構造化入力の処理を支援するために、更に詳細に後述するように、開発者は、データ入力システムが非構造化入力を解釈するのを助けるテンプレートを提供する。さらに、テンプレートはカスタムユーザインタフェースよりも開発するのが遥かに簡単であるため、異なるユーザ、組織、及び／又はテナントに対する異なるテンプレートの開発コストが、対応するカスタムユーザインタフェースとの比較において大幅に低減される。
【００４３】
図３は、一部の実施形態に従った非構造化入力をサポートするコンピューティングシステム３００の簡略図である。図３に示すように、ユーザが、ユーザ装置３１０を介してコンピューティングシステム３００とインタラクトする。一部の例において、ユーザ装置３１０は、スマートフォン及び／又は他のポータブルコンピューティング装置と一致し得る。一部の例において、ユーザ装置３１０は、ユーザシステム１１２のうちの１つと一致し得る。一部の例において、ユーザ装置３１０は、コンピューティングシステム３００によって提供されるサービスにアクセスするための１つ以上のアプリケーション（例えば、ウェブブラウザ及び／又は１つ以上のカスタムアプリケーション）を含み得る。
【００４４】
図示のように、ユーザ装置３１０は、ネットワーク３２０を介してサーバ３３０に結合される。一部の例において、ネットワーク３２０は、例えばセルラネットワーク、メッシュネットワーク、無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び／又はこれらに類するものなどの１つ以上のサブネットワークを含み得る。一部の例において、ネットワーク３２０は、ネットワーク１１４と一致し得る。
【００４５】
サーバ３３０は、メモリ３３４に結合されたプロセッサ３３２を含んでいる。サーバ３３０の動作はプロセッサ３３２によって制御される。サーバ３３０は１つのプロセッサ３３２のみを有して示されているが、理解されることには、プロセッサ３３２は、サーバ３３０内の１つ以上の中央演算処理ユニット、マルチコアプロセッサ、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、グラフィックス処理ユニット（ＧＰＵ）、テンソル処理ユニット（ＴＰＵ）、及び／又はこれらに類するものを表し得る。サーバ３３０は、スタンドアロンのサブシステムとして、コンピューティング装置に付加されたボードとして、及び／又は仮想マシンとして実装され得る。
【００４６】
メモリ３３４は、サーバ３３０によって実行されるソフトウェア及び／又はサーバ３３０の動作中に使用される１つ以上のデータ構造を格納するために使用され得る。メモリ３３４は、１つ以上のタイプの機械読み取り可能媒体を含み得る。機械読み取り可能媒体の一部の一般的形態は、フロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の任意の光媒体、パンチカード、紙テープ、穴のパターンを有する他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップ又はカートリッジ、及び／又はプロセッサ若しくはコンピュータがそれから読み出すように適応される他の媒体を含み得る。
【００４７】
プロセッサ３３２及び／又はメモリ３３４は、如何なる好適な物理的構成で構成されてもよい。一部の実施形態において、プロセッサ３３２及び／又はメモリ３３４は、同一ボード上に、同一パッケージ（例えば、システム・イン・パッケージ）内に、同一チップ（例えば、システム・オン・チップ）上に、及び／又はこれらに類するものにて実装され得る。一部の実施形態において、プロセッサ３３２及び／又はメモリ３３４は、分散された、仮想化された、及び／又はコンテナ化された計算リソースを含み得る。そのような実施形態に一致して、プロセッサ３３２及び／又はメモリ３３４は、１つ以上のデータセンター及び／又はクラウドコンピューティング施設に置かれ得る。
【００４８】
図示のように、メモリ３３４は、非構造化入力サービス３４２及び認証サービス３４４を含んでいる。非構造化入力サービス３４２は、更に詳細に後述するように、ユーザ装置３１０のユーザから非構造化入力を受け取ること、テンプレートを用いて非構造化入力を分析すること、及び非構造化入力の分析に基づいてデータベース又はデータストアに対して１つ以上の更新を行うことを担う。認証サービス３４４は、非構造化入力サービス３４２及び／又は基礎となるデータベース若しくはデータストアへの権限のないアクセスを防止するために、ユーザ及び／又はユーザ装置（例えば、ユーザ装置３１０）を認証するための認証サポートを提供する。一部の例において、認証サービス３４４は、ユーザ及び／又はユーザ装置を認証するために、ユーザ及び／又はユーザ装置から１つ以上の認証情報（例えば、ユーザ名、パスワード、認証トークン、及び／又はこれらに類するもの）を受信する。一部の例において、認証サービス３４４は、例えば１つ以上のデータベース接続ストリングを生成すること及び／又はこれに類することによって、ユーザ及び／又は非構造化入力サービス３４２による基礎となるデータベース及び／又はデータストアへのアクセスを支援し得る。
【００４９】
一部の例において、メモリ３３４は、１つ以上のプロセッサ（例えば、プロセッサ３３２）によって実行されるときに、該１つ以上のプロセッサに、更に詳細に後述するような非構造化入力サービス３４２及び／又は認証サービス３４４に関連する１つ以上のプロセスを実行させ得る実行可能コードを含んだ、非一時的な、有形の、機械読み取り可能媒体を含み得る。一部の例において、非構造化入力サービス３４２及び／又は認証サービス３４４は、ハードウェア、ソフトウェア、及び／又はハードウェアとソフトウェアとの組み合わせを用いて実装され得る。一部の例において、非構造化入力サービス３４２及び／又は認証サービス３４４は、非構造化入力サービス３４２及び／又は認証サービス３４４のサービスへのアクセスをユーザアプリケーションに提供するための１つ以上のＡＰＩ、ウェブサービス、及び／又はこれらに類するもの（例えば、ＨＴＴＰサービス）を含み得る。
【００５０】
サーバ３３０及びサーバ３３０によってホストされるサービス（例えば、非構造化入力サービス３４２、認証サービス３４４、及び／又はこれらに類するもの）は、ネットワーク３５０を介してマルチテナントシステム３６０及びサポートサーバ３７０に結合される。一部の例において、ネットワーク３５０は、例えばセルラネットワーク、メッシュネットワーク、無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び／又はこれらに類するものなどの１つ以上のサブネットワークを含み得る。一部の例において、ネットワーク３５０は、ネットワーク１１４と一致し得る。
【００５１】
マルチテナントシステム３６０は、サーバ３３０及び非構造化入力サービス３４２に、１つ以上のマルチテナントデータベース及び／又はデータストアへのアクセスを提供するためのコンピューティング装置及びインフラストラクチャ（例えば、１つ以上のプロセッサ、１つ以上のストレージ装置、１つ以上のプラットフォーム、１つ以上のプロセス、及び／又はこれらに類するもの）を含む。一部の例において、マルチテナントシステム３６０は、図１及び／又は図２に関して前述したようなデータベースシステム１１６と一致し得る。
【００５２】
サポートサーバ３７０は、メモリ３７４に結合されたプロセッサ３７２を含んでいる。サポートサーバ３７０の動作はプロセッサ３７２によって制御される。サポートサーバ３７０は１つのプロセッサ３７２のみを有して示されているが、理解されることには、プロセッサ３７２は、サポートサーバ３７０内の１つ以上の中央演算処理ユニット、マルチコアプロセッサ、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、グラフィックス処理ユニット（ＧＰＵ）、テンソル処理ユニット（ＴＰＵ）、及び／又はこれらに類するものを表し得る。サポートサーバ３７０は、スタンドアロンのサブシステムとして、コンピューティング装置に付加されたボードとして、及び／又は仮想マシンとして実装され得る。
【００５３】
メモリ３７４は、サポートサーバ３７０によって実行されるソフトウェア及び／又はサポートサーバ３７０の動作中に使用される１つ以上のデータ構造を格納するために使用され得る。メモリ３７４は、１つ以上のタイプの機械読み取り可能媒体を含み得る。機械読み取り可能媒体の一部の一般的形態は、フロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の任意の光媒体、パンチカード、紙テープ、穴のパターンを有する他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップ又はカートリッジ、及び／又はプロセッサ若しくはコンピュータがそれから読み出すように適応される他の媒体を含み得る。
【００５４】
プロセッサ３７２及び／又はメモリ３７４は、如何なる好適な物理的構成で構成されてもよい。一部の実施形態において、プロセッサ３７２及び／又はメモリ３７４は、同一ボード上に、同一パッケージ（例えば、システム・イン・パッケージ）内に、同一チップ（例えば、システム・オン・チップ）上に、及び／又はこれらに類するものにて実装され得る。一部の実施形態において、プロセッサ３７２及び／又はメモリ３７４は、分散された、仮想化された、及び／又はコンテナ化された計算リソースを含み得る。そのような実施形態に一致して、プロセッサ３７２及び／又はメモリ３７４は、１つ以上のデータセンター及び／又はクラウドコンピューティング施設に置かれ得る。
【００５５】
図示のように、メモリ３７４は、ボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び意図サービス３８６を含んでいる。ボイス・ツー・テキストサービス３８２は、オーディオファイル（例えば、ＭＰ３ファイル、及び／又はこれに類するもの）を受け取り、該オーディオファイルに１つ以上の音声認識アルゴリズムを適用して、オーディオファイル内で認識された話し言葉に対応する自然言語テキストストリングを生成する。一部の例において、ボイス・ツー・テキストサービス３８２は、オーディオデータ内の音声を認識するように訓練された１つ以上のニューラルネットワークを利用し得る。一部の例において、ボイス・ツー・テキストサービス３８２は、１つ以上の一般的に利用可能な音声認識ライブラリ及び／又はＡＰＩを利用し得る。
【００５６】
エンティティサービス３８４は、（例えば、ボイス・ツー・テキストサービス３８２によって出力されるような）自然言語テキストストリングを受け取り、自然言語テキストストリング内の単語及び／又はフレーズを解析して、１つ以上のエンティティを特定し、自然言語テキストストリング内のエンティティの各々の位置を決定し、エンティティの各々のタイプ、エンティティの各々の値を決定し、及び／又は、エンティティサービス３８４が、対応するエンティティ及び／又は該対応するエンティティのタイプを認識したとどれだけ信じるかに対応する信頼度を決定する。一部の例において、エンティティサービス３８４は、組織（例えば、会社）、人物、金額、パーセンテージ、日付、時間、場所、及び／又はピックリストタイプに対応するエンティティを認識することができる。一部の例において、ピックリストタイプは、羅列、オブジェクト及び／又はエンティティに関する一組の状態、及び／又はこれらに類するものに対応し得る。一部の例において、エンティティサービス３８４は、認識したエンティティの各々についてタイプ、値、及び／又は信頼度を決定するために、１つ以上のニューラルネットワーク分類器（例えば、階層的ニューラルネットワーク分類器）を利用し得る。一部の例において、エンティティサービス３８４は、正規表現及び／又は他のテキスト解析スキームに基づいて、エンティティ、それらのタイプ、それらの値、及びそれらの信頼度を認識するために、１つ以上のエンティティ認識モデルを利用し得る。一部の例において、エンティティサービス３８４は、ニューラルネットワーク構造及びエンティティ認識モデルの双方を含むハイブリッド構造を利用する。エンティティサービス３８４の実装の例は、“Systems  and  Methods  for  Named  Entity  Recognition”と題して代理人整理番号Ａ４１２５ＵＳ２／７０６８９．４１ＵＳ０１で同時出願した米国特許出願に見出すことができ、それをここに援用する。
【００５７】
意図サービス３８６は、（例えば、ボイス・ツー・テキストサービス３８２によって出力されるような）自然言語テキストストリングを受け取り、自然言語テキストストリング内の単語及び／又はフレーズを解析して、自然言語テキストストリングの望んだ意図を決定し、及び／又はその決定の信頼性を決定する。一部の例において、意図は、データベース及び／又はデータストアへの所望のデータ変更に関連付けられる意図のクラスから選択され得る。一部の例において、意図のクラスは、データベーステーブルにエントリ（例えば、レコード）を挿入すること、データベーステーブル内のエントリ（例えば、レコード）の１つ以上のフィールドを更新すること、及び／又はこれらに類するもの、のうちの１つ以上を含み得る。一部の例において、意図サービス３８６は、意図を決定するため及び／又は決定した意図についての信頼度を決定するために、１つ以上のニューラルネットワーク分類器を利用し得る。意図サービス３８６の実装の例は、“Determining  Intent  from  Unstructured  Input  to  Update  Heterogeneous  Data  Stores”と題して代理人整理番号Ａ４１２５ＵＳ３／７０６８９．４０ＵＳ０１で同時出願した米国特許出願に見出すことができ、それをここに援用する。
【００５８】
一部の例において、メモリ３７４は、１つ以上のプロセッサ（例えば、プロセッサ３７２）によって実行されるときに、該１つ以上のプロセッサに、更に詳細に後述するようなボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び／又は意図サービス３８６に関連する１つ以上のプロセスを実行させ得る実行可能コードを含んだ、非一時的な、有形の、機械読み取り可能媒体を含み得る。一部の例において、ボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び／又は意図サービス３８６は、ハードウェア、ソフトウェア、及び／又はハードウェアとソフトウェアとの組み合わせを用いて実装され得る。一部の例において、ボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び／又は意図サービス３８６は、ボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び／又は意図サービス３８６のサービスへのアクセスをユーザアプリケーション及び／又は他のサービス（例えば、非構造化入力サービス３４２）に提供するための１つ以上のＡＰＩ、ウェブサービス、及び／又はこれらに類するもの（例えば、ＨＴＴＰサービス）を含み得る。
【００５９】
上述のように、また、ここで更に強調するように、図３は単に、請求項の範囲を不当に限定するはずのない例に過ぎない。当業者は、数多くの変形、代替、及び変更を認識することになる。一部の実施形態によれば、コンピューティングシステム３００の他の構成及び配置が可能である。一部の例において、サーバ３３０及び／又はサポートサーバ３７０は、マルチテナントシステム３６０の一部であってもよい。一部の例において、サーバ３３０及び／又はサポートサーバ３７０においてホストされるサービスのうちの１つ以上が、別個のサーバにおいてホストされてもよい。一部の例において、ネットワーク３２０及びネットワーク３５０は、同一のネットワークであってもよい。一部の例において、ネットワーク３５０は、２つ以上の別個のネットワークを含んでいてもよい。
【００６０】
図４は、一部の実施形態に従った非構造化入力を処理する方法４００の簡略図であり、図５は、一部の実施形態に従ったアクションアイテムを処理する方法５００の簡略図である。方法４００のプロセス４０５−４５５及び／又は方法５００のプロセス５０５−５４０のうちの１つ以上は、少なくとも部分的に、１つ以上のプロセッサによって実行されるときに該１つ以上のプロセッサにプロセス４０５−４５５及び／又は５０５−５４０のうちの１つ以上を実行させ得る非一時的な有形の機械読み取り可能媒体に格納された実行可能コードの形態で実装され得る。一部の実施形態において、方法４００及び／又は５００は、以下のようなサービス及び／又は複数サービスの組み合わせとして、すなわち、自然言語を含む非構造化オーディオ入力を受信し、非構造化オーディオ入力内の自然言語をテンプレートに従って分析し、自然言語の主題であるデータベースレコードをユーザが特定することをガイドし、特定されたデータベースレコードに対する１つ以上の変更を準備するためのサービス及び／又は複数サービスの組み合わせとして使用され得る。一部の例において、方法４００及び／又は５００のプロセスのうち少なくとも一部は、例えば非構造化入力サービス３４２、ボイス・ツー・テキストサービス３８２、エンティティサービス３８４、及び／又は意図サービス３８６などの、１つ以上のサービスによって実行され得る。
【００６１】
一部の実施形態に従って、方法４００及び５００を、図６及び７の例と共に説明する。図６は、一部の実施形態に従った非構造化入力を解釈するためのテンプレート６００の一例の簡略図であり、図７は、一部の実施形態に従った非構造化自然言語入力７００の一例の簡略図である。方法４００及び５００を図６及び７の例に関して説明するが、理解されることには、テンプレート６００について他の構成及び／又は構文も可能であり、また、他の非構造化自然言語入力が方法４００及び５００の主題であってもよい。
【００６２】
プロセス４０５にて、テンプレートが受信される。一部の例において、テンプレートは、データベース又はデータストア（例えば、マルチテナントシステム３６０によって管理されるデータベース）の基礎となる編成及びスキーマ、並びにユーザのデータ入力及び／又は変更のニーズを理解している開発者によって、前もって準備され得る。一部の例において、テンプレートは、使用に利用可能なテンプレートのリストの中からのユーザ（例えば、ユーザ装置３１０のユーザ）による選択に基づいて受信され得る。一部の例において、ユーザは、ユーザ装置３１０上のユーザインタフェースに表示されたリストから、ボタンを押すこと、リンクを選択すること、及び／又はこれらに類することによって、テンプレートを選択し得る。一部の例において、選択されたテンプレートは、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するもの、の一部として受信され得る。
【００６３】
一部の例において、受信されたテンプレートは、図６のテンプレート６００と一致し得る。図６に示すように、テンプレート６００は、例えば、親エンティティ及び子エンティティに関連付けられたデータベーステーブル、データベーステーブル上で実行され得るアクションのタイプ及び詳細、及び／又はこれらに類するものなど、テンプレート内で特定される情報のタイプを示す。より詳細には、テンプレート６００のエントリ６１０は、テンプレート６００の名前（Ｎａｍｅ）を“結果報告（Ｄｅｂｒｉｅｆ）”として特定している。一部の例において、結果報告テンプレート６００は、営業電話を追った非構造化自然言語入力を分析するために使用されるテンプレートに対応する。テンプレートの他の例は、新しい連絡先に入力するため、新しいリードを記述するため、及び／又はこれらに類するもののための非構造化自然言語入力を分析するためのテンプレート含み得る。一部の例において、エントリ６１０内の名前は、ユーザに表示される利用可能なテンプレートのリストに表示される名前である。
【００６４】
エントリ６２０は、テンプレート６００に従って分析される非構造化自然言語入力に関連する親（Ｐａｒｅｎｔ）レコードを特定するために検索されるべき１つ以上のテーブルを特定する。図６の例において、エントリ６２０は、親レコードが、組織及び／又は人物を格納するために使用され得るものである“アカウント（Ａｃｃｏｕｎｔ）”テーブル内で見出されることを特定している。親レコードに関連付けられ得るテーブルの他の例は、連絡先、会社、及び／又はこれらに類するものに対応し得る。
【００６５】
エントリ６３０は、テンプレート６００に従って分析される非構造化自然言語入力に関連するとともに親レコードに関係する子（Ｃｈｉｌｄ）レコードを特定するために検索されるべき１つ以上のテーブルを特定する。図６の例において、エントリ６３０は、子レコードが、非構造化自然言語入力内で言及されている連絡先及び／又は人物に対応し得るものである“機会（Ｏｐｐｏｒｔｕｎｉｔｙ）”テーブル内で見出されることを識別する。子レコードに関連付けられ得るテーブルの他の例は、連絡先、会社、イベント、及び／又はこれらに類するものに対応し得る。
【００６６】
エントリ６４０は、非構造化自然言語入力内の情報に基づいて実行され得るデータベース変更のタイプ（例えば、新規レコード挿入、レコード更新、及び／又はこれらに類するもの）に対応する１つ以上のアクション又はアクションアイテム（Ａｃｔｉｏｎ  Ｉｔｅｍ（ｓ））を特定する。図６の例において、エントリ６４０は、“イベント作成（Ｅｖｅｎｔ  Ｃｒｅａｔｉｏｎ）”、“機会更新（Ｏｐｐｏｒｔｕｎｉｔｙ  Ｕｐｄａｔｅ）”、“タスク作成（Ｔａｓｋ  Ｃｒｅａｔｉｏｎ）”に関連付けられたアクションが実行され得ることを特定している。キーワード“作成”及び“更新”は、データベース操作のタイプがそれぞれレコード挿入及びレコード更新であることを指し示す。“イベント”、“機会”、及び“タスク”は、挿入操作又は更新操作の対象となるそれぞれのテーブルの名前を特定している。従って、エントリ６４０は、レコードがイベントテーブル及びタスクテーブルに挿入され得ること、及び更新が機会テーブルで実行され得ることを特定している。
【００６７】
エントリ６５０は、更に詳細に後述するような子レコードのマッチングプロセスを制限及び／又は編成するために使用され得る１つ以上のフィルタリング及び／又は順序付け指示を特定する。一部の例において、エントリ６５０はＳＱＬコードを含み得る。図６の例において、エントリ６５０は、その“ステージネーム（ＳｔａｇｅＮａｍｅ）”が“Ｃｌｏｓｅｄ”である子レコードが省かれるべきであること、及び検索結果が“名前（Ｎａｍｅ）”フィールドによってアルファベット順にソートされるべきであることを示している。
【００６８】
エントリ６６２−６６８は、エントリ６４０で特定されるように取られ得るアクションについての更なる詳細を提供する。エントリ６６２−６６８の各々が、特定のアクションと、そのアクションに関連するパラメータ及び／又はデータとを特定する。一部の例において、各エントリ６６２−６６８は、レコードのタイプ／テーブルを特定する署名、データの１つ以上のタイプ、及びデータベース変更の対象である対応するフィールドに対応する。一部の例において、署名の各々が唯一無二である場合、テンプレートは、更に詳細に後述するように、データベース変更を一意に特定するために使用され得る。一部の例において、署名のうち２つ以上の唯一無二でない場合、更に詳細に後述するように、アクションを処理するために追加のユーザ入力が必要とされ得る。より詳細には、エントリ６６２は、金銭（Ｍｏｎｅｔａｒｙ）情報を用いて金額（Ａｍｏｕｎｔ）フィールドを更新するものである機会テーブル内での子レコードの更新を、アクションとして特定している。同様に、エントリ６６４及び６６６は、それぞれ、日付情報を用いて締切日（ＣｌｏｓｅＤａｔｅ）フィールドを更新する、及びピックリスト（ＰｉｃｋＬｉｓｔ）情報を用いてステージネームフィールドを更新するものである機会テーブル内で子レコードを更新するための更なるアクションを特定している。一部の例において、ピックリスト情報は、機会テーブルのスキーマにて特定されるような、ステージネームフィールドで可能な列挙された値の既知のリストに対応し得る。エントリ６６８は、個人情報を用いて連絡先（Ｃｏｎｔａｃｔ）フィールドの値を指定し、日付情報を使用してフォローアップ日（ＦｏｌｌｏｗｕｐＤａｔｅ）フィールドの値を指定するものであるタスク（Ｔａｓｋ）テーブルにおけるレコードの作成を、アクションとして特定している。
【００６９】
エントリ６７０−６９０は、テンプレート６００に関連付けられ得るオプションのアクションに対応する特性及び／又は特徴の例を特定する。図６の例のテンプレート６００において、エントリ６７０及び６８０は、それぞれ、タスクテーブル及びイベントテーブルに対する挿入操作を可能にしており、エントリ６９０は、データベース変更が、そのようなデータベース変更に同意した他のユーザ、組織、及び／又はテンプレートに公表され得ることを指し示している。
【００７０】
戻って図４を参照するに、プロセス４１０にて、非構造化オーディオ入力が受信される。一部の例において、非構造化オーディオ入力は、例えばユーザ装置３１０などのユーザ装置のマイクロホンによってキャプチャされ得る。一部の例において、非構造化オーディオ入力は、例えばＭＰ３ファイル及び／又はこれに類するものなどの標準オーディオ符号化に従ってオーディオファイルへと符号化され得る。一部の例において、非構造化オーディオ入力は更に、ユーザが非構造化オーディオ入力に注釈を付けるために使用し得るユーザインタフェースとの追加のユーザインタラクションに対応する時間インデックスのリストを含んでもよい。一部の例において、それら追加のユーザインタラクションは、ボタンの押し下げ及び／又はこれに類するものを含み得る。一部の例において、注釈は、非構造化オーディオ入力の構文解析を支援するために、アクションアイテムの開始及び／又はこれに類するものを指し示すマーカーに対応し得る。一部の例において、非構造化オーディオ入力は、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するものの一部として受信され得る。
【００７１】
プロセス４１５にて、プロセス４１０においてキャプチャされた非構造化オーディオ入力が、自然言語テキストに変換される。一部の例において、プロセス４１５は、例えばボイス・ツー・テキストサービス３８２などのボイス・ツー・テキストサービスの助けを借りて実行され得る。一部の例において、この変換は、オーディオにてキャプチャされた自然言語を認識するために、非構造化オーディオ入力上で音声認識を実行するよう、１つ以上のニューラルネットワーク及び／又はＡＰＩを使用することを含み得る。一部の例において、この変換は更に、特別なキーワード又はフレーズを認識し、それらをテキスト中の注釈及び／又はセパレータへと変換することを含み得る。一部の例において、フレーズ“アクションアイテム”は、更に詳細に後述するように、処理されるアクションアイテムの開始を指し示す特別なセパレータで置き換えられてもよい。一部の例において、プロセス４１０において受信された時間インデックスのリストも使用して、対応する注釈及び／又はセパレータを自然言語テキストに挿入し得る。一部の例において、自然言語テキストは更に、文章を区切るための適切な空白（例えば、キャリッジリターン、改行、及び／又はこれらに類するもの）、オーディオ内で指し示された一時停止及び／又は沈黙期間、及び／又はこれらに類するものを付加するために構文解析され得る。一部の例において、プロセス４１５は、ユーザが話すときに自然言語テキストがユーザに表示され得るように、プロセス４１０における非構造化オーディオ入力の受信を受けて自動的に開始してもよく、且つ／或いは非構造化オーディオ入力のキャプチャと同時に行われてもよい。
【００７２】
一部の例において、自然言語テキストは、図７の自然言語テキスト７００に対応し得る。図７に示されるように、自然言語テキスト７００は、結果報告テンプレート６００に関係する非構造化入力に対応し得る種類の自然言語テキストの一例を示している。説明を容易にするため、各文の後の空白の行で示される自然言語テキスト７００内の各文に関して、自然言語テキスト７００を説明する。しかしながら、理解されることには、異なるフォーマット及び／又はグループ分けも可能である。さらに、一般性を失うことなく、各文に関して自然言語テキスト７００の処理を説明するが、例えばフレーズ、段落、発言、及び／又はこれらに類するものなどの他のグループ分けも使用され得る。
【００７３】
文７１０（“今日、Ｃｈｅｚ  ＣｕｉｓｉｎｅでランチのためにＡｃｍｅのＣｈｒｉｓ  Ｑｕｉｎｔａｎａと会った。”）、文７２０（“Ａｃｍｅは、グローバルなプレゼンスを広げているＢ２Ｂロジスティックス組織である。”）、文７３０（“マーケティングソフトウェアを購入するＡｃｍｅ  Ｃｏｒｐのタイムラインが来ている。”）、及び文７６０（“我々は、我々の製品とＡＢＣの製品との比較を示して、我々を選択すべき明確な理由を提示した。”）は、更に詳細に後述するように、非構造化入力の更なる分析を介して特定されるデータベース変更に関連付けられる親レコード及び子レコードを特定する助けとするために分析される説明文に対応する。
【００７４】
文７４０（“＊購入のタイムラインは７月１日である。”）、文７５０（“＊最高で＄２５０ｋの製品を購入するかもしれない”）、及び文７７０（“＊２週間以内にＣｈｒｉｓとフォローアップコール。”）は、各アクションアイテム文の最初の“＊”セパレータによって記されるように、非構造化入力内で特定されるアクションアイテムに対応する。一部の例において、“＊”セパレータは、認識されたキーワード若しくはフレーズ及び／又は時間インデックス付きの注釈のリストに基づいてプロセス４１５において追加されたセパレータに対応し得る。アクションアイテム文７４０は、日付情報“７月１日”を有するアクションアイテムであり、アクションアイテム文７５０は、金銭情報“＄２５０ｋ”を有するアクションアイテムを含んでおり、アクションアイテム文７７０は、人物情報“Ｃｈｒｉｓ”及び日付情報“２週間”の双方を有するアクションアイテムを含んでいる。一部の例において、文７４０、７５０、及び７７０の各々の始まり及び終わりを指し示すインデックス（例えば、文字及び／又は用語インデックス）も、将来の処理における使用のために記され得る。
【００７５】
戻って図４を参照するに、プロセス４２０にて、プロセス４１５において生成された自然言語テキスト内のエンティティが特定される。一部の例において、プロセス４２０は、例えばエンティティサービス３８４など、１つ以上のエンティティ分類器及び／又はエンティティ認識サービスの助けを借りて実行され得る。一部の例において、エンティティ認識は、単語及びフレーズを分析して、自然言語テキスト内で論じられているエンティティ、それらエンティティの各々の対応するタイプ、それらエンティティの各々の対応する値、それらエンティティの各々及び／又はそれらエンティティのタイプの認識における対応する信頼度、並びに、それらエンティティの各々に関連するテキストが自然言語テキスト内で見出された場所を特定する対応するインデックス及び／又はインデックス範囲を特定することを含む。一部の例において、エンティティのタイプは、組織（例えば、会社）、人物、金額、パーセンテージ、日付、時間、場所、及び／又はピックリストタイプに対応し得る。一部の例において、ピックリストタイプは、列挙、オブジェクト及び／又はエンティティに関する一組の状態、及び／又はこれらに類するものに対応し得る。一部の例において、エンティティ認識は、コンテキスト情報（例えば、周囲のテキスト）を使用して、認識における信頼度を決定し得る。自然言語テキスト７００の文７１０の例では、Ａｃｍｅは“ｏｆ”で導入され、Ｃｈｅｚ  Ｃｕｉｓｉｎｅは“ａｔ”で導入されているので、Ａｃｍｅは、Ｃｈｅｚ  Ｃｕｉｓｉｎｅよりも、組織として、より高い信頼度を与えられ得る。一部の例において、プロセス４２０は、ユーザインタフェース内の分析ボタン、リンク、及び／又これらに類するものをユーザが押すことに応答してトリガーされ得る。一部の例において、分析要求は、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するものの一部として受信され得る。一部の例において、エンティティ認識の結果は、方法４００及び／又は５００の他のプロセスにおける使用のために保存され得る。
【００７６】
一部の例において、金額、パーセンテージ、日付、及び／又は時間の認識は、１つ以上の特殊文字（例えば、ドル記号、ユーロ記号、コロン、パーセンテージ記号、スラッシュなど）、特別な文字（例えば、１０００についての“ｋ”）、及び／又はこれらに類するものを認識し得る。一部の例において、日付の認識は、例えば“今日”、“２週間”、“１時間”、“正午”、及び／又はこれらに類するものなどの相対的な情報及び／又は例えば現在の日付が今年の７月１日より後でない限りは今年を指す“７月１日”などの不完全な情報、を解釈するための１つ以上のルールを使用し得る。一部の例において、エンティティ認識は更に、例えばＵＮＩＸ（登録商標）エポックに基づく時間、ＵＴＣ時間に基づく時間、及び／又はこれらに類するものを変換するなど、エンティティに関する値を標準フォーマットで決定することを含み得る。一部の例において、認識されたエンティティは、オプションで、それらの信頼度、それらのインデックス、それらのタイプ、及び／又はこれらの特性の任意の組み合わせに基づいてソートされ得る。
【００７７】
自然言語テキスト７００の例において、エンティティ認識は、文７１０及び７２０内の“Ａｃｍｅ”、文７３０内の“Ａｃｍｅ  Ｃｏｒｐ”、文７１０内の“Ｃｈｅｚ  Ｃｕｉｓｉｎｅ”、及び文７６０内の“ＡＢＣ”に対応する組織と、文７１０内の“Ｃｈｒｉｓ  Ｑｕｉｎｔａｎａ”及び文７７０内の“Ｃｈｒｉｓ”に対応する人物と、文７５０内の“＄２５０ｋ”なる金額と、文７１０内の“今日”、文７４０内の“７月１日”及び文７７０内の“２週間”に対応する日付と、文７１０内の“Ｃｈｅｚ  Ｃｕｉｓｉｎｅ”及び文７２０内の“グローバル”に対応する場所と、を認識し得る。
【００７８】
プロセス４２５にて、テンプレートに基づいて、自然言語テキスト内の１つ以上の可能性ある親エンティティが特定される。例えばエントリ６２０にて特定される１つ以上のテーブルなどの、テンプレートに含まれる親情報を用いて、ユーザ、ユーザの組織、及び／又はユーザのテナントに関連付けられた１つ以上のデータベース及び／又はデータストア上で、１つ以上の検索が実行される。一部の例において、この検索は、その信頼値が設定可能な閾値を上回るエンティティに対してのみ実行され得る。一部の例において、この検索は、例えばマルチテナントシステム３６０によって提供される検索ＡＰＩなどの検索ＡＰＩを用いて実行され得る。一部の例において、この検索は、異なるスペル、単語のバリエーション、及び／又は当該技術分野で知られている他のファジィ要因を考慮し得る。一部の例において、テンプレートで指定された１つ以上のテーブル内の正しいタイプのエンティティについて一致するレコードが見つからない場合、そのエンティティは可能性ある親エンティティのリストから省かれ得る。
【００７９】
テンプレート６００及び自然言語テキスト７００の例において、プロセス４２５は、可能性ある親エンティティとして、文７１０及び７２０からのＡｃｍｅ、文７３０からのＡｃｍｅ  Ｃｏｒｐ、文７１０からのＣｈｅｚ  Ｃｕｉｓｉｎｅ、及び文７６０からのＡＢＣ、のうちの１つ以上を認識し得る。何故なら、これらは各々、プロセス４２０において組織タイプのエンティティとして認識されており、そして、エントリ６２０のアカウントテーブルが組織タイプのエンティティと関連付けられているからである。一部の例において、アカウントテーブルの検索は、例えば“Ａｃｍｅ  Ｃｏｒｐ”、“Ａｃｍｅ，Ｉｎｃ．”、“Ａｃｍｅ  Ｐｒｏｄｕｃｔｓ，Ｌｔｄ．”、及び／又はこれらに類するものなど、可能性ある親エンティティと一致する及び／又は部分的に一致するレコードを特定することになる。
【００８０】
プロセス４３０にて、プロセス４２５において特定された可能性ある親エンティティがユーザに表示される。一部の例において、可能性ある親エンティティは、プロセス４１０において受信された非構造化オーディオ入力を分析するためのユーザによる初期要求に応答して、ユーザ装置（例えば、ユーザ装置３１０）に戻され得る。一部の例において、非構造化入力に関連付けられるべき正しい親エンティティ（ひいては、正しい親レコード）をユーザが選択することを可能にするために、可能性ある親エンティティは、対応するボタン、リンク、及び／又はこれらに類するものを有するアプリケーション、ブラウザ、及び／又はこれらに類するものにて表示され得る。一部の例において、可能性ある親エンティティを整理したやり方で提示するために、可能性ある親エンティティは、プロセス４２０において決定されたそれらの対応する信頼度、プロセス４２５の検索からの関連性因子、プロセス４２０において決定された自然言語テキスト内のそれらの対応するインデックス、及び／又はこれらの値の組み合わせに基づいてソートされ得る。
【００８１】
プロセス４３５にて、親エンティティの選択が受信される。一部の例において、親エンティティ（ひいては、対応する親レコード）の選択は、ユーザが、選択された親エンティティに関連付けられたボタンを押すこと、リンクをアクティブにすること、及び／又はこれらに類することに応答して受信され得る。一部の例において、親エンティティの選択は、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するもの、の一部として受信され得る。
【００８２】
プロセス４４０にて、プロセス４３５において選択された親エンティティとテンプレートとに基づいて、自然言語テキスト内の１つ以上の可能性ある子エンティティが特定される。例えばエントリ６３０にて特定された１つ以上のテーブルなど、テンプレートに含まれる子情報を用いて、ユーザ、ユーザの組織、及び／又はユーザのテナントに関連付けられた１つ以上のデータベース及び／又はデータストア上で、１つ以上の検索が実行される。一部の例において、この検索は、その信頼値が設定可能な閾値を上回るエンティティに対してのみ実行され得る。この検索は、プロセス４３５において選択された親エンティティ／レコードに関連付けられた１つ以上のテーブル内のレコードに制限され、それ故に、他の親レコードに関連する子エンティティも可能性ある子エンティティに含まれない。一部の例において、この検索は、例えばマルチテナントシステム３６０によって提供される検索ＡＰＩなどの検索ＡＰＩを用いて実行され得る。一部の例において、この検索は、異なるスペル、単語のバリエーション、及び／又は当該技術分野で知られている他のファジィ要因を考慮し得る。一部の例において、テンプレートで指定された１つ以上のテーブル内の正しいタイプのエンティティについて一致するレコードが見つからない場合、そのエンティティは可能性ある子エンティティのリストから省かれ得る。一部の例において、可能性ある子エンティティに含まれる子エンティティを更に制限するために、１つ以上のフィルタ及び／又は順序付け基準が使用され得る。
【００８３】
テンプレート６００及び自然言語テキスト７００の例において、プロセス４４０は、可能性ある子エンティティとして、文７１０からのＣｈｒｉｓ  Ｑｕｉｎｔａｎａ及び文７７０からのＣｈｒｉｓのうちの一方以上を認識し得る。何故なら、これらは各々、プロセス４２０において人物タイプのエンティティとして認識されており、そして、エントリ６３０の機会テーブルが人物タイプのエンティティと関連付けられているからである。一部の例において、“機会”テーブルの検索は、例えば“Ｃｈｒｉｓ  Ｑｕｉｎｔａｎａ”、“Ｃｈｒｉｓ  Ｊｏｎｅｓ”、“Ｄａｖｉｄ  Ｃｈｒｉｓｔｉａｎ”、及び／又はこれらに類するものなどの可能性ある子エンティティと一致する及び／又は部分的に一致するレコードを特定することになる。加えて、特定される可能性ある子エンティティの数を制限するため、及び可能性ある子エンティティがどのように順序付けられるかの順序付けを制御するために、エントリ６５０を使用してもよい。例えば、エントリ６５０によれば、その“ステージネーム”フィールドが“Ｃｌｏｓｅｄ”という値を持つ子レコードが結果から省かれることになり、そして、その結果が、例えば“Ｄａｖｉｄ  Ｃｈｒｉｓｔｉａｎ”、“Ｃｈｒｉｓ  Ｊｏｎｅｓ”、及び“Ｃｈｒｉｓ  Ｑｕｉｎｔａｎａ”の順など、“名前”フィールドによってアルファベット順にソートされることになる。
【００８４】
プロセス４４５にて、プロセス４４０において特定された可能性ある子エンティティがユーザに表示される。一部の例において、可能性ある子エンティティは、プロセス４１０において受信された非構造化オーディオ入力を分析するためのユーザによる初期要求に応答して、ユーザ装置（例えば、ユーザ装置３１０）に戻され得る。一部の例において、非構造化入力に関連付けられるべき正しい子エンティティ（ひいては、正しい子レコード）をユーザが選択することを可能にするために、可能性ある子エンティティは、対応するボタン、リンク、及び／又はこれらに類するものを有するアプリケーション、ブラウザ、及び／又はこれらに類するものにて表示され得る。一部の例において、可能性ある子エンティティは、テンプレートに含まれる順序付け情報（例えば、エントリ６５０）に従ってソートされることができ、及び／又は、順序付け情報がテンプレートに含まれない場合には代わりに、プロセス４２０において決定されたそれらの対応する信頼度、プロセス４２５の検索からの関連性因子、プロセス４２０において決定された自然言語テキスト内のそれらの対応するインデックス、及び／又はこれらの値の組み合わせに基づいてソートされてもよい。
【００８５】
プロセス４５０にて、子エンティティの選択が受信される。一部の例において、子エンティティ（ひいては、対応する子レコード）の選択は、ユーザが、選択された子エンティティに関連付けられたボタンを押すこと、リンクをアクティブにすること、及び／又はこれらに類することに応答して受信され得る。一部の例において、子エンティティの選択は、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するもの、の一部として受信され得る。
【００８６】
プロセス４５５にて、プロセス４１５からの自然言語テキスト内の各アクションアイテムが処理される。一部の例において、アクションアイテムの各々は、自然言語テキスト内のアクションアイテムを通じて繰り返して、更に詳細に後述する方法５００を用いて各アクションアイテムを順に処理することによって処理され得る。一部の例において、アクションアイテムの各々は、プロセス４１５において自然言語テキストに挿入された対応するアクションアイテムセパレータによって認識され得る。自然言語テキスト７００の例では、それぞれ文７４０、７５０、及び７６０に対応する３つのアクションアイテムが、プロセス４５５において処理される。
【００８７】
次に図５を参照するに、プロセス５０５にて、アクションアイテムに対応する自然言語テキストが抽出される。一部の例において、アクションアイテムに対応する自然言語を、完全な非構造化入力を形成する自然言語テキストの残りの部分から抽出するために、アクションアイテムの開始及び終了を指し示すインデックス（例えば、プロセス４１５において決定される）が使用される。一部の例において、この抽出は、部分文字列演算、非構造化入力内の単語シーケンスからの単語の抽出、及び／又はこれらに類するもの、のうちの１つ以上を含み得る。
【００８８】
プロセス５１０にて、アクションアイテムの意図が決定される。一部の例において、プロセス５１０は、例えば意図サービス３８６などの意図分類器及び／又は意図サービスの助けを借りて実行され得る。一部の例において、意図認識は、単語及びフレーズを分析して、アクションアイテムの自然言語テキスト内でユーザによって意図されるデータベース及び／又はデータストアの変更のタイプ、並びにオプションで意図の分類における信頼度を特定することを含む。一部の例において、意図は、データベース及び／又はデータストアへの所望のデータ変更に関連付けられる意図のクラスから選択され得る。一部の例において、意図のクラスは、データベーステーブルにエントリ（例えば、レコード）を挿入すること、データベーステーブル内のエントリ（例えば、レコード）の１つ以上のフィールドを更新すること、及び／又はこれらに類するもの、のうちの１つ以上を含み得る。
【００８９】
プロセス５１５にて、アクションアイテムの自然言語テキスト内のエンティティが特定される。一部の例において、以前に保存されたものであるプロセス４２０のエンティティ認識の結果を用いて、エンティティの各々、エンティティのタイプ、エンティティの値、及びアクションアイテムの自然言語テキストに対応するインデックス内に位置するエンティティの各々の特定における信頼度が特定される。一部の例において、エンティティの各々、エンティティのタイプ、及び特定における信頼度を特定するために、例えばエンティティサービス３８４などの１つ以上のエンティティ認識サービスが使用され得る。
【００９０】
プロセス５２０にて、エンティティとアクションアイテムの意図とがテンプレートに基づいてマッチングされる。プロセス５１０において決定されたアクションアイテムの意図は、テンプレートによって許されるアクションアイテム（例えば、データベース変更）と比較される。例えば、その意図がレコード更新であると決定されたアクションアイテムは、レコード更新を含むアクションアイテムに対してのみマッチングされ、その意図がレコード作成であると決定されたアクションアイテムは、レコード作成を含むアクションアイテムに対してのみマッチングされ得る。さらに、プロセス５１５においてアクションアイテム内で特定されたエンティティのタイプが、テンプレートにて規定されたアクションアイテムの署名とともに含まれるタイプとマッチングされる。従って、各アクションアイテムが、エンティティの意図及びタイプによって、テンプレート内のアクションアイテム署名のうちの１つ以上にマッチングされる。一部の例において、対応する署名内で規定されるよりも多くのエンティティがアクションアイテム内に存在する（例えば、署名が日付及び時間を含み、アクションアイテムに関する自然言語テキストが日付、時間、及び人物エンティティを含む）場合、アクションアイテムが署名とマッチングされ得る。一部の例において、エンティティの意図及びタイプが複数の署名と一致する場合、最大の強さを有する一致が選択されてもよく、及び／又は、一致の各々が、ユーザによる更なる入力のために記されてもよい。一部の例において、最大の強さは、例えば最大、乗算、及び／又は他の三角ノルム関数などの集計関数を使用して、意図及びエンティティの特定の信頼度を組み合わせることによって決定され得る。
【００９１】
テンプレート６００及び自然言語テキスト７００の例において、文７４０は、意図が機会レコード（例えば、子レコード）を更新することであり、且つ自然言語テキストが、日付タイプのものであるエンティティ“７月１日”を含むので、エントリ６６４の署名とマッチングされ；文７５０は、意図が機会レコードを更新することであり、且つ自然言語テキストが、金額タイプのものであるエンティティ“＄２５０ｋ”を含むので、エントリ６６２の署名とマッチングされ；そして、文７７０は、意図がタスクレコードを作成することであり、且つ自然言語テキストが、人物タイプのものであるエンティティ“Ｃｈｒｉｓ”と、日付タイプのものであるエンティティ“２週間”とを含むので、エントリ６６８の署名とマッチングされ得る。
【００９２】
プロセス５２５にて、実行する可能性あるアクションがユーザに表示される。一部の例において、可能性あるアクションは、ユーザ装置（例えば、ユーザ装置３１０）に戻され得る。一部の例において、可能性あるアクションが正しいアクションであることをユーザが確認及び／又は棄却することを可能にするために、可能性あるアクションは、対応するボタン、リンク、及び／又はこれらに類するものを有するアプリケーション、ブラウザ、及び／又はこれらに類するものにて表示され得る。一部の例において、可能性あるアクションは、オプションで、確認プロセスにおいてユーザを支援するために、対応する自然言語テキストとともに表示され得る。
【００９３】
プロセス５３０にて、可能性あるアクションの確認が受信される。一部の例において、可能性あるアクションの確認は、ユーザが確認を示すためにボタンを押すこと、リンクをアクティブにすること、及び／又はこれらに類することに応答して受信され得る。一部の例において、可能性あるアクションの確認は、ＡＰＩコール、リモートプロシージャコール、ＨＴＴＰポスト、及び／又はこれらに類するもの、の一部として受信され得る。一部の例において、可能性あるアクションをユーザが確認しない場合、方法５００は、プロセス５２０に戻って更なるマッチングを行ってもよいし、あるいは、アクションアイテムを実行することなく、また、データベース変更が行われることなく終わってもよい。
【００９４】
プロセス５３５にて、確認されたアクションに基づくデータベースクエリが生成される。一部の例において、データベースクエリはＳＱＬクエリとし得る。一部の例において、レコードの作成に関連付けられたアクションアイテムは“ＩＮＳＥＲＴ（挿入）”クエリを生成することができ、レコードの更新に関連付けられたアクションアイテムは“ＵＰＤＡＴＥ（更新）”クエリを生成することができる。一部の例において、アクションアイテムがレコードの更新である場合、対応する子レコードが、プロセス５１５において自然言語テキストから特定されたエンティティに関連付けられた新たなデータ値で更新される。一部の例において、アクションアイテムがレコードの作成である場合、レコードが、そのアクションアイテムに一致する署名にて特定されたテーブルに追加され、プロセス４３５及び４５０によってそれぞれ選択された親レコード及び子レコードに関連付けられる。
【００９５】
テンプレート６００及び自然言語テキスト７００の例において、文７４０は、子の機会レコードを、“締切日”フィールドを７月１日に設定するように更新するためのデータベースクエリを生じさせ；文７５０は、子の機会レコードを、“金額”フィールドを＄２５０，０００に設定するように更新するためのデータベースクエリを生じさせ；そして、文７６０は、タスクテーブルにレコードを挿入するためのデータベースクエリを生じさせて、連絡先フィールドがＣｈｒｉｓに設定され、フォローアップ日フィールドが２週間先の日付に設定され、新しいレコードが、プロセス４３５及び４５０においてそれぞれ選択された親レコード及び子レコードと関連付けられるようにし得る。
【００９６】
プロセス５４０にて、プロセス５３５において決定されたデータベースクエリを用いてデータベースが変更される。一部の例において、データベースクエリは、１つ以上のＡＰＩ、リモートプロシージャコール、及び／又はこれらに類するものを用いてデータベースシステム（例えば、マルチテナントシステム３６０）に提供され得る。一部の例において、例えば認証サービス３４４によって提供され得るような事前決定された接続ストリング及び／又は認証情報を含めることによって、適正なデータアクセスが保証され得る。
【００９７】
戻って図４を参照するに、プロセス４５５の完了を受けて、方法４００は、更なる非構造化音声入力を、当該更なる非構造化入力の性質及びコンテンツに応じて同じテンプレート又は異なるテンプレートを使用して処理するために繰り返され得る。
【００９８】
上述のように、また、ここで更に強調するように、図４及び図５は単に、請求項の範囲を不当に限定するはずのない例に過ぎない。当業者は、数多くの変形、代替、及び変更を認識することになる。一部の実施形態によれば、方法４００及び／又は５００は、追加のプロセス及び／又は変形プロセスを含んでもよい。一部の例において、プロセス４１０及び４１５は、例えばテキストエディタ及び／又はそれに類するものを用いるなど、ユーザがユーザ装置３１０上でテキストをタイプする及び／又は他の方法で入力する代替プロセスで置き換えられてもよい。
【００９９】
一部の例において、プロセス５２０において複数の署名とのマッチングが行われる場合、プロセス５２５及び５３０は、対応する可能性あるアクションのリストを表示するように変更されてもよく、可能性あるアクションの確認は、正しい可能性あるアクションの選択を含む。一部の例において、可能性あるアクションは、集計関数の結果に従ってソートされてもよく、オプションで集計関数の結果が表示されてもよい。
【０１００】
一部の例において、方法４００は、プロセス４１５の後に追加のプロセスを含んでもよく、そこで自然言語テキスト（セパレータを有する又は有しない）がユーザに表示されることで、ユーザが、音声認識プロセスによって導入されたスペルミス及び／又は他の誤りを訂正するためにテキストを編集し得るようにされる。
【０１０１】
一部の例において、方法４００は、非構造化オーディオ入力及び／又はテキストが、例えばファイルオブジェクト、バイナリラージオブジェクト（ＢＬＯＢ）、及び／又はこれらに類するものの中などで、子レコードに格納される追加プロセスを含んでもよい。
【０１０２】
一部の例において、方法４００及び／又は５００は、（例えば、エントリ６９０を用いて）テンプレートによって許可されるように、為されたデータベース変更を、そのような変更に同意した及びユーザに公表するための追加プロセスを含んでもよい。一部の例において、この公表は、１つ以上の電子メールメッセージ、ソーシャルメディアメッセージ、及び／又はこれらに類するものを送ることを含み得る。
【０１０３】
例えばユーザシステム１１２、データベースシステム１１６、ユーザ装置３１０、サーバ３３０、マルチテナントシステム３６０、及び／又はサポートサーバ３７０などのコンピューティング装置の一部の例は、１つ以上のプロセッサ（例えば、プロセッサシステム１１２Ａ、プロセッサシステム１１７、プロセッサ３３２、及び／又はプロセッサ３７２）によって実行されるときに該１つ以上のプロセッサに方法４００及び／又は５００の処理を実行させる実行可能コードを含んだ、非一時的な有形の機械読み取り可能媒体を含み得る。方法４００及び／又は５００の処理を含み得る機械読み取り可能媒体の一部の一般的な形態は、例えば、フロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、穴のパターンを有する他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップ若しくはカートリッジ、及び／又はプロセッサ若しくはコンピュータがそれから読み出すように適応される他の媒体である。
【０１０４】
例示的な実施形態が図示されて説明されたが、以上の開示では、広範な変更、変形及び代替が企図され、また、一部の例において、実施形態の一部の機構が、他の機構の対応する使用なしに使用されてもよい。当業者は、数多くの変形、代替、及び変更を認識するであろう。従って、本出願の範囲は、以下の請求項によってのみ限定されるべきであり、請求項は、ここに開示された実施形態の範囲と一致するように広く解釈されるのが妥当である。
【図１】
2021533461.tif 000002
【図２】
2021533461.tif 000003
【図３】
2021533461.tif 000004
【図４】
2021533461.tif 000005
【図５】
2021533461.tif 000006
【図６】
2021533461.tif 000007
【図７】
2021533461.tif 000008
【手続補正書】
【提出日】令和3年2月19日(2021.2.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自然言語処理のための方法であって、
サーバの１つ以上のプロセッサにより、非構造化テキスト入力を受信し、
前記１つ以上のプロセッサにより、前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記１つ以上のプロセッサにより、前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上のプロセッサにより、前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記１つ以上のプロセッサにより、前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上のプロセッサにより、前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記１つ以上のプロセッサにより、前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ことを有する方法。
【請求項２】
前記データストアを更新することは更に、前記選択された親エンティティに基づく、請求項１に記載の方法。
【請求項３】
前記エンティティを特定することは、前記エンティティの各々のタイプ、前記エンティティの各々の値、及び前記特定することにおける信頼度を特定することを有する、請求項１又は２に記載の方法。
【請求項４】
前記エンティティの各々のタイプは、組織、人物、日付、時間、パーセンテージ、金銭的価値、及びピックリストタイプから成る群から選択される、請求項３に記載の方法。
【請求項５】
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて前記データストアを更新することは、
前記アクションアイテム内で特定された１つ以上のエンティティの前記決定された意図及びタイプを、前記テンプレート内のアクションアイテム署名とマッチングすることと、
前記アクションアイテム内で特定された前記１つ以上のエンティティの署名及び値に基づいてデータベースクエリを生成することと、
を有する、請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記データベースクエリに含めるべき前記データストア内のレコードからのフィールドが、前記アクションアイテム内で特定された対応するエンティティのタイプによって、前記テンプレート内で特定される、請求項５に記載の方法。
【請求項７】
前記１つ以上の可能性ある親エンティティを特定することは、前記データストア内の１つ以上の親テーブルのレコード内で、前記１つ以上の親テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の親テーブルは前記テンプレート内で特定される、
請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記１つ以上の可能性ある子エンティティを特定することは、前記データストア内の１つ以上の子テーブルのレコード内で、前記１つ以上の子テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索することを有し、
前記１つ以上の子テーブルは前記テンプレート内で特定され、
前記レコードは、前記選択された親エンティティに対応するレコードに関連する、
請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記１つ以上の可能性ある子エンティティを特定することは更に、
前記テンプレート内のフィルタに基づいて前記レコードをフィルタリングすること、又は
前記テンプレートによって指定される順序に基づいて前記１つ以上の可能性ある子エンティティを順序付けること、
のうちの１つ以上を有する、請求項８に記載の方法。
【請求項１０】
前記更新することに基づいて前記データストアへの変更を公表する、ことを更に有する請求項１乃至９のいずれかに記載の方法。
【請求項１１】
非構造化テキスト入力は、オーディオ入力として受信され、
当該方法は更に、前記オーディオ入力に対して音声認識を実行することを有する、
請求項１乃至９のいずれかに記載の方法。
【請求項１２】
実行可能コードを有した非一時的な機械読み取り可能媒体であって、前記実行可能コードは、コンピューティング装置に関連する１つ以上のプロセッサによって実行されるときに、該１つ以上のプロセッサに方法を実行させるように適応されており、当該方法は、
非構造化テキスト入力を受信し、
前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、そして、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ことを有する、
非一時的な機械読み取り可能媒体。
【請求項１３】
メモリと、
前記メモリに結合された１つ以上のプロセッサと、
を有し、
前記１つ以上のプロセッサは、
非構造化テキスト入力を受信し、
前記非構造化テキスト入力を解釈するためのテンプレートを受信し、
エンティティ分類器を使用して、前記非構造化テキスト入力内のエンティティを特定し、
前記テンプレートに基づいて、前記特定されたエンティティから１つ以上の可能性ある親エンティティを特定し、
前記１つ以上の可能性ある親エンティティからの親エンティティの選択を受信し、
前記テンプレート及び前記選択された親エンティティに基づいて、前記特定されたエンティティから１つ以上の可能性ある子エンティティを特定し、
前記１つ以上の可能性ある子エンティティからの子エンティティの選択を受信し、
前記特定されたエンティティ及び前記テンプレートに基づいて、前記非構造化テキスト入力内のアクションアイテムを特定し、
意図分類器を使用して、前記アクションアイテムの意図を決定し、そして、
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて、データストアを更新する、
ように構成される、
コンピューティング装置。
【請求項１４】
前記決定された意図、前記特定されたエンティティ、及び前記選択された子エンティティに基づいて前記データストアを更新するために、前記１つ以上のプロセッサは、
前記アクションアイテム内で特定された１つ以上のエンティティの前記決定された意図及びタイプを、前記テンプレート内のアクションアイテム署名とマッチングし、
前記アクションアイテム内で特定された前記１つ以上のエンティティの署名及び値に基づいてデータベースクエリを生成する、
ように構成される、請求項１３に記載のコンピューティング装置。
【請求項１５】
前記１つ以上の可能性ある親エンティティを特定するために、前記１つ以上のプロセッサは、前記データストア内の１つ以上の親テーブルのレコード内で、前記１つ以上の親テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索するように構成され、
前記１つ以上の親テーブルは前記テンプレート内で特定され、
前記１つ以上の可能性ある子エンティティを特定するために、前記１つ以上のプロセッサは、前記データストア内の１つ以上の子テーブルのレコード内で、前記１つ以上の子テーブルのタイプに一致するタイプを持つ前記特定されたエンティティのうちの１つ以上に一致する値を検索するように構成され、
前記１つ以上の子テーブルは前記テンプレート内で特定され、
前記レコードは、前記選択された親エンティティに対応するレコードに関連する、
請求項１３又は１４に記載のコンピューティング装置。
【国際調査報告】
2021533461.tif 000009
2021533461.tif 000010