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

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

▶ オラクル・インターナショナル・コーポレイションの特許一覧

<>
  • 特表-新語分類技術 図1
  • 特表-新語分類技術 図2
  • 特表-新語分類技術 図3
  • 特表-新語分類技術 図4
  • 特表-新語分類技術 図5
  • 特表-新語分類技術 図6
  • 特表-新語分類技術 図7
  • 特表-新語分類技術 図8
  • 特表-新語分類技術 図9
  • 特表-新語分類技術 図10
  • 特表-新語分類技術 図11
  • 特表-新語分類技術 図12
  • 特表-新語分類技術 図13
  • 特表-新語分類技術 図14
  • 特表-新語分類技術 図15
  • 特表-新語分類技術 図16
  • 特表-新語分類技術 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-27
(54)【発明の名称】新語分類技術
(51)【国際特許分類】
   G06F 16/35 20190101AFI20221020BHJP
【FI】
G06F16/35
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022505355
(86)(22)【出願日】2020-08-07
(85)【翻訳文提出日】2022-01-25
(86)【国際出願番号】 US2020045390
(87)【国際公開番号】W WO2021034517
(87)【国際公開日】2021-02-25
(31)【優先権主張番号】62/888,998
(32)【優先日】2019-08-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/985,131
(32)【優先日】2020-08-04
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】マラック,マイケル
(72)【発明者】
【氏名】リーバス,ルイス・イー
(72)【発明者】
【氏名】クライダー,マーク・リー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FA03
5B175HB03
(57)【要約】
新語または未知語もしくは未知の名前に関連する属性を識別するための技術が提供される。新語に関して現実世界の特徴を予測することができる。入力単語についてトリグラムが識別され、識別されたトリグラムについて単語埋込みモデルベクトル値が算出され、行列に入力される。最も近い名前についてトリグラムが識別される。入力単語についてのトリグラムおよび最も近い名前からのトリグラムに基づいて分類値が算出されて行列に入力される。畳み込みニューラルネットワークは、行列を処理して、新語に関連する1つ以上の特徴を識別することができる。
【特許請求の範囲】
【請求項1】
方法であって、
プロセッサとメモリとを備えるサーバコンピュータによって、第1の文字列を含む入力単語を受信するステップと、
前記サーバコンピュータによって、前記入力単語についての第1の複数のトリグラムを判定するステップと、
前記サーバコンピュータによって、前記判定された第1の複数のトリグラムについての単語埋込みベクトル値を算出するステップと、
前記サーバコンピュータによって、前記単語埋込みベクトル値を行列に入力するステップと、
前記サーバコンピュータによって複数の最も近い名前を判定するステップとを含み、前記複数の最も近い名前は、前記入力単語の前記第1の文字列に類似する第2の文字列を有する名前であり、前記方法はさらに、
前記サーバコンピュータによって、前記最も近い名前についての第2の複数のトリグラムを判定するステップと、
前記サーバコンピュータによって、前記入力単語の前記第1の複数のトリグラムと前記最も近い名前の前記第2の複数のトリグラムとの間の最長共通部分列を判定するステップと、
前記サーバコンピュータによって、前記第1の複数のトリグラムについての分類値を算出するステップと、
前記サーバコンピュータによって、前記算出された分類値を含むように前記行列を更新するステップと、
前記サーバコンピュータによって、畳み込みニューラルネットワークを介して前記更新された行列を実行して、前記入力単語の分類を判定するステップとを含む、方法。
【請求項2】
前記入力単語は、新語である、請求項1に記載の方法。
【請求項3】
前記分類値を算出するステップは、
前記入力単語から前記第1の複数のトリグラムを識別するステップと、
前記最も近い名前から前記第2の複数のトリグラムを識別するステップと、
前記入力単語からの前記第1の複数のトリグラムを、前記最も近い名前からの前記第2の複数のトリグラムと比較するステップと、
前記入力単語における前記第1の複数のトリグラムと、前記最も近い名前からの前記第2の複数のトリグラムとの間の一致の数に基づいて前記分類値を算出するステップとを含む、請求項1に記載の方法。
【請求項4】
前記分類値を算出するステップは、
複数の分類の各々ごとにカウンタを開始するステップと、
前記入力単語の前記第1の複数のトリグラムから第1のトリグラムを選択するステップと、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから1つ以上のトリグラムを判定するステップと、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから前記1つ以上のトリグラムの分類を判定するステップと、
前記最も近い名前の前記第2の複数のトリグラムからの前記1つ以上のトリグラムの前記判定された分類に対応する前記複数の分類の各々ごとに前記カウンタをインクリメントするステップと、
前記判定された最も近い名前の数に対する前記カウンタの値に基づいて前記分類値を算出するステップとを含む、請求項1に記載の方法。
【請求項5】
前記単語埋込みベクトルモデルは、前記入力単語の種類に従ってトレーニングされる、請求項1に記載の方法。
【請求項6】
前記単語埋込みモデルは、トリグラムについての単語埋込みモデルベクトル値を算出するようにトレーニングされる、請求項1に記載の方法。
【請求項7】
前記第1の複数のトリグラムのうちの1つのトリグラムは、前記入力単語からの連続した順序の3つの字、文字または記号を含む、請求項1に記載の方法。
【請求項8】
前記サーバコンピュータは、データエンリッチメントシステムの新語分類サーバである、請求項1に記載の方法。
【請求項9】
前記判定された第1の複数のトリグラムについての前記ベクトル値を算出するステップの後、
前記行列を開始するステップと、
前記算出された単語埋込みベクトル値を前記行列にポピュレートするステップとを含む、請求項1に記載の方法。
【請求項10】
前記入力単語は、前記入力単語をエンリッチ化するように構成された前記データエンリッチメントシステムの対話型ユーザインターフェイス上で受信される、請求項8に記載の方法。
【請求項11】
前記対話型ユーザインターフェイスは、1つ以上の入力単語についての新語分類を実行するための推薦を表示するように構成される、請求項10に記載の方法。
【請求項12】
サーバコンピュータであって、
プロセッサと、
メモリと、
前記プロセッサに結合されたコンピュータ可読媒体とを備え、前記コンピュータ可読媒体は、方法を実現するための、前記プロセッサによって実行可能な命令を格納しており、前記方法は、
第1の文字列を含む入力単語を受信するステップと、
前記入力単語についての第1の複数のトリグラムを判定するステップと、
前記判定された第1の複数のトリグラムについての単語埋込みベクトル値を算出するステップと、
前記単語埋込みベクトル値を行列に入力するステップと、
複数の最も近い名前を判定するステップとを含み、前記複数の最も近い名前は、前記入力単語の前記第1の文字列に類似する第2の文字列を有する名前であり、前記方法はさらに、
前記最も近い名前についての第2の複数のトリグラムを判定するステップと、
前記入力単語の前記第1の複数のトリグラムと前記最も近い名前の前記第2の複数のトリグラムとの間の最長共通部分列を判定するステップと、
前記第1の複数のトリグラムの分類値を算出するステップと、
前記算出された分類値を含むように前記行列を更新するステップと、
畳み込みニューラルネットワークを介して前記更新された行列を実行して、前記入力単語の分類を判定するステップとを含む、サーバコンピュータ。
【請求項13】
前記入力単語は、新語である、請求項12に記載のサーバコンピュータ。
【請求項14】
前記分類値を算出するステップは、
前記入力単語から前記第1の複数のトリグラムを識別するステップと、
前記最も近い名前から前記第2の複数のトリグラムを識別するステップと、
前記入力単語からの前記第1の複数のトリグラムを、前記最も近い名前からの前記第2の複数のトリグラムと比較するステップと、
前記入力単語における前記第1の複数のトリグラムと、前記最も近い名前からの前記第2の複数のトリグラムとの間の一致の数に基づいて前記分類値を算出するステップとを含む、請求項12に記載のサーバコンピュータ。
【請求項15】
前記分類値を算出するステップは、
複数の分類の各々ごとにカウンタを開始するステップと、
前記入力単語の前記第1の複数のトリグラムから第1のトリグラムを選択するステップと、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから1つ以上のトリグラムを判定するステップと、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから前記1つ以上のトリグラムの分類を判定するステップと、
前記最も近い名前の前記第2の複数のトリグラムからの前記1つ以上のトリグラムの前記判定された分類に対応する前記複数の分類の各々ごとに前記カウンタをインクリメントするステップと、
前記判定された最も近い名前の数に対する前記カウンタの値に基づいて前記分類値を算出するステップとを含む、請求項12に記載のサーバコンピュータ。
【請求項16】
前記単語埋込みモデルは、トリグラムについての単語埋込みモデルベクトル値を算出するようにトレーニングされる、請求項12に記載のサーバコンピュータ。
【請求項17】
サーバコンピュータの1つ以上のプロセッサに動作を実行させるように構成された命令を含む非一時的なコンピュータ可読媒体であって、前記動作は、
第1の文字列を含む入力単語を受信する動作と、
前記入力単語についての第1の複数のトリグラムを判定する動作と、
前記判定された第1の複数のトリグラムについての単語埋込みベクトル値を算出する動作と、
前記単語埋込みベクトル値を行列に入力する動作と
複数の最も近い名前を判定する動作とを含み、前記複数の最も近い名前は、前記入力単語の前記第1の文字列に類似する第2の文字列を有する名前であり、前記動作はさらに、
前記最も近い名前についての第2の複数のトリグラムを判定する動作と、
前記入力単語の前記第1の複数のトリグラムと前記最も近い名前の前記第2の複数のトリグラムとの間の最長共通部分列を判定する動作と、
前記第1の複数のトリグラムの分類値を算出する動作と、
前記算出された分類値を含むように前記行列を更新する動作と、
畳み込みニューラルネットワークを介して前記更新された行列を実行して、前記入力単語の分類を判定する動作とを含む、非一時的なコンピュータ可読媒体。
【請求項18】
前記入力単語は、新語である、請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記分類値を算出する動作は、
前記入力単語から前記第1の複数のトリグラムを識別する動作と、
前記最も近い名前から前記第2の複数のトリグラムを識別する動作と、
前記入力単語からの前記第1の複数のトリグラムを、前記最も近い名前からの前記第2の複数のトリグラムと比較する動作と、
前記入力単語における前記第1の複数のトリグラムと、前記最も近い名前からの前記第2の複数のトリグラムとの間の一致の数に基づいて前記分類値を算出する動作とを含む、請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記分類値を算出する動作は、
複数の分類の各々ごとにカウンタを開始する動作と、
前記入力単語の前記第1の複数のトリグラムから第1のトリグラムを選択する動作と、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから1つ以上のトリグラムを判定する動作と、
前記入力単語の前記第1のトリグラムに一致する前記最も近い名前の前記第2の複数のトリグラムから前記1つ以上のトリグラムの分類を判定する動作と、
前記最も近い名前の前記第2の複数のトリグラムからの前記1つ以上のトリグラムの前記判定された分類に対応する前記複数の分類の各々ごとに前記カウンタをインクリメントする動作と、
前記判定された最も近い名前の数に対する前記カウンタの値に基づいて前記分類値を算出する動作とを含む、請求項17に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、米国特許法第119条(e)に準拠して、2019年8月19日出願の「新語分類技術(NEOLOGISM CLASSIFICATION TECHNIQUES)」と題された米国仮特許出願第62/888,998号に基づく優先権を主張するものであって、その内容全体があらゆる目的のために引用により本明細書に援用されている。
【0002】
背景
本開示は、概して、データの分析および処理に関する。より特定的には、新語の分析および処理のための技術が開示される。
【背景技術】
【0003】
ビッグデータのユーザは、彼らの顧客に関する大量のデータ(たとえば、データセット)を有し得る。ユーザらは、企業などのデータセットのユーザを含み得る。データセットはスプレッドシートおよびテーブルの形式であり得るとともに、顧客ID、ファーストネーム(名)、ラストネーム(姓)、住所などの顧客に関する情報を含み得る。ユーザらは、さまざまなソースからのデータセットを有し得る。当該データセットは名前、人口統計および地理的情報などを含み得る。
【0004】
データセットは、追加の情報が当該データセットから判定され得る場合、ユーザにとってより有用になり得る。たとえば、性別、世代、および他の人口統計学的情報などの顧客に関する追加の情報が容易に入手できない場合、このような追加情報を知ることは有益であるだろう。
【発明の概要】
【発明が解決しようとする課題】
【0005】
データセットは、これまで見たことのない単語(たとえば、新語)を含み得る。たとえば、顧客の名前は固有の名前または名前の固有のスペルであるかもしれない。さらに、顧客が勤務する企業の名前は、未知の名前であるかもしれないし造語であるかもしれない。これまで見たことのない単語についての追加情報を判定することは困難である。なぜなら、そのような単語について情報を得るための既存の情報(たとえば、属性、特徴など)が存在しないからである。
【0006】
単語間の類似性を判定するための技術が存在する。たとえば、或る未知語を想定した場合、いくつかの単語のコーパス内に含まれる最も類似する単語が見出され得る。しかしながら、このような技術では正確な結果が得られない。たとえば、単語のトレーニングコーパス内に含まれる最も類似した単語を用いても正確な結果は得られず、未知語について推定される属性は不正確である。具体的には、いくつかの単語全体を用いても高精度な結果は得られない。
【0007】
したがって、未知語についての特徴を識別するより正確な方法が必要とされている。例示的な実施形態では、これらおよび他の問題に対処する。
【0008】
他の実施形態は、本明細書に記載される方法に関連するシステム、デバイス、およびコンピュータ可読媒体を対象とする。以下の詳細な説明および添付の図面を参照することで、例示的な実施形態の性質および利点がより良く理解され得る。
【課題を解決するための手段】
【0009】
概要
例示的な実施形態は、これまで見たことのない単語または名前(たとえば、新語)の現実世界の特徴に関する予測を行なうように構成される。
【0010】
テキストの本体(たとえば、データセット、スプレッドシートなど)の場合、これまで見たことのない単語が存在する可能性がある。たとえば、新しい名前または異なるスペルの名前がデータセットに含まれている可能性がある。別の例として、新しい単語が作成されるかまたは新しいバリエーションの単語が作成される可能性がある。これまで見たことのない単語または名前は、その単語または名前に関連する意味および/または特徴が現在知られていないような単語または名前である。これまで見たことのない単語または名前は新語として知られ得る。未知の単語または名前は本明細書では未知語と称する。
【0011】
例示的な一実施形態は、データセット情報がより有用になり得るようにデータセットをエンリッチ化する。たとえば、或るユーザが大規模なデータセット(たとえば、ビッグデータ)を有する可能性がある。当該データセットは、追加の情報および特徴が当該データセットに基づいて判定され得る場合、より有用になり得る。例示的な一実施形態は、未知語から意味を判定することができ、これにより、当該データセットをより有用なものにすることができる。当該データセットは、データの列および行を含むスプレッドシートの形式であり得る。当該データセットは、1つ以上の新語を含むデータの列を含み得る。たとえば、ファーストネームを対象とするデータセットの列は、これまで見たことのないいくつかの名前を含み得る。
【0012】
例示的な一実施形態は、未知語に基づいて追加の情報を解読することができる。たとえば、例示的な一実施形態は、未知の名前に基づいて、業界、言語、性別、世代などの特徴を判定することができる。業界、言語、性別、および世代を例として説明しているが、データセット内のデータの種類(たとえば、ファーストネーム、企業名など)に応じてデータセットについての他の特徴および属性を判定することができる。
【0013】
さらに、例示的な一実施形態は、高精度で未知語に関連する特徴および追加情報を判定することができる。したがって、ユーザは分類に関して推測する必要がない。
【0014】
特定の名前または単語は既知の特徴を有し得る。たとえば、「Alice」などの名前は女性名として関連付けることができる。具体的には、履歴情報および事前の単語分析を考慮すると、「Alice」などの名前は女性に関連付けられている。しかしながら、これらの名前を「Allys」と綴る人がいるかもしれない。これはそのような名前の主要な具体例であるかもしれず、または、この名前とは何の関連性がない可能性もある。したがって、名前「Allys」が特定の特徴に関連付けられない可能性がある。名前に加えて、これまで見たことのない単語が存在する可能性もある。新しい単語または単語の新しいスペルが作成される可能性があり、このため、これら新しい単語または単語の新しいスペルは歴史的背景または関連付けを持たない可能性がある。
【0015】
例示的な一実施形態は、単語または名前がどの言語に由来しているかを予測し、名前(たとえば、企業名)に基づいて業界を予測し、人の名前に基づいて性別を予測することができる。性別を予測することは、市場細分化の分析時の集計に有用であり得る。
【0016】
例示的な一実施形態は、未知語のスペルに基づいて意味を推定することができる。意味はトリグラムを用いて推定することができ、トリグラムは、未知語に関する情報を提供するのに用いることができる。具体的には、3文字のトリグラムを言語として扱うことによって未知語の意味を判定することができる。すなわち、意味は、或る文章内の語順が意味を持つのと同様に、単語内のトリグラムの順序に基づいて推定することができる。たとえば、トリグラムおよび履歴データに基づいて、母音で終わる名前が女性に関連付けられることが多いと判定することができる。
【0017】
例示的な一実施形態は、ニューラルネットワーク(たとえば、Word2Vec)を介してトレーニングセットの単語から抽出されたトリグラムを実行する。さらに、未知語の属性および特徴についての予測を行なうために教師あり学習を実行することができる。上述したように、未知語の属性および特徴、すなわち、教師あり学習についてのラベルは、単語が由来する言語、業界、性別、世代などを含み得る。未知語の属性および特徴は、未知語について判定することができる追加の情報を含む。したがって、ユーザは、単に、たとえばファーストネームのデータセットを有するだけではなく、その顧客の性別、その顧客が勤めている業界などの追加情報(たとえば、これらのデータ項目についてのラベル)を有する。これにより、データセットはユーザにとってより有用になる。
【0018】
図面の簡単な説明
本開示は、同様の参照番号が同様の要素を示している添付の図面に関連付けて以下の詳細な説明によって容易に理解されるだろう。
【図面の簡単な説明】
【0019】
図1】いくつかの例示的な実施形態に従った分析環境を示すブロック図である。
図2】いくつかの例示的な実施形態に従った、データエンリッチメントシステムの新語分類サーバを示すブロック図である。
図3】いくつかの例示的な実施形態に従った、新語を分類するための方法のフローチャートである。
図4】いくつかの例示的な実施形態に従った、新語を分類するための変数の概要である。
図5】いくつかの例示的な実施形態に従った、入力単語についてのトリグラムの判定を示す図である。
図6】いくつかの例示的な実施形態に従った、トリグラム単語埋込みモデルベクトルを伴う行列を示す図である。
図7】いくつかの例示的な実施形態に従った、単語についてのベクトルを算出するためのプロセスを示す図である。
図8】いくつかの例示的な実施形態に従った、入力単語について最も近い名前の判定を示す図である。
図9】いくつかの例示的な実施形態に従った、キューのリストを表わすテーブルである。
図10】いくつかの例示的な実施形態に従った、分類値を算出するための方法のフローチャートである。
図11】いくつかの例示的な実施形態に従った、分類値を算出するための方法の詳細なフローチャートである。
図12】いくつかの例示的な実施形態に従った、分類値を含む行列を示す図である。
図13】いくつかの例示的な実施形態に従った畳み込みニューラルネットワークを示す図である。
図14】いくつかの例示的な実施形態に従った、新語分類を実行するためのユーザインターフェイスを示す図である。
図15】いくつかの例示的な実施形態に従った分散型システムを示す簡略図である。
図16】いくつかの例示的な実施形態に従った、サービスがクラウドサービスとして提供され得るシステム環境の1つ以上のコンポーネントを示す簡略ブロック図である。
図17】いくつかの例示的な実施形態に従った、例示的な一実施形態を実現するために用いられ得る、例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0020】
詳細な説明
以下の説明では、説明の目的で、本発明のさまざまな実施形態を十分に理解できるようにするために多数の具体的な詳細が述べられる。しかしながら、当業者にとっては、これらの具体的な詳細のうちいくつかがなくても本発明の実施形態が実施され得ることが明らかであるだろう。他の例では、周知の構造およびデバイスをブロック図の形態で示す。
【0021】
新語は新しい単語または語句であり得る。新語は、新しく考案された単語または通常使用されない単語であり得る。新語は文化および技術の変化によって推進され得る。さらに、新語はソーシャルメディアおよび大衆文化によって推進され得る。新しい単語および名前ならびに単語および名前のスペルは絶えず作成されている。例示的な一実施形態は、新語と関連付けることのできる属性または特徴を判定することができる。
【0022】
本明細書中では、ユーザは企業などのデータのユーザである。しかしながら、ユーザは、新語分類が有益となるであろういずれの人またはエンティティをも含み得る。データが追加情報を含む場合、当該データはユーザにとってより有意義なものになり得る。データを充実させることにより、当該データはユーザにとってより有用になる。データは、たとえば、顧客データ(たとえば、ファーストネーム、ラストネーム、ID、社会保障番号など)および購入データ(たとえば、店舗名、購入したアイテムなど)を含み得る。
【0023】
例示的な実施形態はさまざまな状況で用いることができる。たとえば、どの言語に属するのかが不明確である所与の単語が存在する可能性もある。別の例として、或る企業の名前などの単語を想定した場合、その企業に関連付けられる業界が識別される。別の例として、例示的な実施形態は、たとえばファーストネームを考慮することで性別を予測するのに用いることができる。例示的な実施形態は、顧客のファーストネームに基づいて顧客の年齢または世代を予測するために用いることができる。これらは、追加の特徴が識別され得ることによりデータがユーザにとってより有益なものになるという例示的な状況に過ぎない。
【0024】
例示的な実施形態は、たとえば市場細分化に有用であり得る。市場細分化は、いくつかの種類の共有の特徴に基づいて顧客などの広範な消費者またはビジネスの市場を消費者の下位グループに分割することを含み得る。
【0025】
例示的な一実施形態は単語を分類するための解決策を提供する。たとえば、参照リストは、ファーストネームと、典型的にはファーストネームによって表わされる性別とからなるリストを含み得る。たとえば、名前「David」は、性別「男性」に関連付けることができる。関連付けられた性別は、履歴データに基づいた関連付けの頻度に基づき得る。
【0026】
しかしながら、新しい名前および新しいスペルの名前が作成される可能性がある。例示的な一実施形態は、これまで見たことのない名前についての性別を提供することができる。すなわち、名前または単語の辞書において識別されなかった名前についての性別である。たとえば、「Chauna」という名前は名前の辞書にない可能性がある。したがって、当該名前が男性に関連付けられるのかまたは女性に関連付けられるのかが不明である。「Chauna」という名前の性別を判定するために、バイナリ分類を実行することができる。すなわち、2つの分類グループを識別することができる。個人に関する予測を行なうことが倫理的な問題を伴う可能性がある使用事例の場合、この技術は、市場細分化の識別などのために母集団が集約される使用事例において有用であり得る。しかしながら、これは例示的な実施形態であり、所望の分類に基づいて追加の変更を行なうことができる。例示的な実施形態は2つの分類に限定されない。ユーザのニーズに基づいて追加の分類を行なうことができる。
【0027】
I.分析環境
図1は、いくつかの例示的な実施形態に従った分析環境100のブロック図を示す。
【0028】
データ分析環境100は、分析システム110、データエンリッチメントシステム120、データソース130、クライアント140、クライアントデータストア141、分散型ストレージシステム150、データターゲット160、および知識ソース170を含み得る。データエンリッチメントシステム120は、ユーザインターフェイス121、インジェストサーバ122、準備サーバ123、変換サーバ124、推薦サーバ125、感情分析サーバ126、パブリッシュサーバ127、知識サーバ128、エンリッチサーバ129、および新語分類サーバ200を含み得る。新語分類サーバ200は図2に関連付けてより詳細に説明される。
【0029】
分析環境100はクラウドベースの環境であり得る。分析システム110は、自己サービス可視化、強力なインラインデータ準備、事業報告、高度な分析、および事前の洞察を提供する自己学習分析を含む単一の統合型プラットフォームを提供する。分析システム110は、たとえば、Oracle Analytics Cloudを含み得る。
【0030】
クライアントまたはユーザ140は、分析システム110のデータエンリッチメントシステム120にデータエンリッチメント要求を提出し得る。クライアントは、クライアントに関連付けられたデータを格納するためのクライアントデータストア141を含み得る。データエンリッチメントシステム120は、データソース130の1つ以上(またはその部分、たとえば、特定のテーブル、データセットなど)を識別することができる。次いで、データエンリッチメントシステム120は、識別されたデータソース130に対してデータを処理するよう要求し得る。
【0031】
いくつかの実施形態では、データソースがサンプリングされ得るとともに、サンプリングされたデータがエンリッチ化のために分析され得ることで、大規模なデータセットがより管理し易くなり得る。識別されたデータは、受信され得るとともに、データエンリッチメントサービスにアクセス可能な分散型ストレージシステム(Hadoop(登録商標)分散型ストレージ(Hadoop Distributed Storage(HDFS))システムなど)に追加され得る。データは、いくつかの処理段階(本明細書ではパイプラインまたはセマンティックパイプラインとして説明される)によって意味論的に処理され得る。これらの処理段階は、準備サーバ123を介する準備段階、パブリッシュサーバ127を介するパブリッシュ段階、エンリッチサーバ129を介するエンリッチ段階を含み得る。
【0032】
いくつかの実施形態では、準備段階は、さまざまな処理下位段階を含み得る。これは、データソースフォーマットを自動的に検出することと、コンテンツ抽出および/または修復を実行することとを含み得る。データソースフォーマットが識別されると、データソースは、データエンリッチメントサービスによって処理可能なフォーマットに自動的に正規化され得る。いくつかの実施形態では、データソースは、準備されると、エンリッチサーバ129によって処理され得る。いくつかの実施形態では、インバウンドデータソースは、(たとえば、データエンリッチメントサービスに通信可能に結合されたHDFSシステムなどの)データエンリッチメントシステム120にアクセス可能な分散型ストレージシステム150にロードされ得る。
【0033】
分散型ストレージシステム150は、インジェストされたデータファイルのための一時的な格納空間を提供するとともに、中間処理ファイルを格納し得るとともに公開前の結果を一時的に格納し得る。いくつかの実施形態では、強化またはエンリッチ化された結果を分散型ストレージシステムに格納することもできる。いくつかの実施形態では、インジェストされたデータソースに関連付けられた、エンリッチ中に捕捉されたメタデータは、分散型ストレージシステム150に格納され得る。(たとえば、データソースの位置、結果、処理履歴、ユーザセッション、実行履歴、および構成などを示す)システムレベルメタデータは、分散型ストレージシステム内に、または、データエンリッチメントサービスにアクセス可能な別個のリポジトリ内に格納することができる。
【0034】
いくつかの実施形態では、データエンリッチメントシステム120は、感情分析サーバ126を介して感情分析を行ない得る。感情分析サーバ126は、本明細書に開示される技術を用いて、さまざまなデータソースからのデータの感情を分析するための機能を含む。技術は、畳み込みニューラルネットワーク(convolutional neural network:CNN)、語彙共起ネットワーク、および分析の精度を向上させるために感情分析を実行するためのバイグラム単語ベクトルの適用を含む。
【0035】
いくつかの実施形態では、パブリッシュサーバ127を介するパブリッシュ段階は、エンリッチ化中およびいずれかのデータソースエンリッチ化または修復中に捕捉されたデータソースメタデータを分析のために1つ以上の視覚化システムに提供する(たとえば、推薦されたデータの変換、エンリッチ化および/または他の変更をユーザに表示する)ことができる。パブリッシュサブシステムは、処理されたデータを1つ以上のデータターゲットに配信することができる。データターゲットは、処理されたデータを送信することができる場所に対応し得る。この場所は、たとえば、メモリ、コンピューティングシステム、データベース、またはサービスを提供するシステム内の位置であり得る。たとえば、データターゲットは、Oracle Storage Cloud Service(OSCS)、URL、第三者ストレージサービス、ウェブサービス、および、他のクラウドサービス、たとえば、Oracle Business Intelligence(BI)、サービスとしてのデータベース(Database as a Service)、およびサービスとしてのデータベーススキーマ(Database Schema as a Service)などを含み得る。いくつかの実施形態では、シンジケートエンジンは、結果を閲覧し、選択し、サブスクライブするためのAPIのセットを顧客に提供する。サブスクライブされて新しい結果が生成されると、結果データは、外部のウェブサービスエンドポイントへの直接フィードとして、または大容量ファイルダウンロードとして提供され得る。
【0036】
以下でさらに説明するように、データは、未知語または新語についての追加の関連情報を含むようにエンリッチ化することができる。新語分類サーバ200は、新語を分析して、新語についての属性または特徴を判定することができる。データは、データソース130から取得することができ、新語分類サーバ200は、新語についての属性および/または特徴を判定することができる。属性は、特定の単語または名前を有する人々または物に特徴的であるかまたは固有である品質または特徴を含み得る。
【0037】
例示的な一実施形態は、ユーザがすべてのデータを分析しなくてもすむように、機械学習を用いるデータエンリッチメントシステムを提供する。さらに、データエンリッチメントシステムは、ユーザの介入なしに判定を行なうことができる。したがって、データエンリッチメントシステムはユーザのために分析を実行することができる。
【0038】
本開示を通じて、いくつかの実施形態に従ったプロセスを示すさまざまなフローチャートおよび技術が開示される。個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得る。フローチャートは動作を連続したプロセスとして説明する可能性もあるが、動作の多くは並列にまたは同時に実行されてもよい。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれない追加のステップを含む可能性もある。プロセスは方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は、呼出し関数またはメイン関数への関数の戻りに対応し得る。
【0039】
図に示されるプロセスは、1つ以上の処理ユニット(たとえば、プロセッサコア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組合せで実現され得る。たとえば、データエンリッチメントシステム120は、図のいずれかを参照して説明されるプロセスのためのコンピュータシステムによって実現することができる。プロセスはいずれもサービスとして実現され得る。いくつかの実施形態では、図中の要素はいずれも、図に示されるよりも多いかまたは少ないサブシステムおよび/もしくはモジュールで実現されてもよく、2つ以上のサブシステムおよび/もしくはモジュールを組合わせてもよく、または、異なる構成もしくは配置サブシステムおよび/もしくはモジュールを有していてもよい。サブシステムおよびモジュールは、ソフトウェア(たとえば、プログラムコード、プロセッサによって実行可能な命令)、ファームウェア、ハードウェア、またはそれらの組合せで実現され得る。いくつかの実施形態では、ソフトウェアは、メモリ(たとえば、非一時的なコンピュータ可読媒体)、メモリデバイス、または他の何らかの物理メモリに格納され得るとともに、1つ以上の処理ユニット(たとえば、1つ以上のプロセッサ、1つ以上のプロセッサコア、1つ以上のGPUなど)によって実行され得る。
【0040】
図中の特定の一連の処理ステップは限定を意図するものではない。他の一連のステップも、代替的な実施形態に従って実行され得る。たとえば、代替的な実施形態は、上記で概説されるステップを異なる順序で実行してもよい。さらに、図に示される個々のステップは、当該個々のステップに適したさまざまな順序で実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて付加的なステップが追加または削除されてもよい。当業者であれば、多くの変形例、変更例および代替例を認識するだろう。
【0041】
いくつかの実施形態では、データは、1つ以上のデータ構造を用いて格納され得る。データ構造は、データがどのように、何に、および/またはどこに格納されるのかに応じて、さまざまな方法で編成され得る。特定のデータを含むデータ構造の各々が示されているが、データを格納するために実現されるデータ構造はより多くてもよく、またはより少なくてもよい。データ構造は他のデータ構造への参照を含み得る。データ構造は、連結リスト、アレイ、ハッシュテーブル、マップ、レコード、グラフ、または他の種類のデータ構造を含むがこれらに限定されない1つ以上の種類のデータ構造を用いて実現され得る。データ構造は階層的に実現されてもよい。データ構造の各々は、ユーザによる入力に基づいて宣言的に定義され得る。データ構造は、テンプレートに基づいて、たとえば、拡張マークアップ言語(Extended Markup Language:XML)などのマークアップ言語に基づいて定義されるテンプレートに基づいて、定義することができる。データ構造は、文書フォーマットとも称される1つ以上のフォーマットを有し得る。
【0042】
II.新語分類サーバ
図2は、いくつかの例示的な実施形態に従った、データエンリッチメントシステム120の新語分類サーバ200のブロック図を示す。
【0043】
新語分類サーバ200は、新語分類システム210、トリグラム分析システム211、畳み込みニューラルネットワーク(CNN)212、単語埋込みモデル213、データストア214、および、辞書215を含み得る。
【0044】
新語分類システム210は、未知語または新語のエンリッチ化を実行することができる。新語分類システム210は、トリグラム分析システム211、畳み込みニューラルネットワーク(CNN)212、単語埋込みモデル213、データストア214、および辞書215から受信した情報に基づいて、新語についての分類を提供することができる。
【0045】
トリグラム分析システム211は、トリグラムを用いて新語についての分析を実行することができる。トリグラムは、文字、音節、または単語などの3つの連続した書き言葉単位のグループである。例示的な実施形態では、トリグラムは3つの連続する文字である。トリグラム分析システムは所与の単語についてのトリグラムを生成する。生成されたトリグラムは重複する文字を含む。たとえば、各トリグラムの2つの文字が重複し得る。所与の単語に関して生成される各トリグラムは、前のトリグラムの右側にある1文字で始まる。たとえば、名前「BOB」の場合、トリグラムは「^BO」、「BOB」、および「OB$」を含むだろう。トリグラム分析は図5に関連付けてより詳細に説明される。
【0046】
畳み込みニューラルネットワーク(CNN)212は、ディープニューラルネットワークのクラスである。CNNは値に重み付けを加える。CNNは、たとえば、数分程度で名前のセットを分析するようにトレーニングされ得る。畳み込みニューラルネットワークは図13に関連付けてより詳細に説明される。
【0047】
単語埋込みモデル213は、単語埋込みベクトルを生成するために使用可能なモデルである。単語埋込みは、語彙からの単語または語句が実数のベクトルにマッピングされる自然言語処理(natural language processing:NLP)を含み得る。例示的な一実施形態において用いることができる例示的な単語埋込みモデルはWord2Vecである。Word2Vecは、あらゆる目的のために引用により本明細書に援用されている、Mikolovらによる「機械翻訳のための言語間の類似点の活用(Exploiting Similarities among Languages for Machine Translation)」(2013)(http://arxiv.org/pdf/1309.4168.pdf)に開示される技術を用いて実現され得る。
【0048】
単語埋込みモデルは、語彙のコーパスが供給されるアルゴリズムを含み得る。(たとえば、記事、新聞からの)大量のテキストが取得されて、単語埋込みモデルのアルゴリズムに供給される。単語埋込みモデルベクトルは、重み変数(たとえば、トリグラムに対する300のアスペクト)を含む。重み変数は分析されているトリグラムに次元を追加する。
【0049】
名前の場合、コーパス単語は国勢調査局からの名前を含み得る。単語埋込みモデルは、国勢調査局からの名前のトリグラムを用いてトレーニングすることができる。単語埋込みモデルは図7に関連付けてより詳細に説明される。
【0050】
データストア214は、新語分類が実行されるべきデータセットからのデータを格納するために用いられ得る。たとえば、クライアントは、データの列および行を含むデータのスプレッドシートを提供することができる。新語分類サーバ200によって分析されるべきデータはデータストア214に格納され得る。データストア214はまた、カウンタ値と、単語埋込みモデルベクトル値および分類値を含む行列とを格納し得る。
【0051】
辞書215は、ディープラーニング(深層学習)ライブラリ(たとえば、DeepLearning for JVM, Tiny Neural Network(TINN)など)を含み得る。ディープラーニングライブラリは、新語分類サーバ200のためのコードを生成するために使用可能な機能およびモジュールのライブラリを提供し得る。ディープラーニングライブラリは、新語分類サーバ200のための機械学習を促進するのに役立ち得る。
【0052】
III.新語分類を実行するための方法の概要
例示的な一実施形態は新語分類を対象とする。分類は、ロジスティック回帰を用いて実行することができる。ロジスティック回帰は、ロジスティック関数を用いて変数をモデリングする統計モデルを用いることを含み得る。記載される例では、バイナリ分類(たとえば、2つの分類)が用いられるが、例示的な実施形態はバイナリ分類に限定されない。たとえば、世代識別は、3つ以上の分類(たとえば、サイレント、ブーマー、X、ミレニアル、Zなど)を含み得る。分類は、起こり得るいくつかの属性または特徴に基づき得る。いくつかの分類は、ユーザによって入力されるパラメータに基づき得る。
【0053】
図3は、いくつかの例示的な実施形態に従った、新語を分類するための方法300のフローチャートを示す。図3は、図4に示される変数に関連付けて説明される。
【0054】
図4は、いくつかの例示的な実施形態に従った、新語を分類するための変数400の概要である。図4に示される変数は、入力変数または入力値であり得る。変数「w」は、新語または未知語または未知の名前である入力単語を表わし、変数「M」は、単語埋込みモデルベクトルおよび分類値がポピュレートされる行列を表わし、変数「k」は、いくつかの既知の最近傍の入力値を表わし、変数「S」は、既知の最も近い名前を含むセットを表わし、セットS内の名前の数は入力値k内の数に対応することとなり、変数wqは入力単語「w」についての識別されたトリグラムを表わし、変数「Q」はN個のキューのリストを表わしている。この場合、各キューは、入力単語wと既知の最近傍のセットSとの間の最長共通部分列(longest common subsequence:LCS)に従って初期化される。N個のキューのリスト内のNはキューの数を表わす。各キューは、式LCS(w,S[i])に従って初期化することができる。図4におけるNの値は、3つの最近傍が存在するので3となる。変数およびそれらの値は以下により詳細に説明される。
【0055】
ステップ310において、初期入力が受信される。初期入力は、新語として、または未知語もしくは未知の名前として知ることができる。新語は変数「w」によって表わされる。初期入力は、新語の属性を分類するように新語分類サーバをトレーニングするために、ユーザによって選択することができる。例示を目的として、1つの入力単語が受信される。しかしながら、例示的な一実施形態では、データの列(たとえば、スプレッドシート内のデータの列)内の複数の単語などの複数の入力を受信することができる。
【0056】
初期入力はデータエンリッチメントシステムのユーザインターフェイス上で受信され得る。未知語は、ユーザによって手動で入力可能である。たとえば、新語は、データエンリッチメントシステムのユーザインターフェイスを介して入力することができる。代替的には、未知語は、新語分類サーバによって自動的に入力され得る。新語分類サーバは、データエンリッチメントシステムによって生成される1つ以上の未知語を取得することができるか、または、データソースから1つ以上の未知語を取得することができる。
【0057】
図4に示す例では、入力単語wは「JOANNA」である。しかしながら、これは単に説明を目的としたものであり、分析のために如何なる名前または単語を用いることもできる。例示および説明の容易さを目的として、分類がどのように実行されるかを実証するために既知の名前が用いられる。例示的な実施形態はまた、既知の名前についての属性を識別するために用いられ得る。
【0058】
例示的な実施形態は、新語または未知語もしくは未知の名前について高精度の分類結果を提供することができる。例示的な実施形態は、これまで見たことのない名前または存在しない名前についての属性をユーザが名前のライブラリであると判定するのを支援するのに有益である。名前および単語のライブラリはデータストア214に格納することができる。名前について説明がなされているが、例示的な実施形態は如何なる単語にも適用されるものであって、名前に限定されない。さらに、単一の単語について説明がなされているが、例示的な実施形態は、単語のグループ、1つの表現または1つの句に適用され得る。
【0059】
ステップ320において、入力単語についてトリグラムが判定される。識別されたトリグラムは変数wqによって表わすことができる。トリグラムは、文字の順序が意味を有するので、文字が順序通りに識別される。トリグラムの順序は追加の意味を保持する。したがって、トリグラムは、入力単語に基づいた順序に並んだ3文字分に関するものである。トリグラムはトリグラム分析システム211によって判定することができる。
【0060】
図5は、いくつかの例示的な実施形態に従った、入力単語についてのトリグラム500を示す。図5に示されるように、6つのトリグラムが、ステップ310において入力された単語について識別される。トリグラムは、文字、音節、記号または単語などの3つの連続した書き言葉単位のグループである。図4に示す例では、トリグラムは文字および記号のグループである。入力単語「JOANNA」について識別される6つのトリグラムは、「^JO、JOA、OAN、ANN、NNA、NA$」を含む。識別されるトリグラムは、単語「JOANNA」において連続した順序で見出される。記号「^」は文字列の先頭を表わし、「$」は文字列の末尾を表わす。すなわち、「文字列の先頭」および「文字列の末尾」では、ゴースト文字(たとえば、^および$)が、単語のトリグラムへの分解に関与している。トリグラムの生成時、2つの文字が前のトリグラムから重複している。
【0061】
ステップ330において、当該トリグラムについて単語埋込みベクトル値が算出される。各トリグラムwqごとに、単語埋込みベクトル値がトレーニングされる。単語埋込みベクトル値は、Word2Vecなどの単語埋込みモデルを用いて算出され得る。単語埋込みモデルは、特に分析されている単語の種類に関してトレーニングされる。したがって、説明される例では、単語埋込みモデルは、具体的にはファーストネームに関して、より具体的には、ファーストネームのトリグラムに関してトレーニングされる。
【0062】
単語埋込みモデルは、いくつかの単語全体ではなく単語のトリグラムを分析するようにトレーニングされる。したがって、例示的な実施形態に従った単語埋込みモデルはトリグラムについてトレーニングされる。トリグラムが言語を形成しているので、トレーニングはトリグラムに対して実行される。単語内のトリグラムは、或る文内の単語が言語を形成するのと同様の態様で言語を形成する。文字列内の文字およびトリグラムの位置および順序は、入力単語の分類に影響を及ぼす可能性がある。たとえば、トリグラム分析に基づいて、女性名の方が男性名よりも母音で終わることが多いと判定することができる。
【0063】
説明される例では、単語の種類はファーストネームである。単語の他の種類またはカテゴリはラストネームまたはビジネスネームなどを含み得る。しかしながら、これらは単なる例に過ぎず、さまざまな種類の名前または単語を用いることができる。単語埋込みモデルは、特に、分析されている単語の種類に対してトレーニングされるものであるが、一般的な単語に対してトレーニングされる一般的な単語埋込みモデルを使用しない。具体的には、一般的な単語埋込みモデルを用いても、特に、分析されている単語の種類に対してトレーニングされた単語埋込みモデルを用いるほど正確な結果は得られないだろう。
【0064】
ステップ340において、算出されたベクトル値が行列Mに入力される。すなわち、行列Mは、トリグラムwqに関連付けられたベクトル値を含むようにポピュレートされる。行列Mへのベクトル値のポピュレートはステップ340で実行されるが、行列Mにおけるベクトル値のポピュレートは、畳み込みニューラルネットワークを介して行列を実行する前よりも後の時点で実行され得る。
【0065】
図6は、いくつかの例示的な実施形態に従った、トリグラム単語埋込みモデルベクトルを伴う行列M600を示す。
【0066】
図6に示すように、行列M600は、ステップ320で生成されたトリグラム610を含む。したがって、行列M600は、入力単語「JOANNA」に関して識別された6つのトリグラムについての6つの行を含む。行列M600についての行の数は、新語について判定されるトリグラムの数に基づいて変化するだろう。行列M600は単語埋込みモデルベクトル列620を含む。図示の例では、300列の単語埋込みモデルベクトルが用いられる。行列Mにはトリグラム単語埋込みモデルベクトル620がポピュレートされる。したがって、単語埋込みモデルは300の次元を有する。300は、過小適合でも過剰適合でもない単語埋込みモデルについての数である。300は、より多くのベクトルまたはより少ないベクトルがユーザのニーズに基づいて使用可能となる例において用いられる。
【0067】
行列M600はまた、分類列630を含む。この例では、2つの分類(たとえば、男性および女性)が判定されることとなる。分類列の数は、起こり得る分類の数またはユーザが所望する分類の数に依存するだろう。たとえば、世代識別では、起こり得る5つの異なる世代分類(たとえば、サイレント、ブーマー、X、ミレニアル、Zなど)に対応する5つの分類列が存在し得る。分類の種類は、分析されているデータに基づいて、またはユーザが所望する分類情報に基づいて、異なり得る。分類はまた、ラベルとしても知られ得る。
【0068】
図6に示されるように、第1の分類列(たとえば、男性)についての第1の列631と、第2の分類(たとえば、女性)についての第2の列632とが存在する。図6には2つの分類が示されているが、例示的な実施形態は2つの分類に限定されない。したがって、分類列の数は、ユーザが判定を所望する分類に基づいて異なり得る。例示的な一実施形態は、行列Mの分類列を埋めるための技術を提供する。
【0069】
行列Mが作成される箇所では、行が単語埋込みモデルベクトルであり、それらが現われる順序で次々に配置されて、行列の縦軸を時間次元の形式にする。単語埋込みモデルでモデリングされる「単語」は、感情分析技術で行われるように、単語ではなく(3文字の)トリグラムである。感情分析技術は、教師なしのニューラル言語モデルから得られた単語ベクトルに加えて1つの畳み込みの層でCNNをトレーニングすることを含み得る。畳み込みニューラルネットワークは、単語埋込みモデル(たとえば、Word2Vec)の上に構築することができる。単語埋込みモデルは、入力トレーニングデータ(たとえば、ファーストネームの辞書)を用いてトレーニングされる。感情分析は、あらゆる目的のために引用により本明細書に援用されている、Kimによる「文章分類のための畳み込みニューラルネットワーク(Convolutional Neural Networks for Sentence Classification)」(2014年)(https://arxiv.org/pdf/1408.5882.pdf)に開示された技術を用いて実現されてもよい。
【0070】
単語埋込みモデルベクトル620を算出するためのプロセスが図7に関連付けて以下でより詳細に説明される。
【0071】
ステップ350において、入力単語に関してk個の最も近い名前またはk個の最近傍が判定される。k個の最近傍または最も近い名前は類似性メトリックを用いて識別可能である。類似性メトリックは、JaccardまたはDiceなどの意味論的な類似性メトリックを含み得る。k個の最も近い名前は、入力単語と類似するトリグラムを含む名前である。すなわち、k個の最も近い名前は、入力名「JOANNA」と類似するトリグラムを有するファーストネームである。
【0072】
k個の最近傍を識別するために、ファジー文字列一致を実行することができる。これまで見たことのない文字列を想定する場合、類似性メトリックにより、辞書から最も近い一致を見出すことができ、次いで、k個の最近傍の形式でk個の最近傍の分類に基づいて、これまで見たことのない文字列の分類についての予測を行なうことができる。分類が予測されている単語(たとえば、これまで見たことのないファーストネーム)が、たとえば、StatSimのk個の最近傍に通されて、上位K(たとえば、3個)の一致が用いられる。上位K個の一致はセットS内にある。
【0073】
k個の最も近い名前を識別することができる。入力パラメータkは最も近い名前の数を表わす。判定されたk個の最も近い名前はセットSにおいて識別される。説明を簡潔にするために、3つの最も近い名前が識別される。したがって、kの値は3である。しかしながら、kの値は、ユーザが所望する結果に基づいて変更することができる。たとえば、代替的な実施形態では、kの値は10であり得る。
【0074】
図6の要素640は、変数kによって識別されるk個の最も近い名前の数が3であることを示す。したがって、3個の最も近い名前が入力単語について識別されている。
【0075】
図8は、いくつかの例示的な実施形態に従った、入力単語についての最も近い名前のセットS800を示す。入力単語「JOANNA」についての最近傍のセットSは「JOANNE」、「JOHN」、および「ANNA」の3つの最も近い名前を含む。
【0076】
ステップ360において、最長共通部分列が判定される。具体的には、入力単語からのトリグラムおよびk個の最近傍からのトリグラム(「JOANNE」、「JOHN」および「ANNA」)に関して最長共通部分列が識別される。
【0077】
図9は、いくつかの例示的な実施形態に従った、N個のキューのリストを表わすテーブルQ900を示す。各キューは、入力単語wとk個の最近傍のセットとの間の最長共通部分列(LCS)に従って初期化される。各キューは、式LCS(w,S[i])に従って初期化することができる。ステップ350で識別されたk個の最も近い名前から、最長共通部分列が識別される。
【0078】
テーブルQ900は、入力単語のトリグラムwqに共通するk個の最近傍のトリグラムを表わす列940と、k個の最近傍を含む列950と、列950内のそれぞれのk個の最近傍についての分類(たとえば、性別)を識別する列960とを含む。図示の例では、3つの最近傍が存在する(k=3)ので、k個の最近傍の各々に対して3つの行が存在する。しかしながら、これは単に説明を目的としたものに過ぎず、k個の最近傍は3に限定されない。たとえば、10個の最近傍が用いられてもよい。テーブルQ900は、k個の最近傍の数に応じてより大きくなるだろう。
【0079】
行910は名前「JOANNE」に対応し、行920は名前「JOHN」に対応し、行930はk個の最近傍の名前「ANNA」に対応する。行910は入力単語「JOANNE」に対応する。「JOANNE」に対応する行910はトリグラム911(たとえば、^JO、JOA、OAN、ANN)を含む。名前「JOHN」に対応する行920はトリグラム912(たとえば、^JO)を含む。名前「ANNA」に対応する行930はトリグラム913(たとえば、ANN、NNA、NA$)を含む。
【0080】
トリグラム911、912および913は、入力単語w「JOANNA」についてのトリグラムwqにおけるトリグラムと一致する。入力単語w「JOANNA」についてのトリグラムwqと一致しないk個の最近傍についてのトリグラム(JOANNE、ANNA、JOHN)はテーブルQ900に含まれない。たとえば、名前「JOHN」はトリグラム「OHN」を含む。トリグラム「OHN」は、入力単語w「JOANNA」についてのトリグラムwq内のトリグラムと一致しないので、トリグラム「OHN」はk個の最近傍のうちの1つ「JOHN」についてのトリグラム912に含まれない。したがって、テーブルQ900には、k個の最近傍と入力名とに共通するトリグラムが配置される。
【0081】
k個の最近傍と入力名とに共通するトリグラムは最長共通部分列(LCS)を用いて判定される。2つの入力文字列(たとえば、入力名と最近傍のうちの1つと)があると想定する場合、LCSアルゴリズムを用いて、トリグラムの2つのリスト間で最長共通部分列を見出すことができる。LCSアルゴリズムは、あらゆる目的のために引用により本明細書に援用されている、Wagnerによる「文字列間の補正の問題(The String-to-String Correction Problem)」(1974)(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.367.5281&rep=rep1&type=pdf)に開示される技術を用いて実現され得る。
【0082】
ステップ370において、分類値が算出される。分類値の算出は、図10および図11に関連付けてより詳細に説明される。
【0083】
図12は、いくつかの例示的な実施形態に従った、第1の分類1231および第2の分類1232についての分類値を含む行列M1200を示す。図12は、分類値が判定されて行列にポピュレートされた後の行列Mを示す。
【0084】
図12に示すように、行列Mは、入力単語wについて識別された各トリグラムwqごとに6つの行1210を含む。行列内の各行はトリグラムを表わしており、各トリグラムは、辞書からのN個のStatSim一致単語のうちの1つ以上における対応するトリグラムと一致している。行列Mは、300列のベクトルについての単語埋込みベクトル値1220を含む。
【0085】
行列Mは分類列1230を含む。分類列は第1の分類列1231と第2の分類列1232とを含む。2つの分類列が説明されているが、分類またはラベルの数は、ユーザによって識別される分類の種類に基づいて異なり得る。分類の数は、たとえば、ユーザが実行したい販売営業活動の種類、ユーザがターゲットにしたい客層、またはユーザのビジネス戦略に応じて異なり得る。
【0086】
分類値は、その特定のトリグラムを含む他の類似する名前が何個あるかを表わしている。他の類似する名前は既知の名前の辞書から得られる。説明される例では、名前が分析されているので、その辞書は既知の名前のものである。しかしながら、さまざまな種類の入力単語(たとえば、企業名)が分析されている場合、そのような名前の辞書がトリグラム比較のために用いられることとなる。
【0087】
図12に示すように、第1の分類列1131は、トリグラム「^JO、JOA、OAN、ANN、NNA、NA$」のそれぞれについての値「0.3、0.1、0.0、0.0、0.0、0.0」を含む。第2の分類列1232は、トリグラム「^JO、JOA、OAN、ANN、NNA、NA$」のそれぞれについての値「0.1、0.4、0.3、0.5、0.3、0.3」を含む。
【0088】
分類結果に基づくと、第2の分類列1132は結果として第1の分類列1131よりも高い値をもたらす。したがって、入力単語「JOANNA」は、第2の分類(たとえば、女性)に分類される可能性が高い。しかしながら、行列が畳み込みニューラルネットワーク(CNN)を介して実行されるため、精度の高い結果が得られる。
【0089】
ステップ380において、行列Mは畳み込みニューラルネットワークを介して実行される。行列Mに単語埋込みモデルベクトル値および分類値がポピュレートされた後、行列は畳み込みニューラルネットワークを通じて実行されることとなる。畳み込みニューラルネットワークは、入力単語が第1の分類に属する可能性が高いかまたは第2の分類に属する可能性が高いかを識別することができる。
【0090】
例示的な実施形態におけるCNNは、単語埋込みモデルからのベクトルと、トリグラム分析を用いて得られた分類値とを含む行列を分析する。CNN内の緻密(Dense)層とグローバルマックスプーリング(Global Max-Pooling)層との間のアクティベーションが正規化線形ユニット(Rectified Linear Unit:ReLU)であるので、当該ReLUの重みの初期化をCNNのために用いることができる。畳み込みニューラルネットワークは、図13に関連付けて以下でより詳細に説明される。
【0091】
IV.単語埋込みモデル
図7は、いくつかの例示的な実施形態に従った、単語についてのベクトルを算出するための一般的なプロセス700を示す。しかしながら、例示的な実施形態はトリグラムについてのベクトルを算出するだろう。
【0092】
ステップ710において、単語が入力される。図7に示す例では、単語の入力セットは「Bridgestone」、「Firestone」、および「Michelin」を含み得る。しかしながら、例示的な一実施形態では、単語の入力セットは新語について識別されたトリグラムを含み得る。
【0093】
ステップ720において、入力データセットが分析される。データは、入力データセットを分析するために、Word2Vecなどの機械学習技術を用いることによって分析することができる。Word2Vecは、あらゆる目的のために引用により本明細書に援用されている、Mikolovらによる「機械翻訳のための言語の類似性の活用(Exploiting Similarities among Languages for Machine Translation)」(2013)(http://arxiv.org/pdf/1309.4168.pdf)に開示される技術を用いて実現され得る。Word2Vecは、テキスト入力(たとえば、大規模なデータソースからのテキストコーパス)を受信し得るとともに、各入力単語のデータ構造(たとえば、ベクトル表現)を単語のセットとして生成し得る。データ構造は、本明細書では「モデル」または「Word2Vecモデル」と称されることもある。Word2Vecについて説明されているが、他の単語埋込みモデルを用いてデータ分析を実行することもできる。
【0094】
ステップ730において、単語のセット内の各単語が複数の属性に関連付けられる。属性は、特徴、ベクトル、成分、および特徴ベクトルとも称され得る。たとえば、データ構造は、単語のセット内の各単語に関連付けられた300個の特徴を含み得る。特徴は、たとえば、単語を記述する性別、国籍などを含み得る。特徴の各々は、感情との関連性に基づいてトレーニングされた機械学習(たとえば、教師あり機械学習)のための技術に基づいて判定され得る。
【0095】
大規模なテキストコーパス(たとえば、ニュースアグリゲータ、またはGoogle(登録商標)ニュースコーパスなどの他のデータソース)を用いて構築されるWord2Vecモデルを用いて、対応する数値ベクトル値(たとえば、浮動小数点)が各入力単語ごとに識別され得る。これらのベクトルが分析されると、ベクトルがベクトル空間内で(ユークリッド的に)「近接して」いると判定され得る。ステップ740に示すように、3つの入力単語は、ベクトル空間内で互いに密接にクラスタリングされる。
【0096】
いくつかの実施形態では、Word2Vecモデルは、第三者プロバイダによって生成され得る。Word2Vecモデルは、プロバイダのアプリケーションプログラミングインターフェイス(application programming interface:API)を介して取得され得る。APIは、モデル内の各単語ごとの成分の数などの、単語埋込みモデルに関する情報を含むWord2Vecモデルを取得するための機能を提供し得る。
【0097】
ステップ730は、トレーニングデータに基づいてデータ構造(たとえば、ベクトルデータ構造)を2次元行列として生成するステップを含み得る。行列における各軸(x軸およびy軸)は座標または次元を有する。トレーニングデータの場合、1つ以上のアプリケーション(たとえば、Lambdaアプリケーション)を利用して、最長テキスト文字列の長さに基づいてベクトルの高さを計算し得る。たとえば、データ構造は各メッセージごとに生成される。その高さは単一のレビューにおける単語の最大数である。2次元行列を構築する際に、各行が単語ベクトルとして規定されるとともに、各列が特徴ベクトルとして規定され得る。データ構造は、畳み込みニューラルネットワーク(CNN)を実現するためのAPIへの入力として作成される。2次元行列は、y軸が単一のメッセージ中の各単語ごとにエントリを有するとともに、x軸がベースライン感情分析アプローチについてのものとなるように作成される。x軸上の各々のエントリまたは次元は、Word2Vecモデルにおける特徴のうちの或る特徴に対応する。x軸上の単語に関して複数の特徴をリスト化することができる。各単語ごとの特徴の各々は、トレーニングデータに基づいて生成されるWord2Vecモデルから取得され得る。
【0098】
図6の単語埋込みモデルベクトル列620は生成されたデータ構造(たとえば、ベクトルデータ構造)を例示している。
【0099】
V.分類値の算出
A.分類値の算出方法の概要
図10は、いくつかの例示的な実施形態に従った、分類値を算出するための方法1000のフローチャートを示す。図10において実行されるステップは図3のステップ370に対応し得る。
【0100】
ステップ1010において、入力単語からのトリグラムが識別される。識別されるトリグラムwqは図3のステップ320において識別されるトリグラムであり得る。
【0101】
ステップ1020において、入力単語についてのトリグラムに共通するk個の最近傍についてのトリグラムが識別される。図9に示すように、列940は、入力単語のトリグラムwqに共通するk個の最近傍のトリグラムを表わす。
【0102】
ステップ1030では、入力単語からのトリグラムが、k個の最近傍の各々についてのトリグラムと比較される。入力単語からのトリグラム間で一致する頻度はk個の最近傍の各々についてのトリグラムと比較される。一致する頻度はカウンタを用いて判定することができる。
【0103】
ステップ1040において、分類値は、入力単語内のトリグラムとk個の最近傍からのトリグラムとの間で一致する頻度に基づいて算出される。
【0104】
ステップ1050において、未知語のトリグラムについての分類値は、算出された分類値でポピュレートされる。分類値は行列にポピュレートすることができる。
【0105】
トリグラムの分類値が判定されて行列にポピュレートされた後、当該行列は畳み込みニューラルネットワークを通じて実行され得る。
【0106】
B.分類値を算出する詳細な方法
図11は、いくつかの例示的な実施形態に従った、分類値を算出するための方法1100の詳細なフローチャートを示す。図11において実行されるステップは図3のステップ370に対応し得る。図11図10において実行されるステップをより詳細に説明する。
【0107】
図11に示す方法は以下の式で表わすことができる。
行ごとに行列Mを通るループ
Qを通るループ
wq[0]==Q[i][0]であれば、
pop Q[i]
S[i]に関連付けられたC[j]をインクリメント
行列Mの追加の列にλ・C[j]/kをポピュレート
変数Cはカウンタを表わす。カウンタCは、起こり得る各分類ごとに開始することができる。カウンタは、一時的に格納される一時的なカウンタであり得る。カウンタは、たとえば、データストア214に格納することができる。説明される例では、判定されるべき2つの分類(たとえば、男性および女性)があるため、2つのカウンタを開始することができる。変数λは追加の特徴列をスケーリングするために用いられる。例示を目的として、変数λは値0.001によって表わされる。変数λの値は、より容易に単語埋込みモデルベクトル値に類似するようにスケーリングまたは作成される必要があるデータの値に基づいている。変数Qは、図9に示すようにN個のキューのリストを表わす。
【0108】
変数Q[i]はk個の近傍のうちの1つを表わす。k個の近傍は、k個の最近傍(Nearest Neighbor:KNN)アルゴリズムを用いて取得され得る。したがって、Q[i]は、トリグラムwqに共通するk個の近傍のうちの1つについてのトリグラムを表わす。C[j]における変数jは分類を表わしている。したがって、変数C[j]は分類のためのカウンタを表わしている。
【0109】
説明される例では、入力単語wについてのトリグラムwqは、「^JO、JOA、OAN、ANN、NNA、NA$」である。k個の近傍についてのQにおけるトリグラムは、「^JO、JOA、OAN、ANN」、「^JO」および「ANN、NNA、NA$」である。最も近い名前Sのセットは「JOANNE」、「JOHN」および「ANNA」を含む。この例におけるQは、3個の最近傍についてのN=3のキューのリストを含む。
【0110】
ステップ1110において、カウンタCは起こり得る各分類ごとに開始される。カウンタはC[j]によって表わすことができる。このjは分類(たとえば、第1、第2、第3など)を表わす。説明される例では、2つの分類(たとえば、男性および女性)があるため、2つのカウンタが開始される。第1のカウンタC[0]は第1の分類(たとえば、男性)に対応し得るとともに、第2のカウンタC[1]は第2の分類(たとえば、女性)に対応し得る。カウンタは、新語分類サーバのデータストアに格納することができる。カウンタは、各反復の後、wqのトリグラムが分析された後に除去することができ、新しいカウンタを開始することができる。
【0111】
ステップ1120において、入力単語wについての行列M内のトリグラム(たとえば、^JO)が分析のために識別または選択される。図11の方法は、入力単語についての各トリグラムwqごとに繰り返され続けるだろう。分析のための行列M内のトリグラムは、一度に1つずつ順々にループされる。ここで、wq「^JO、JOA、OAN、ANN、NNA、NA$」に6つのトリグラムがあるので、分析すべき最初のトリグラムは「^JO」であり、分析すべき最後のトリグラムは「NA$」である。したがって、6つのトリグラムwqを含む例の場合、ステップ1120~1170が各トリグラムごとに6回繰り返され得る。
【0112】
ステップ1130では、ステップ1120で識別されたトリグラムに一致するk個の最近傍(たとえば、JOANNE、JOHN、ANNA)についてのN個のキューQのリスト内のトリグラム(たとえば、^JO)が判定される。この例では、トリグラム^JOは2回発生する。入力単語の第1のトリグラムに一致するk個の最も近い名前のトリグラムが判定される。k個の最近傍「JOANNE」に対して1回、k個の最近傍「JOHN」に対して1回とされる。
【0113】
ステップ1140において、入力単語からのトリグラムに一致する特定の最近傍についての一致するトリグラムの分類が判定される。一致するトリグラム(たとえば、^JO)の分類は、たとえば、それぞれの最近傍についての分類を示す列960から識別される。したがって、名前「JOANNE」の分類(たとえば女性)が識別されるとともに、名前「JOHN」の分類(たとえば男性)が識別される。なぜなら、「JOANNE」および「JOHN」がともにトリグラム「^JO」を含んでいるからである。
【0114】
ステップ1150において、分類に関連付けられたカウンタがインクリメントされる。k個の最も近い名前についての1つ以上のトリグラムの判定済み分類に対応する複数の分類の各々のためのカウンタがインクリメントされる。特定の最近傍「JOANNE」に関する分類が「女性」であるので、第2の分類に関する第2のカウンタC[2]がインクリメントされる。特定の最近傍「JOHN」に関する分類が「男性」であるので、第1の分類に関する第1のカウンタC[1]もインクリメントされる。
【0115】
ステップ1160において、N個のキューQのリストを更新することができる。入力単語トリグラム(たとえば、^JO)に一致するトリグラム(たとえば、^JO)は、N個のキューQ(たとえば、名前「JOANNE」および名前「JOHN」について)のリストから除去することができる。
【0116】
ステップ1170において、識別されたトリグラムwqについての行列Mに分類値をポピュレートすることができる。したがって、図12の分類列1230内の行1233に示される分類値は、ステップ1170の後に行列に埋められるだろう。
【0117】
例示的な実施形態では、分類値は、各トリグラム(たとえば、^JO、JOA、OAN、ANN、NNA、NA$)が分類された後にポピュレートされる。しかしながら、行列Mにおける分類値のポピュレートは、入力単語についてのトリグラムwqがすべて分析された後に実行され得る。
【0118】
分類列は、式λ・C[j]/kに基づいてポピュレートすることができる。kは最近傍の数または量である。変数λはスケーリングのために用いられる。スケーリングは、分類値が列1220内の単語埋込みモデル値と同じ桁になるように実行される。上述の例における単語埋込み値は小数点の前に3つの先行ゼロを有する。分類値がスケーリングされなかった場合、分類値内の余分な列がCNNを押さえ込んでしまう可能性がある。
【0119】
1180において、分析されるべき入力単語についての追加のトリグラムwqが存在するかどうかが判定される。ステップ1020、1030、1040、1050、1060および1070は、入力単語についてのすべてのトリグラムwqがk個の最近傍についてのトリグラムと比較されるまで繰り返される。すなわち、入力単語w「JOANNA」についてのすべてのトリグラムwqがk個の最近傍についてのN個のキューQのリスト内のすべてのトリグラムと比較されてしまうまで、ステップ1020、1030、1040、1050、1060および1070が繰り返される。
【0120】
分析されるべき入力単語wについての追加のトリグラムwqが存在する場合、wq内の次のトリグラムに対してステップ1020が繰り返される。たとえば、wqにおいて分析されるべき次のトリグラムは「JOA」である。
【0121】
ステップ1180において、分析されるべき入力単語wについての追加のトリグラムwqが存在しないと判定された場合、プロセスが終了する。
【0122】
C.分類値がポピュレートされた行列
図12は、いくつかの例示的な実施形態に従った、分類値を含むように完成された行列Mを示す。図12に示す行列Mは、図10および図11に示す方法を実行した後のポピュレートされた行列である。
【0123】
図12に示すように、第1の分類列1231は、トリグラム「^JO、JOA、OAN、ANN、NNA、NA$」のそれぞれについての値「0.3、0.1、0.0、0.0、0.0、0.0」を含む。第2の分類列1232は、トリグラム「^JO、JOA、OAN、ANN、NNA、NA$」のそれぞれについての値「0.1、0.4、0.3、0.5、0.3、0.3」を含む。
【0124】
分類結果に基づいて、第2の分類列1232は結果として、第1の分類列1231よりも高い値をもたらす。したがって、入力単語「JOANNA」は第2の分類(たとえば、女性)に分類される可能性が高い。
【0125】
しかしながら、分類結果の正確さを保証するために、行列MはCNNを介して実行されるだろう。CNNからの出力は長さnのsoftmaxベクトルであり、ここでnは起こり得る分類の数である。softmax関数は、K個の実数のベクトルzを入力として取ることができるとともに当該入力を入力された数の指数に比例するK個の確率からなる確率分布に正規化することができる関数である。softmaxベクトルにおいて、各成分は、そのクラスにあるサンプルの確率(0.0~1.0)を表わす。しばしば、最も高い確率を有するクラスが予測として選択され、他の確率は無視される。
【0126】
VI.畳み込みニューラルネットワーク
図13は、いくつかの例示的な実施形態に従った畳み込みニューラルネットワーク1300を示す。
【0127】
図13は、標準的な畳み込みニューラルネットワークの一例を示す。文章をモデリングするための畳み込みニューラルネットワーク(CNN)は、あらゆる目的のために引用により援用されている、Kalchbrennerによる「文章をモデリングするための畳み込みニューラルネットワーク(A Convolutional Neural Network for Modelling Sentences)」(2014年)(http://www.aclweb.org/anthology/P14-1062)における技術を用いることができる。CNNは、1次元畳み込み層を用いて実現されてもよい。CNNは、第三者(たとえば、GitHub)によって提供されるパッケージまたはライブラリを用いて実現されてもよい。パッケージは、Java(登録商標)およびScala(登録商標)のためにPython(登録商標)および/またはDeepLearing4Jを用いて実現されるKerasであってもよい。さらに、CNNは、たとえば、3層または7層のCNNであってもよい。これらは単なる例に過ぎず、さまざまなCNNを用いることができる。さらに、CNNはユーザが独自に作成してもよい。
【0128】
少なくとも1つの実施形態では、各メッセージごとのベクトルを参照するアレイは、感情分析を判定するためにCNN技術とともに用いられ得る。技術の例は、あらゆる目的のために引用により援用されている「http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/」および「https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py/」において見出される技術に基づいて実現され得る。CNN技術を実現するために、変数フィルタ長=3、CNNDenseDropout=0.2、dense_dims=20、batch_size=10、nb_epoch=5、validation_split=0.1についての値が設定され得る。CNNは、上記で生成されたデータ構造を用いて以下の関数呼出しを実行することによって実現され得る。CNNは1次元構造としての単語についてのデータ構造に基づいて実現され得る。
【0129】
関数呼出しに基づいてCNNを実行することにより、初期感情分析を実行するためにCNNを用いてテストするためのトレーニングデータが実行される。
【0130】
VII.ユーザインターフェイス
図14は、いくつかの例示的な実施形態に従った、新語分類を実行するためのユーザインターフェイス1400を示す。
【0131】
ユーザインターフェイス1400は、図1に示される分析システム110のデータエンリッチメントシステム120のディスプレイ上に表示され得る。ユーザインターフェイス1400は、データセットからのデータの複数の列1420を含む。データセットは、たとえば、顧客情報、またはスプレッドシートにおいて利用可能な他の種類のデータを含み得る。図14に示す例では、顧客情報は都市名、州、および郵便番号を含む。しかしながら、これは単なる一例に過ぎず、データセットはさまざまな種類の情報を含み得る。
【0132】
ユーザは、新語分類が実行されるべきデータセットを入力することができる。たとえば、ユーザは、データエンリッチメントシステムの対話型ユーザインターフェイス上でデータセットを選択することができる。ユーザインターフェイスは、複数のデータソースオプションを表示することができる。これら複数のデータソースオプションからはデータセットを得ることができる。ユーザは、エンリッチ化、分析、または視覚化したいデータセットをアップロードすることができる。データセットはスプレッドシートなどの列の形式であり得る。
【0133】
ユーザインターフェイス1400は推薦パネル1410を含む。推薦パネルは、データセットに適用するべきアクションの1つ以上の推薦をユーザに提供する。たとえば、推薦は、データの列についての新語を判定することによってデータをエンリッチ化することを含み得る。推薦は、データセット内のデータの1つ以上の列について新語分類を実行することによってデータをエンリッチ化することを含み得る。たとえば、ユーザは、新語分類を実行することによって、データセットの都市列をエンリッチ化するために推薦1430を選択することができる。
【0134】
データエンリッチメントシステムは、データのエンリッチ化などのデータセットに対する処理を実行するための推薦を提供するように構成される。すなわち、データエンリッチメントシステムは、データセットを分析して、データセットに関する推薦アクションをユーザに提供することでデータをエンリッチ化することができる。データエンリッチメントシステムは、提供されたデータセットに基づいて、どのエンリッチメントがデータに有益であり得るかを自動的に判定することができる。
【0135】
その一部がパネル1410に示されているデータセットを想定する場合、新語分類の実行を選択することによって、データの列をエンリッチ化するようにとの推薦をユーザに提することができる(要素1430)。図14は、ユーザが新語分類の実行を選択することができるユーザインターフェイスの簡略図を示す。追加のディスプレイが提供されてもよく、または、ユーザは、新語分類が実行される前に追加の情報を提供するように促されてもよい。
【0136】
したがって、例示的な一実施形態では、データセットが新語分類を実行することができるデータを含む場合、データエンリッチメントシステムはユーザに新語分類を実行することを提案し得る。ユーザが新語分類の実行を選択する(たとえば、要素1430を選択する)と、選択されたデータの列に対して新語分類が実現され得る。
【0137】
例示的な実施形態は、精度が改善されたシステム、方法、およびコンピュータ可読媒体を提供する。したがって、例示的な実施形態は新語の分類の判定を改善させる。
【0138】
例示的な実施形態では非常に正確な分類が提供されるので、データエンリッチメントシステムのユーザに提供されるデータは、より完全なものになり得る。これにより、ユーザにとってより有用なデータとなる。
【0139】
例示的な一実施形態は、トリグラム、トリグラムについての単語埋込みモデル(たとえば、Word2Vec)、k個の最も近い名前(たとえば、StatSim)、カウンタでの追加の分類(たとえば、男性/女性)、および畳み込みニューラルネットワーク(CNN)の組合わせを含み得る。
【0140】
トリグラムにより、新語に関連付けられた特徴を正確に判定する際に得られる結果が改善されたものとなる。意味は、トリグラム自体の値だけではなく、トリグラムの順序から推定される。
【0141】
さらに、例示的な実施形態は、トリグラムに関する単語埋込みモデルCNNの組み合わせを用いる。追加の列が追加の特徴として行列の右側に追加される。
【0142】
VIII.ハードウェア概要
図15は、ある実施形態を実現するための分散型システム1500の簡略図を示す。図示される実施形態において、分散型システム1500は、1つ以上の通信ネットワーク1510を介してサーバ1512に結合された1つ以上のクライアントコンピューティングデバイス1502、1504、1506、および1508を含む。クライアントコンピューティングデバイス1502、1504、1506、および1508は1つ以上のアプリケーションを実行するように構成され得る。
【0143】
さまざまな実施形態において、サーバ1512は、本開示に記載される正規表現の自動化された生成を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、特定の実施形態では、サーバ1512は、クライアントデバイスから送信されたユーザ入力データを受信し得る。この場合、ユーザ入力データは、クライアントデバイスで表示されたユーザインターフェイスを介して、クライアントデバイスによって受信される。次いで、サーバ1512は、ユーザ入力データを、ユーザインターフェイスを介して表示するためにクライアントデバイスに送信される正規表現に変換し得る。
【0144】
特定の実施形態では、サーバ1512はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの実施形態では、これらのサービスは、クライアントコンピューティングデバイス1502、1504、1506、および/または1508のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデルのようなウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス1502、1504、1506、および/または1508を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ1512とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0145】
図15に示される構成では、サーバ1512は、サーバ1512によって実行される機能を実現する1つ以上のコンポーネント1518、1520および1522を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム1500とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図15に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0146】
ユーザは、クライアントコンピューティングデバイス1502、1504、1506、および/または1508を用いて、本開示の教示に従って正規表現を生成し得る1つ以上のアプリケーションを実行してもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力し得る。図15は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0147】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows(登録商標)Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むさまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、Google Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であり得るとともに、各種通信プロトコルを使用し得る。
【0148】
ネットワーク1510は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク1510は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/もしくは任意の他の無線プロトコル)、ならびに/または、これらおよび/もしくは他のネットワークの任意の組み合わせを含み得る。
【0149】
サーバ1512は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ1512は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。各種実施形態において、サーバ1512を、上記開示に記載される機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。
【0150】
サーバ1512内のコンピューティングシステムは、上記したもののうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているいずれかのサーバオペレーティングシステムを実行し得る。また、サーバ1512は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0151】
いくつかの実現例において、サーバ1512は、クライアントコンピューティングデバイス1502、1504、1506、および1508のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るがそれらに限定されない。サーバ1512は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1502、1504、1506、および1508の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0152】
分散型システム1500はまた、1つ以上のデータリポジトリ1514、1516を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納し得る。たとえば、データリポジトリ1514、1516のうちの1つ以上を用いて、システムにより生成された正規表現と一致する新たなデータの列のような情報を格納してもよい。データリポジトリ1514、1516は、さまざまな場所に存在し得る。たとえば、サーバ1512が使用するデータリポジトリは、サーバ1512のローカル位置にあってもよく、またはサーバ1512から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ1512と通信する。データリポジトリ1514、1516は異なる種類であってもよい。特定の実施形態において、サーバ1512が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
【0153】
特定の実施形態では、データリポジトリ1514、1516のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【0154】
特定の実施形態において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図16は、特定の例に従った、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境1600の簡略ブロック図である。図16に示される例において、クラウドインフラストラクチャシステム1602は、ユーザが1つ以上のクライアントコンピューティングデバイス1604、1606、および1608を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1602は、サーバ1512に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム1602内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。
【0155】
ネットワーク1610は、クライアント1604、1606、および1608と、クラウドインフラストラクチャシステム1602との間におけるデータの通信および交換を容易にし得る。ネットワーク1610は1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク1610は、通信を容易にするために、有線および/または無線プロトコルを含む1つ以上の通信プロトコルをサポートし得る。
【0156】
図16に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム1602が、図16に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成もしくは配置のコンポーネントを有していてもよいことが理解されるはずである。たとえば、図16は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
【0157】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム1602)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0158】
特定の実施形態において、クラウドインフラストラクチャシステム1602は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1602は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースの一式を含み得る。
【0159】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム1602がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0160】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0161】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0162】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム1602が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム1602は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。クラウドインフラストラクチャシステム1602を、1つ以上のクラウドサービスを提供するように構成してもよい。
【0163】
クラウドインフラストラクチャシステム1602は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム1602は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。プライベートクラウドモデルでは、クラウドインフラストラクチャシステム1602がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム1602および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0164】
クライアントコンピューティングデバイス1604、1606、および1608は、異なる種類であってもよく(たとえば図15に示されるデバイス1502、1504、1506、および1508)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム1602が提供するサービスを要求するなど、クラウドインフラストラクチャシステム1602とのやり取りを行い得る。
【0165】
いくつかの実施形態において、クラウドインフラストラクチャシステム1602が、管理関連サービスを提供するために実行する処理はビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、処理することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、自動的に正規表現を決定するために、ビッグデータ解析がクラウドインフラストラクチャシステム1602によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0166】
図16の例に示されるように、クラウドインフラストラクチャシステム1602は、クラウドインフラストラクチャシステム1602が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース1630を含み得る。インフラストラクチャリソース1630は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。
【0167】
特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム1602が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の実施形態において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【0168】
クラウドインフラストラクチャシステム1602自体が、クラウドインフラストラクチャシステム1602の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム1602によるサービスのプロビジョニングを容易にするサービス1632を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0169】
クラウドインフラストラクチャシステム1602は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。図16に示されるように、サブシステムは、クラウドインフラストラクチャシステム1602のユーザまたは顧客がクラウドインフラストラクチャシステム1602とやり取りすることを可能にするユーザインターフェイスサブシステム1612を含み得る。ユーザインターフェイスサブシステム1612は、ウェブインターフェイス1614、クラウドインフラストラクチャシステム1602が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス1616、およびその他のインターフェイス1618などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム1602がインターフェイス1614、1616、および1618のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求1634)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム1602が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム1602が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム1602によって提供される正規表現の自動生成関連サービスの申し込み注文を出すことができる。
【0170】
図16に示される例のような特定の実施形態において、クラウドインフラストラクチャシステム1602は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)1620を含み得る。この処理の一部として、OMS2220は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【0171】
適切に妥当性確認がなされると、OMS1620は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)1624を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースの種類は、顧客がオーダーしたクラウドサービスの種類に依存し得る。たとえば、あるワークフローに従うと、OPS1624を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0172】
クラウドインフラストラクチャシステム1602は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知1644を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の実施形態では、正規表現の自動生成関連サービスを要求する顧客に対して、応答は、実行されるとユーザインターフェイスを表示させる命令を含み得る。
【0173】
クラウドインフラストラクチャシステム1602はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム1602は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム1602は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【0174】
クラウドインフラストラクチャシステム1602は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム1602は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の実施形態において、クラウドインフラストラクチャシステム1602は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)1628を含む。IMS1628は、アイデンティティサービス、情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
【0175】
図17は、いくつかの例示的な実施形態に従ったコンピュータシステム1700の例を示す。いくつかの実施形態では、コンピュータシステム1700は、上述のシステムのいずれかを実現するために用いられ得る。図17に示されるように、コンピュータシステム1700は、バスサブシステム1702を介して他のいくつかのサブシステムと通信する処理サブシステム1704を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット1706、I/Oサブシステム1708、ストレージサブシステム1718、および通信サブシステム1724を含み得る。ストレージサブシステム1718は、記憶媒体1722およびシステムメモリ1710を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0176】
バスサブシステム1702は、コンピュータシステム1700のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1702は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム1702は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかの種類のバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0177】
処理サブシステム1704は、コンピュータシステム1700の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム1700の処理リソースを、1つ以上の処理ユニット1732、1734などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム1704は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム1704の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を用いて実現され得る。
【0178】
いくつかの実施形態において、処理サブシステム1704内の処理ユニットは、システムメモリ1710またはコンピュータ可読記憶媒体1722に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行し得るとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ1710および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体1722に常駐していてもよい。適切なプログラミングを介して、処理サブシステム1704は、上述のさまざまな機能を提供し得る。コンピュータシステム1700が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当てられてもよい。
【0179】
特定の実施形態において、コンピュータシステム1700によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム1704によって実行される処理の一部をオフロードするために、処理加速ユニット1706が任意に設けられ得る。
【0180】
I/Oサブシステム1708は、コンピュータシステム1700に情報を入力するための、および/またはコンピュータシステム1700から、もしくはコンピュータシステム1700を介して、情報を出力するための、デバイスおよび機構を含み得る。一般に、入力デバイスという語の使用は、コンピュータシステム1700に情報を入力するためのすべての考えられ得る種類のデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他の種類の入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを備えたデバイスなど、モーション検知および/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0181】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスを含むが、それらに限定されない。加えて、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、陽電子放出断層撮影、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0182】
一般に、出力デバイスという語の使用は、コンピュータシステム1700からユーザまたは他のコンピュータに情報を出力するための考えられるすべての種類のデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非視覚化ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含み得るが、それらに限定されない。
【0183】
ストレージサブシステム1718は、コンピュータシステム1700によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1718は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を備える。処理サブシステム1704によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム1718に格納されてもよい。ソフトウェアは、処理サブシステム1704の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム1718はまた、本開示の教示に従って使用されるデータを格納するためのリポジトリを備えてもよい。
【0184】
ストレージサブシステム1718は、揮発性および不揮発性のメモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図17に示すように、ストレージサブシステム1718は、システムメモリ1710およびコンピュータ可読記憶媒体1722を含む。システムメモリ1710は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム1700内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム1704によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ1710は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なる種類のメモリを含み得る。
【0185】
限定ではなく一例として、図17に示されるように、システムメモリ1710は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム1712、プログラムデータ1714、およびオペレーティングシステム1716を、ロードしてもよい。一例として、オペレーティングシステム1716は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)もしくはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、ならびに/または、iOS(登録商標)、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) OS、Palm(登録商標) OSオペレーティングシステムのようなモバイルオペレーティングシステムなどを、含み得る。
【0186】
コンピュータ可読記憶媒体1722は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納し得る。コンピュータ可読記憶媒体1722は、コンピュータシステム1700のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供し得る。処理サブシステム1704によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)はストレージサブシステム1718に格納されてもよい。一例として、コンピュータ可読記憶媒体1722は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体1722は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、それらに限定されない。コンピュータ可読記憶媒体1722はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDを含み得る。
【0187】
特定の実施形態において、ストレージサブシステム1718は、コンピュータ可読記憶媒体1722にさらに接続され得るコンピュータ可読記憶媒体リーダ1720も含み得る。リーダ1720は、ディスク、フラッシュドライブなどのメモリデバイスからデータを受取り得るとともに、当該データを読取るように構成され得る。
【0188】
特定の実施形態において、コンピュータシステム1700は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム1700は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の実施形態において、コンピュータシステム1700は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースが割当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム1700によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム1700によって同時に実行され得る。
【0189】
通信サブシステム1724は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1724は、他のシステムとコンピュータシステム1700との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム1724は、コンピュータシステム1700が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。
【0190】
通信サブシステム1724は、有線および/または無線の通信プロトコルの両方をサポートし得る。特定の実施形態において、通信サブシステム1724は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または、他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム1724は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0191】
通信サブシステム1724は、さまざまな形式でデータを受信および送信し得る。いくつかの実施形態において、通信サブシステム1724は、他の形式に加えて、構造化および/または非構造化されたデータフィード1726、イベントストリーム1728、イベントアップデート1730などの形式で入力通信を受信してもよい。たとえば、通信サブシステム1724は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード1726を受信(または送信)するように構成されてもよい。
【0192】
特定の実施形態において、通信サブシステム1724は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム1728および/またはイベントアップデート1730を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などが含まれ得る。
【0193】
通信サブシステム1724は、コンピュータシステム1700からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード1726、イベントストリーム1728、イベントアップデート1730などのようなさまざまな異なる形式で、コンピュータシステム1700に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
【0194】
コンピュータシステム1700は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまな種類のうちの1つであり得る。コンピュータおよびネットワークの性質が常に変化しているため、図17に示されるコンピュータシステム1700の記載は具体例として意図されているに過ぎない。図17に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が実現可能である。当業者であれば、本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法を認識するだろう。
【0195】
特定の例について説明してきたが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に運用することができる。加えて、いくつかの例を特定の一連のトランザクションおよびステップを用いて説明してきたが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を並べ替えてもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。
【0196】
さらに、いくつかの例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。いくつかの例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。
【0197】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信してもよく、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0198】
上述の例が十分に理解されるように、本開示では具体的な詳細が示されている。しかしながら、例はこれらの具体的な詳細がなくとも実施され得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧になるのを避けるために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例についての上記説明は、各種例を実現することを可能にする説明を当業者に提供するだろう。要素の機能および構成の範囲内でさまざまな変更が可能である。
【0199】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0200】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示がそれに限定されるものではないことを当業者は認識するだろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0201】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。当該マシン実行可能命令は、当該命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに上記方法を実行させるために用いられ得るものである。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を格納するのに適した他の種類の機械可読媒体に保存され得る。代替的には、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。
【0202】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計することによって、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすることによって、またはそれらの任意の組み合わせによって達成されてもよい。
【0203】
本願の説明のための例をここに詳細に記載したが、本発明の概念が他の態様で様々に具現化および採用され得ること、ならびに特許請求の範囲が、先行技術によって限定される場合を除き、そのような変形例を含むように解釈されるよう意図されていることを理解されたい。
【0204】
構成要素が特定の動作を実行する「ように構成される」ものとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計することによって、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすることによって、またはそれらの任意の組み合わせによって達成されてもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
【国際調査報告】