JP6285943B2 - 文字列変換の帰納的合成のための順位付け - Google Patents

文字列変換の帰納的合成のための順位付け Download PDF

Info

Publication number
JP6285943B2
JP6285943B2 JP2015537832A JP2015537832A JP6285943B2 JP 6285943 B2 JP6285943 B2 JP 6285943B2 JP 2015537832 A JP2015537832 A JP 2015537832A JP 2015537832 A JP2015537832 A JP 2015537832A JP 6285943 B2 JP6285943 B2 JP 6285943B2
Authority
JP
Japan
Prior art keywords
representation
string
output
ranking
substring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015537832A
Other languages
English (en)
Other versions
JP2016502701A5 (ja
JP2016502701A (ja
Inventor
ガルワニ,スミット
シン,リシャブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016502701A publication Critical patent/JP2016502701A/ja
Publication of JP2016502701A5 publication Critical patent/JP2016502701A5/ja
Application granted granted Critical
Publication of JP6285943B2 publication Critical patent/JP6285943B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Machine Translation (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[001] 世界中の数百万人もの人々が、データの記憶および操作のためにスプレッドシート等を使用する。これらのデータ操作シナリオは、大量の入力情報を1つの形式から別の形式へ転換して、所望の出力を生成することに関与することが多い。典型的には、これらのタスクは、手動で、または、エンドユーザーもしくはエンドユーザーのためのプログラマのいずれかによって作成される、小さい、しばしば1回限りのコンピュータープログラムを使用して達成される。
[002] 別のアプローチは、コンピューターを採用して、所望のデータ変換を達成するためのプログラムを合成しようとする試みに関与した。プログラムを合成する2つの主要なアプローチ、すなわち、演繹法および帰納法が存在する。演繹的プログラム合成において、完全な上位の仕様は、翻訳の各工程が何らかの公理を使用して有効にされる、対応する下位のプログラムに翻訳される。このアプローチは、ユーザーが完全な仕様を提供することを必要とし、これは、幾つかの場合において、プログラム自体を書くことよりも潜在的に困難となり得る。これは、帰納的合成アプローチを、近年より普及させることとなった。帰納的プログラム合成アプローチにおいて、プログラムは、入力−出力例のセットから成る仕様などの不完全な仕様から合成される。帰納的プログラム合成アプローチは、下位のポインター操作コードからスプレッドシートのマクロに及ぶ、様々なドメインからのプログラムを合成するために近年使用されてきた。
[003] 帰納的プログラム合成アプローチにおける仕様は、不完全であり、しばしば曖昧であるため、所与の仕様と調和する、基になるドメイン固有言語の異なるプログラムが存在する。曖昧さを除去し、所望のプログラムへ収束させるために、ユーザーは、付加的な入力−出力例を提供することによって、仕様を強化する必要がある。例の数は、ドメイン固有言語の表現度と正比例する。すなわち、言語が表現的であるほど、所望のプログラムに収束させるためにより多くの入力−出力例が必要とされる。
[004] ドメイン固有言語は、ユーザーが望む大抵のタスクを表現するために表現的である必要があるが、同時に、所望のプログラムを学習するための面倒な数の入力−出力例をユーザーが提供することは期待できない。
[005] 本明細書において説明される順位付け技法の実施形態は、一般に、帰納的プログラム合成手続を通じて生成された候補変換プログラムを、少数のユーザー供給された入力−出力例を使用して、順位付けすることに関与する。一実施形態において、コンピューターは、候補変換プログラムを順位付けして、1つまたは複数の変換プログラムの順位付けされたグループを確立するために使用される。1つまたは複数の変換プログラムの各々は、ユーザーによって入力された各入力文字列から、1つまたは複数のユーザー供給された入力−出力例の各々に調和する、ユーザー所望の形式における出力文字列を生成する。
[006] より詳細には、候補変換プログラムのセットが入力される。各変換プログラムは、ドメイン固有言語のプログラム表現から構成され、プログラム表現は、部分表現から構成されることに留意されたい。順位付け体系は、候補変換プログラムにおいて見出される部分表現についてのオフライントレーニングデータから確立される。これらの順位付け体系の各々は、部分表現が、ユーザーによって入力された各入力文字列から、ユーザー供給される入力−出力例の各々と調和する、ユーザー所望の形式で出力文字列を生成することが可能なプログラムの一部である尤度を示す尤度スコアを生成する。順位付け体系が確立された各候補変換プログラムの各部分表現について、尤度スコアは、その部分表現について確立された順位付け体系を使用して確立される。尤度スコアは、より小さい部分表現からより大きい部分表現の順序で算出される。次いで、候補変換プログラムごとに、その候補変換プログラムについて確立された部分表現尤度スコアから、全体的な順位付けスコアが算出される。
[007] 一実施形態において、候補変換プログラムの各々に関連付けられる全体的な順位付けは、所定の数の上位の候補変換プログラムを選択するために使用される。次いで、これらの上位のプログラムは、1つまたは複数の変換プログラムの前述された順位付けされたグループとして指定される。1つの実装において、所定の数は1であり、従って、最高位の候補変換プログラムのみが選択および指定されることに留意されたい。
[008] 本概要は、詳細な説明においてさらに後述される概念の集まりを簡略化された形式で紹介するために提供されることに留意すべきである。本概要は、特許請求の範囲に記載された主題の重要な特徴または本質的な特徴を識別することを意図されたものではなく、特許請求の範囲に記載された主題の範囲を判定する補助として使用されることを意図されたものでもない。
[009] 本開示の具体的な特徴、態様、および利点は、以下の説明、添付の特許請求の範囲、および付属の図面に関して、より良く理解されるであろう。
[0010]候補変換プログラムを順位付けするためのプロセスの一実施形態を一般的に概説するフロー図である。 [0011]アトミック表現のための順位付け体系を確立することに関与する、図1のプロセスの一部の実装を一般的に概説するフロー図である。 [0012]タスクのトレーニングセットからトレーニングデータを生成することに関与する、図2のプロセスの一部の実装を一般的に概説するフロー図である。 [0013]正および負のトレーニング部分表現のセット内の各部分文字列からトレーニングデータを生成することに関与する、図3のプロセスの一部の実装を一般的に概説するフロー図である。 [0014]順位付け体系が確立された候補変換プログラムの各部分表現についての尤度スコアを、その順位付け体系を使用して確立することに関与する、図1のプロセスの一部の実装を一般的に概説するフロー図である。 [0015]最高位の候補変換プログラムを使用して、文字列変換を実行するためのプロセスの一実施形態を一般的に概説するフロー図である。 [0016]人の名字を表す入力文字列を含む入力列と、文字列「Mr.」が名字の前に配置される対応する入力文字列名を含む1つの例示的な出力文字列を有する出力列とを有するスプレッドシートを描く表である。 [0017]都市名を含む住所を含む入力列と、都市名に対応する、対応する入力文字列の一部を含む1つの例示的な出力文字列を有する出力列とを有するスプレッドシートを描く表である。 [0018]本明細書において説明される順位付け技法の実施形態を実装するための例示的なシステムを構成する汎用コンピューティング装置を描く図である。
[0019] 順位付け技法の実施形態の以下の説明において、この説明の一部を形成し、本技法が実施され得る具体的な実施形態が例示として示される付属の図面への参照がなされる。本技法の範囲から逸脱することなく、他の実施形態が利用され、構造的な変更が行われ得ることが理解される。
[0020] 明確さのために、本明細書において説明される順位付け技法の実施形態を説明する際には具体的な専門用語が行使され、これらの実施形態がそのように選ばれた具体的な用語に限定されることは意図されないことにも留意されたい。さらに、各具体的な用語は、同様の目的を実現するために概ね同様に動作する、その用語のあらゆる技術的な均等物を含むことが理解されるべきである。本明細書における、「一実施形態」、もしくは「別の実施形態」、もしくは「例示的な実施形態」、もしくは「代替的な実施形態」、または「1つの実装」、もしくは「別の実装」、もしくは「例示的な実装」、もしくは「代替的な実装」への言及は、その実施形態または実装に関連して説明される特定の特徴、特定の構造、または特定の特性が、本順位付け技法の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書中の様々な箇所における「一実施形態において」、「別の実施形態において」、「例示的な実施形態において」、「代替的な実施形態において」、「1つの実装において」、「別の実装において」、「例示的な実装において」、「代替的な実装において」という表現の出現は、必ずしも全てが同じ実施形態または実装に言及しているわけではなく、別個または代替的な実施形態/実装は、他の実施形態/実装と相互に排他的でもない。またさらに、本順位付け技法の1つまたは複数の実施形態または実装を表すプロセスフローの順序は、いかなる特定の順序も本質的に示さず、本順位付け技法のいかなる限定も示唆しない。
[0021] 本明細書において使用される「入力−出力例」という用語は、入力を形成する文字列のタプルおよび出力を形成する文字列に言及することにさらに留意されたい。入力は、ユーザーが変換することを希望する入力の例を表すのに対して、出力文字列は、ユーザーが入力から生成されることを希望する出力の例を表す。
1.0 帰納的プログラム合成のための順位付け技法
[0022] 本明細書において説明される順位付け技法の実施形態は、統計的および機械的学習技法を使用して、帰納的プログラム合成において使用するための所望の順位付け関数を学習する。一般に、正および負の例のトレーニングデータセットは、入力−出力例の所与のセットから自動的に作成される。トレーニングデータセットから、ドメイン固有言語のプログラムにおける表現を尤度測度に割り当てる順位付け関数が学習される。次いで、これらの順位付け関数が使用されて、ごく少数の入力−出力例から、学習されたプログラムの尤度が算出される。
1.1 文字列変換言語L
[0023] このセクションでは、順位付け技法の実施形態を実装するための文字列変換言語が説明される。文字列変換言語Lについての構文は、以下の通りである。
Trace expr e :=Concatenate(f,...,f
Atomic expr f :=SubStr(v,p,p
|ConstStr(s)
Position expr p :=Cpos(k)|Pos(r,r,c)
Integer expr c :=k
Regular expr r :=TokenSeq(T,...,T).
[0024] トレース(または連結)表現eは、アトミック表現f,...,fの連結を示す。アトミック表現fは、定数文字列表現ConstStr(s)または部分文字列表現SubStr(v,p,p)のいずれかを示し得る。定数文字列表現ConstStr(s)は、定数文字列「s」を生成する表現を示す。部分文字列表現SubStr(v,p,p)は、列vに存在し、その左端位置および右端位置がそれぞれ位置ペアpおよびpによって表される入力文字列の部分文字列を表す。位置表現Cpos(k)は、整数定数が正(または負)である場合、左側(または右側)からの所与の文字列中のk番目のインデックスを指す。位置表現Pos(r,r,c)は、その左側および右側がそれぞれ正規表現rおよびrに一致する入力文字列中の位置を示し、その文字列における正規表現のc番目のそのような一致である。正式には、正規表現rは、s[0..t−1]の何らかのサフィックスに一致し、rは、s[0..l+1]の何らかのサフィックスに一致し、ただし、l=Length(s)であり、tは、cが正(または負)である場合、左側(または右側)から開始するc番目のそのようなインデックス/位置である。
1.2 L表現の順位付けセット
[0025] L表現の大きなセットを表すデータ構造は、以下の通りである。
Figure 0006285943
[0026] データ構造は、多項式空間における表現の指数部つきの数値を表すために、ある表現の独立した部分表現を独立して維持する。例えば、部分文字列のセットSubStr(v,{p,{p)は、左端位置の式({p)および右端位置の式({p)を独立して維持する。マッピングWは、ξにおける各エッジをSubStrおよびConstStrのセットにマッピングし、それによって、異なる長さの連結表現間での共有さえ実現する(開始ノードηから対象ノードηまでの無閉路有向グラフにおける各パスは、そのパスにおける各エッジからの任意の表現を取り出して、それらを連結することによって取得された連結表現のセットを表す)。本明細書において説明される順位付け技法の実施形態は、この部分表現の独立性を維持し、部分表現のセットを独立して順位付けする。部分表現のセットを順位付けするための3つの技法、すなわち、(正規表現rおよび位置表現pを順位付けするための)頻度に基づく順位付け、(Substr表現を順位付けするための)特徴に基づく順位付け、および(連結表現を順位付けするための)パスに基づく順位付けが使用される。
1.2.1 頻度に基づく順位付け
[0027] 正規表現および位置表現(これらの双方は、何らかの有限のセットから値を取る)の場合、そのような表現を順位付けするために、頻度に基づく順位付けが実行される。取り得る各表現値をトレーニングデータから推定されるその表現値の頻度にマッピングする辞書Dが存在する。正規表現の尤度スコアは、その頻度スコアに正比例するように定義される。位置表現の尤度スコアは、その頻度スコア、およびその構成要素である正規表現の尤度スコアの平方根の任意の線形関数となるように定義され得る。
1.2.2 特徴に基づく順位付け
[0028] 無限のセットから値を取るアトミック表現fなどの表現の場合、特徴に基づく順位付けが実行される。特徴のセットφ(e)は、基となる入力−出力例から算出され、尤度は、機械学習手続から取得される。アトミック表現fについての定数文字列表現と部分文字列表現との間の選択を順位付けするために、サポートベクターマシン(SVM:support vector machine)バイナリ分類手続が、一実施形態において使用される。
1.2.3 パスに基づく順位付け
[0029] アトミック表現から構成される連結表現の場合、パスに基づく順位付けが実行される。一実施形態において、このパスに基づく順位付けは、連結表現において見出される個々のアトミック表現についてのスコアを結合することに関与する。1つの実装において、アトミック表現についての尤度スコアは、これらを乗算することによって結合され、別の実装において、これらは互いに加算される。
1.3 自動化されたトレーニングデータ生成
[0030] このセクションでは、頻度に基づく順位付け(または、それぞれ特徴に基づく順位付け)についての入力−出力例のセットから、正の例(または、正および負の例)から成るトレーニングデータを自動的に生成するための方法の一実施形態が説明される。各々が複数の入力−出力例{(i,o),...,(i,o)}から成るタスクの大きなセットが取得される。合成手続は、各入力−出力例(i,o)と調和する全てのプログラム
Figure 0006285943
のセットを学習する。次いで、正および負の表現値は、以下のように取得される。正の表現値は、セット
Figure 0006285943
に存在する表現値から構成され、負の表現値は、セット
Figure 0006285943
に存在する表現値から構成される。
1.3.1 正および負の表現値
[0031] 2つの無閉路有向グラフ(dags)DおよびD≡(D∩D...D)が与えられると、課題は、2つのdagにおけるエッジを揃えて、正および負の表現値を算出することである。dagを揃えた後、これらの間の共通エッジは、正の表現値を構成し、Dには存在するが、Dには存在しないエッジは、負の表現値を構成する。
[0032] DAGプログラムDおよびDは、入力文字列iに対して実行され、dagノードは、ラベル関数L:η→intを使用して、出力文字列oのインデックスを用いて注釈付けされる。dagの開始ノードηは、L(η)=0となるように、インデックス0を用いて注釈付けされる。L(η)=lであり、かつ、dagエッジ上の表現(η,η)が、入力文字列iに対して実行される場合において、文字列oを生成するとき、dagにおけるノードηは、インデックスm(すなわち、L(η)=m)を用いて注釈付けされる。双方のdagのノードが注釈付けされると、同じラベルを有するノード間のエッジ上の表現は、比較のために収集される。dagDにおいて文字列o[l..m]を生成する表現のセットは、
Figure 0006285943
と示され、ただし、
Figure 0006285943
である。
Figure 0006285943
において出現する表現は、正の表現として示され、セット
Figure 0006285943
において出現する表現は、負の表現として示される。正および負の表現値のセットは、各入力−出力例のペアについて取得される。
1.3.2 頻度に基づくトレーニングデータ生成
[0033] 正規表現および位置表現を順位付けする場合、これらの双方は有限のセットから値を取るため、頻度に基づく順位付けアプローチが実行される。トークンシーケンス表現についてのトークンシーケンスとこれらの頻度スコアのデータベースも、作成される。頻度は、正のトレーニング表現のセットから推定される。頻度は、ある表現が発生する各異なるコンテキストについても推定され得る。例えば、ある位置表現は、左端位置表現または右端位置表現のどちらかであり得る(その位置表現がSubStr表現の第1の引数として発生するか、または第2の引数として発生するかを意味する)。正規表現も、ある位置表現内の2つの異なるコンテキストにおいて発生する。
1.3.3 特徴に基づくトレーニングデータ生成
[0034] 文字列変換を学習する際の主要な曖昧さのうちの1つは、出力文字列中の部分文字列が定数文字列であるのか、または入力文字列の部分文字列であるのかに関する決定を行うことに由来する。そのような決定を行うことは、位置ペアおよび定数文字列についての取り得る値だけでなく、入力文字列および出力文字列にも依存するため、無限に多くの取り得る入力文字列および出力文字列が存在することから、この場合において頻度に基づく順位付けを使用することは不可能である。代わりに、一実施形態において、特徴に基づく順位付けアプローチが使用されて、SubStr表現とConstStr表現との間で選択がされる。より詳細には、特徴のセットが、各SubStr表現について定義される。使用され得る特徴の例は、以下を含むが、以下に限定されない。
a)IsOutputLeftTok:出力部分文字列の左端位置がトークンによって認識され得るかを示すブール値
b)IsOutputLeftConstant:出力部分文字列の左端位置の文字が定数であるかを示すブール値
c)IsOutputRightTok:出力部分文字列の右端位置がトークンによって認識され得るかを示すブール値
d)IsOutputRightConstant:出力部分文字列の右端位置の文字が定数であるかを示すブール値
e)IsOutputTok:出力部分文字列がトークンを意味するかを意味するブール値
f)IsInputLeftTok:入力部分文字列の左端位置がトークンによって認識され得るかを意味するブール値
g)IsInputRightTok:入力部分文字列の右端位置がトークンによって認識され得るかを意味するブール値
h)IsInputTok:入力部分文字列がトークンであるかを意味するブール値
i)Casing:出力部分文字列を取得するために実行されるケーシング
j)LenSubstring:部分文字列の長さ
k)RelLenInSubstring:入力文字列の長さに対する部分文字列の相対的な長さ(lenSubstring/lenInputString)
l)RelLenOutSubstring:出力文字列の長さに対する部分文字列の相対的な長さ(lenSubstring/lenOutputString)
m)頻度に基づく順位付け体系を使用して推定される、構成要素となる位置表現の尤度スコア
[0035] これらの特徴全ては、一定のO(l)時間で算出され得る。各正および負のSubStr表現について、特徴ベクトルは、クラスラベル(例えば、正の表現について+1、および負の表現について0)と共に算出される。次いで、既製のサポートベクターマシン(SVM)手続が、バイナリ分類子を学習するために使用され得る。より詳細には、作成された各特徴ベクトルは、各要素(クラスラベルのために予約される要素を除く)が前述された特徴のうちの1つにそれぞれ関連付けられる特徴値に対応する所定の順序を有する。要素の所定の順序に対応する順序における前述された特徴の各々について、その特徴が考慮中のSubStr表現において提示される場合、第1のバイナリ値(例えば、1)を有する特徴値が、対応する特徴ベクトル要素に割り当てられる。その特徴が提示されない場合、第2のバイナリ値(例えば、0)を有する特徴値が、対応する特徴ベクトル要素に割り当てられる。また、前述されたクラスラベルのために予約される特徴ベクトル要素は、SubStr表現が正のSubStr表現である場合、1つのバイナリ値(例えば、1)を割り当てられ、SubStr表現が負のSubStr表現である場合、別のバイナリ値(例えば、0)を割り当てられる。
1.4 順位付けプログラム
[0036] このセクションでは、dagによって表されるプログラムがどのように順位付けされるかが説明されるであろう。
1.4.1 Dagエッジ表現の順位付け
[0037] dagの各エッジは、SubStr表現およびConstStr表現のセットから成る。一実施形態において、特徴に基づく順位付けは、+1と0との間の尤度スコアを各SubStr表現に割り当てる一方で、ConstStr表現の尤度スコアは、0.5になるように決められる。
1.4.2 Dagパスの順位付け
[0038] dagDにおける各パスは、所与の出力例に適合する幾つかのプログラムを表す。エッジeの尤度スコアw(e)は、そのエッジにおける任意のSubStr表現またはConstStr表現の最も高い尤度スコアとして定義される。パスの尤度スコアは、そのパス上の対応するエッジ表現の尤度スコアを乗算する(加算する)ことによって算出されるように、w(p)≡Πe∈edges(p)w(e)として定義される。次いで、ダイクストラの最短パス手続が使用されて、dagにおける最高位のパスが算出され、最高位の出力文字列を生成するために、このパスが実行される。パスの尤度スコアは、全てのエッジの尤度スコアの積/和、エッジの数、任意のエッジの最小/最大の尤度スコアなど、様々な特徴のより洗練された関数とすることもできる。さらに、この関数は、機械的学習技法を使用することによって学習されることもできる。
1.5 候補変換プログラムを順位付けするための例示的なプロセス
[0039] 本明細書において説明される順位付け技法の実施形態の前述の態様は、1つの一般的な実装において、図1において概説されるプロセスによって実現され得る。より詳細には、(後述の例示的な動作環境において説明されるコンピューティング装置のいずれかなどの)コンピューターは、候補変換プログラムを順位付けして、1つまたは複数の変換プログラムの順位付けされたグループを確立するために使用される。1つまたは複数の変換プログラムの各々は、ユーザーによって入力された各入力文字列から、1つまたは複数のユーザー供給された入力−出力例の各々と調和する、ユーザー所望の形式における出力文字列を生成する。より詳細には、候補変換プログラムのセットは、入力として受信される(プロセス動作100)。候補変換プログラムの各々は、1つまたは複数のユーザー供給された入力−出力例から、従来の方法を使用して帰納的に合成され、各ユーザー供給された入力例から各ユーザー供給された出力例によって提示される形式で出力文字列を生成する。既述したように、各変換プログラムは、部分表現から構成されるプログラム表現から構成されることに留意されたい。次に、(より小さい部分表現からより大きい部分表現まで)順位付け体系が確立された各候補変換プログラムの各部分表現について、尤度スコアは、その部分表現について確立された順位付け体系を使用して確立される(プロセス動作102)。順位付け体系の各々は、部分表現が、ユーザーによって入力された各入力から、ユーザー供給された入力−出力例の各々と調和する、ユーザー所望の形式で出力文字列を生成することが可能なプログラムの一部である尤度を示す尤度スコアを生成することに留意されたい。次いで、全体的な順位付けスコアが、候補変換プログラムごとに、その候補変換プログラムについて確立された部分表現尤度スコアから算出される(プロセス動作104)。
[0040] 色々な種類の順位付け体系が、色々な種類の表現について使用される。既述したように、部分表現は、正規表現または位置表現またはアトミック表現または連結表現のいずれかであり得る。一実施形態において、正規表現および位置表現は、頻度に基づく順位付けを採用する(このタイプの順位付けは、トークンの有限なセットからの値を取る表現に適用可能であるため)。また、特徴に基づく順位付けは、アトミック表現について使用され、パスに基づく順位付けは、連結について使用される。効率のために、一実施形態において、順位付け体系は、まず正規表現に、次いで位置表現に、次いでアトミック表現に、最後に連結表現について確立されることにも留意されたい。
[0041] アトミック表現の場合において、既に示されたように、これらは、定数文字列表現または部分文字列表現のどちらかであり得る。これを考慮して、図2を参照すると、一実施形態においてアトミック表現についての順位付け体系を確立することは、まず、アトミック表現が定数文字列表現であるのか、または部分文字列表現であるのかを識別することに関与する(プロセス動作200)。次いで、タスクのトレーニングセットが入力される(プロセス動作202)。各タスクセットは、複数の入力−出力例から構成される。トレーニングデータは、トレーニングセットから生成され(プロセス動作204)、尤度スコアを各部分文字列表現および各定数文字列表現に割り当てるべく、機械学習分類子をトレーニングするために使用される(プロセス動作206)。一実施形態において、機械学習分類子は、サポートベクターマシン(SVM)バイナリ分類子であり、部分表現が意図されるプログラムの一部である可能性がどのくらいあるかに応じて0から1までの範囲における値を有する各部分文字列表現に尤度スコアを割り当てるためにトレーニングされる。また、分類子は、所定の尤度スコア値(例えば、0.5)を各定数文字列表現に割り当てる。
[0042] タスクのトレーニングセットからトレーニングデータを生成することに関して、1つの実装において、これは、トレーニングセット内の各タスクについて以下に関与する。図3を参照すると、タスクにおいて、以前に選択されていない入力−出力例が選択される(プロセス動作300)。変換プログラムのセットは、選択された入力−出力例から帰納的に合成される(プロセス動作302)。変換プログラムの各々は、その例の入力における入力文字列のタプルから、その例の出力において提示される形式で出力文字列を生成する。入力文字列のタプルとは、入力−出力例の出力を生成するために使用される入力−出力例における入力の1つまたは複数の部分をいう。次に、正のトレーニング部分表現のセットが、変換プログラムのセットから確立され(プロセス動作304)、負のトレーニング部分表現のセットも、変換プログラムのセットから確立される(プロセス動作306)。一実施形態において、変換プログラムのセットから正のトレーニング部分表現を確立することは、タスク内の入力−出力例から合成される変換プログラムの全てのセットの共通部分において見出される各部分表現を、正のトレーニング部分表現に指定することに関与する。一方で、変換プログラムのセットから負のトレーニング部分表現を確立することは、正のトレーニング部分表現として識別されない変換プログラムのセット内の各部分表現を、負のトレーニング部分表現として指定することに関与する。
[0043] この時点で、正規表現および位置表現についての順位付け体系が確立される。より詳細には、有限な数の予め定義されたトークンを有するセットから値を取る出力部分文字列を生成する部分表現(すなわち、正規表現および位置表現)を、正のトレーニング部分表現のセット内のそれらの部分表現の頻度に基づいて、頻度に基づくスコアにマッピングする辞書が生成される(プロセス動作308)。
[0044] 次に、部分表現の正および負のトレーニングセットの双方からの各部分文字列表現について、トレーニングデータが、特徴に基づく順位付けのために生成される(プロセス動作310)。次いで、タスク内の全ての入力−出力例が選択および処理されたかが判定される(プロセス動作312)。タスク内の全ての入力−出力例が選択および処理されていない場合、プロセス動作300〜312が繰り返される。そうでない場合、本手続は、選択されたタスクについて終了する。前述の手続は、残りのタスク全ておよびそれらの入力−出力例について繰り返される。
[0045] 特徴に基づく順位付けのために、正および負のトレーニング部分表現のセット内の各部分文字列表現からトレーニングデータを生成する前述のプロセス動作に関して、これは、図4に示されるような一実施形態において達成される。まず、(既述された特徴などの)1つまたは複数の特徴のセットが入力される(プロセス動作400)。特徴の各々は、出力文字列中の部分文字列が正および負のトレーニング部分表現のセット内の部分文字列表現のうちの1つによって生成されるかを示す。次いで、正および負のトレーニング部分表現のセット内の各部分文字列表現について、特徴ベクトルが生成される(プロセス動作402)。既述したように、各特徴ベクトルは、クラスラベルのために予約された要素を除いて、各要素が前述された特徴のうちの1つにそれぞれ関連付けられる特徴値に対応する、要素の所定の順序である。一実施形態において、要素の所定の順序に対応する順序における特徴の各々について、その特徴が考慮中の部分文字列表現によって生成される出力文字列中の部分文字列において提示される場合、各特徴ベクトルは、第1のバイナリ値(例えば、1)を有する特徴値を割り当てることによって生成される。より具体的には、特徴値は、提示される特徴に関連付けられる特徴ベクトル要素に割り当てられる。また、第2のバイナリ値(例えば、0)を有する特徴値は、考慮中の特徴が部分文字列表現によって生成される出力文字列中の部分文字列において提示されない場合、その特徴に関連付けられる特徴ベクトル要素に割り当てられる。さらに、前述されたクラスラベルのために予約される特徴ベクトル要素は、部分文字列表現が正のトレーニング部分表現のセット内にある場合、1つのバイナリ値(例えば、1)を割り当て、部分文字列表現が負のトレーニング部分表現のセット内にある場合、異なるバイナリ値(例えば、0)を割り当てる。
[0046] 連結表現について順位付け体系を確立することに関して、一実施形態において、これは、連結表現において見出される個々のアトミック表現についての尤度スコアを結合することに関与する。1つの実装において、この結合は、スコアを乗算することによって達成され、かつ1つの実装では、この結合は、スコアを加算することによって達成される。
[0047] 前記を考慮すると、一実施形態において、順位付け体系を使用してその順位付け体系が確立された候補変換プログラムの各部分表現についての尤度スコアを確立することは、以下に関与する。図5を参照すると、まず、各正規表現についての尤度が、頻度に基づく順位付け体系を使用して識別される(プロセス動作500)。次いで、各位置表現についての尤度も、頻度に基づく順位付け体系を使用して識別される(プロセス動作502)。既述したように、この頻度に基づく順位付けは、正規表現および位置表現を頻度に基づくスコアにマッピングする辞書を採用することに関与し得る。次に、各アトミック表現の尤度が、特徴に基づく順位付け体系を使用して識別される(プロセス動作504)。既述したように、アトミック表現は、定数文字列表現または部分文字列表現のどちらかである。アトミック表現が定数文字列表現である場合、特徴に基づく順位付けは、所定の尤度スコア値(例えば、0.5)を割り当てることに関与し得る。また、アトミック表現が部分文字列表現である場合、特徴に基づく順位付けは、尤度スコアを各部分文字列表現に割り当てるようにトレーニングされた機械学習分類子を使用して、(例えば、0から1までに及ぶ)尤度スコア値を割り当てることに関与し得る。次いで、各連結表現の尤度は、パスに基づく順位付け体系を使用して識別される(プロセス動作506)。既述したように、このパスに基づく順位付けは、連結表現において見出される個々のアトミック表現についてのスコアを結合することに関与し得る。
[0048] 候補変換プログラムの各々について確立される、前述された全体的な順位付けに関して、これらの順位付けを多様な手法で使用することが可能である。例えば、一実施形態において、候補変換プログラムの各々に関連付けられる順位付けは、所定の数の上位の候補変換プログラムを選択し、これら上位のプログラムを1つまたは複数の変換プログラムの前述された順位付けされたグループとして指定するために使用される。1つの実装において、所定の数は1であり、従って、最高位の候補変換プログラムのみが選択および指定されることに留意されたい。
1.6 最高位の変換プログラムを使用して文字列変換を実行するための例示的なプロセス
[0049] 最高位の候補変換プログラムを選択することに関与する後者の実施形態に関して、これは、コンピューティング装置が文字列変換を実行する適用において使用され得る。より詳細には、図6を参照すると、1つの一般的な実装において、1つまたは複数のユーザー供給された入力−出力例から帰納的に合成された候補変換プログラムのセットが入力される(プロセス動作600)。既述したように、候補変換プログラムの各々は、各ユーザー供給された入力例から各ユーザー供給された出力例によって提示される形式で出力文字列を生成する。
[0050] 入力されると、候補変換プログラムのセットは、順位付けされて、最高位の変換プログラムが識別される(プロセス動作602)。次いで、この最高位の変換プログラムが、ユーザー供給された入力文字列に適用されて、出力文字列が生成される(プロセス動作604)。
1.7 例示的な変換シナリオ
[0051] このセクションでは、2つの例示的な変換シナリオが提供される。本明細書において説明される順位付け技法の実施形態は、これらのシナリオにおいて見出される少数の入力−出力例に基づいて、入力される各入力文字列から所望の出力文字列を生成することが可能な変換プログラムを確立するために採用され得る。
[0052] 第1の例示的なシナリオにおいて、スプレッドシートのユーザーは、入力列において一連の名前を有し、各名前の前に敬称「Mr.」を追加することを希望する。ユーザーは、図7に示される入力−出力例を提供した。
[0053] 課題は、出力文字列「Mr.Roger」中のどの部分文字列が定数文字列であり、どれが入力文字列「Roger」の部分文字列であるのかを決定することによって、所与の入力−出力例から所望の変換プログラムを学習することである。この場合には、出力部分文字列o[0..0]≡Mが入力文字列中に存在しないため、定数文字列でなければならないことが推論され得る。しかし、出力部分文字列o[1..1]≡rは、入力文字列中の2つの異なる部分文字列(i[0..0]≡Rおよびi[4..4]≡r)に由来し得る。本明細書において説明される順位付け技法の実施形態は、全ての取り得る表現を学習して、(i)部分文字列i[0..0]を抽出し、「r」から「R」を生成するための小文字演算を実行するための位置ペア表現と、(ii)部分文字列i[4..4]および定数文字列表現「r」を抽出するための位置ペア表現とを含む出力文字列中の部分文字列「r」を算出する。入力文字列に存在しない出力文字列の部分文字列は、定数文字列であることが保証されるのに対して、入力文字列に存在しない部分文字列は、定数文字列または入力文字列の部分文字列のどちらかであり得る(経験は、これらが入力文字列に由来する可能性が高いことを示しているが)。例えば、出力部分文字列o[4..8]≡Rogerは、定数文字列「Roger」よりも、入力文字列iに由来する可能性が高い。同様の議論を使用すると、出力文字列中の部分文字列o[1..1]≡rも、入力文字列中の2つの位置に存在し、そこに由来する可能性が高い。しかし、この例において、プログラムの所望の振る舞いは定数文字列「Mr.」を各入力文字列の前に追加することであるため、「r」は定数文字列である必要がある。1つの入力−出力例から所望の変換を学習するために、本明細書において説明される順位付け技法の実施形態は、定数文字列表現を出力部分文字列「r」についての位置ペア表現よりも上位に順位付けする必要がある。「r」を定数文字列として順位付けする際に役立ち得る特徴のうちの幾つかは、以下を含む。
a)部分文字列の長さ:部分文字列「r」の長さは1であるため、部分文字列「r」が入力部分文字列である可能性は低い。
b)部分文字列の相対的な長さ:出力文字列と比較した部分文字列「r」の相対的な長さも非常に小さく、すなわち、1/10である。
c)定数の隣接文字:「r」の隣接文字「M」および「.」は、双方ともに定数表現である。
[0054] 第2の例示的なシナリオにおいて、スプレッドシートのユーザーは、列中に一連の住所を有し、この住所から都市名を抽出することを希望する。ユーザーは、図8に示される入力−出力例を提供した。
[0055] この場合には、本明細書において説明される順位付け技法の実施形態は、入力文字列「243 Flyer Drive,Cambridge,MA 02145」から部分文字列「Cambridge」を抽出するために、100を超える異なるSubStr式を学習し得る。そのうちの幾つかは、以下の通りである。
a)p:3番目のアルファベットトークン文字列を抽出する。
b)p:4番目の英数字のトークン文字列を抽出する。
c)p:コンマおよび空白のトークンから成る1番目と2番目のトークンシーケンスの間の部分文字列を抽出する。
d)p:3番目の大文字トークン(包括的)と左から2番目のコンマトークンとの間の部分文字列を抽出する。
[0056] 位置ペア式pおよびpを学習することに関する問題は、入力文字列「512 Wright Ave,Los Angeles,CA 78911」について、所望の出力ではない出力文字列「Los」を生成することである。また、位置ペア式pは、入力文字列「64 128th St,Seattle,WA 98102」から、いかなる出力文字列も生成しない。他方、位置ペア式pは、位置ペア式の各々について所望の出力文字列(すなわち、それぞれCambridge、Los Angeles、SeattleおよびSan Francisco)を生成する。そのため、本明細書において説明される順位付け技法の実施形態は、位置ペア式pをその他の位置ペア式よりも上位に順位付けして、1つの入力−出力例から所望の出力文字列を生成する。
2.0 例示的な動作環境
[0057] 本明細書において説明される順位付け技法の実施形態は、多数のタイプの汎用または専用コンピューティングシステム環境または構成内で動作可能である。図9は、本明細書において説明されるような様々な実施形態および順位付け技法の実施形態の要素が実装され得る汎用コンピューターシステムの簡略化された例を例示する。図9において破線または点線によって表されるいかなる四角形も、簡略化されたコンピューティング装置の代替的な実施形態を表すこと、および、以下に説明されるように、これらの代替的な実施形態のうちのいずれかまたは全ては、本文書全体にわたって説明される他の代替的な実施形態と組み合わせて使用され得ることが留意されるべきである。
[0058] 例えば、図9は、簡略化されたコンピューティング装置10を示す、一般的なシステム図を示す。そのようなコンピューティング装置は、典型的には、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドコンピューティング装置、ラップトップまたはモバイルコンピューター、携帯電話およびPDAなどの通信装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピューター、メインフレームコンピューター、オーディオまたはビデオメディアプレーヤー等を含むが、これらに限定されない、少なくとも何らかの最低限の計算能力を有する装置において見出され得る。
[0059] 本明細書において説明される順位付け技法の実施形態を装置に実装させるために、装置は、基本的な計算演算を可能にするための充分な計算能力およびシステムメモリを有するべきである。特に、図9によって例示されるように、計算能力は、一般に、1つまたは複数の処理装置12によって例示され、1つまたは複数のGPU14も含み得、これらの一方または双方がシステムメモリ16と通信する。一般的なコンピューティング装置の処理装置12は、DSP、VLIW、もしくは他のマイクロコントローラーなどの特殊マイクロプロセッサであってもよく、または、マルチコアCPUにおける特殊なGPUベースのコアを含む、1つまたは複数の処理スコアを有する従来のCPUとし得ることに留意されたい。
[0060] また、図9の簡略化されたコンピューティング装置は、例えば、通信インターフェイス18などの他のコンポーネントも含み得る。図9の簡略化されたコンピューティング装置は、1つまたは複数の従来のコンピューター入力装置20(例えば、ポインティング装置、キーボード、オーディオ入力装置、ビデオ入力装置、触覚入力装置、有線または無線データ送信を受信するための装置等)も含み得る。図9の簡略化されたコンピューティング装置は、例えば、1つまたは複数の従来のディスプレイ装置24および他のコンピューター出力装置22(例えば、オーディオ出力装置、ビデオ出力装置、有線または無線データ送信を送信するための装置等)などの、他の任意選択的なコンポーネントも含み得る。汎用コンピューターのための典型的な通信インターフェイス18、入力装置20、出力装置22、および記憶装置26は、当業者には周知であり、本明細書において詳細に説明されないことに留意されたい。
[0061] 図9の簡略化されたコンピューティング装置は、多様なコンピューター読取可能な媒体も含み得る。コンピューター読取可能な媒体は、コンピューター10によって記憶装置26を介してアクセスされ得る任意の利用可能な媒体とすることができ、コンピューター読取可能な命令もしくはコンピューター実行可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のために、取り外し可能28および/または取り外し不可能30である揮発性媒体および不揮発性媒体の双方を含む。コンピューター読取可能な媒体は、コンピューター記憶媒体および通信媒体を含み得る。コンピューター記憶媒体は、DVD、CD、フロッピーディスク、テープドライブ、ハードディスクドライブ、光学式ドライブ、ソリッドステートメモリドライブ、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望の情報を記憶するために使用されることができ、かつ、1つまたは複数のコンピューティング装置によってアクセスされることができる任意の他の装置などの、有形のコンピューター読取可能なまたは機械読取可能な媒体または記憶装置をいう。
[0062] コンピューター読取可能なまたはコンピューター実行可能な命令、データ構造、プログラムモジュール等などの情報の保持は、1つもしくは複数の変調データ信号もしくは搬送波を符号化するための多様な前述の通信媒体のいずれか、または、他の伝送機構もしくは通信プロトコルを使用することによっても達成され得、任意の有線もしくは無線の情報配信機構を含む。「変調データ信号」または「搬送波」という用語は、一般的に、その特性のうちの1つまたは複数が情報を信号に符号化するような手法で設定または変更された信号をいうことに留意されたい。例えば、通信媒体は、1つまたは複数の変調データ信号を搬送する有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、RF、赤外線、レーザー、および1つまたは複数の変調データ信号または搬送波を送信および/または受信するための他の無線媒体などの無線媒体を含む。上記のうちの任意のものの組み合わせも、通信媒体の範囲内に含まれるべきである。
[0063] さらに、本明細書において説明される様々な順位付け技法の実施形態のうちの一部または全部を具現化するソフトウェア、プログラムおよび/もしくはコンピュータープログラム製品、またはこれらの一部は、コンピューターまたは機械読取可能な媒体または記憶装置および通信媒体の任意の所望の組み合わせから、コンピューター実行可能な命令または他のデータ構造の形式において、記憶され、受信され、送信され、または読み出され得る。
[0064] 最後に、本明細書において説明される順位付け技法の実施形態は、コンピューティング装置によって実行される、プログラムモジュールなどのコンピューター実行可能な命令の一般的なコンテキストにおいてさらに説明され得る。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本明細書において説明される実施形態は、1つもしくは複数の通信ネットワークを通じてリンクされる、タスクが1つもしくは複数の遠隔処理装置によって実行される分散コンピューティング環境において、または1つもしくは複数の装置のクラウド内でも実施され得る。分散コンピューティング環境において、プログラムモジュールは、媒体記憶装置を含むローカルコンピューターおよび遠隔コンピューターの記憶媒体の双方において位置し得る。またさらに、前述された命令は、一部または全部が、ハードウェア論理回路として実装されてもよく、ハードウェア論理回路は、プロセッサを含んでも、または含まなくてもよい。
3.0 他の実施形態
[0065] 本説明全体にわたる前述された実施形態のいずれかまたは全部は、任意の所望の組み合わせにおいて使用されて、付加的な混合実施形態を形成し得ることに留意されたい。また、主題は、構造的な特徴および/または方法論的な動作に固有の言語において説明されてきたが、添付の特許請求の範囲において定義される主題は、必ずしも上述された具体的な特徴または動作に限定されないことが理解されるべきである。むしろ、上述された具体的な特徴および動作は、請求項を実装する例示的な形式として開示される。

Claims (19)

  1. 各々が部分表現を含むプログラム表現を含む候補変換プログラムを順位付けして、ユーザーによって入力される入力文字列から、1つまたは複数のユーザー供給される入力−出力例の各々と調和する、各々がユーザー所望の形式で出力文字列を生成する1つまたは複数の変換プログラムの順位付けされたグループを確立するために、コンピューターにより実装されるプロセスであって、
    コンピューターを使用して、以下のプロセス動作、すなわち、
    前記1つまたは複数のユーザー供給される入力−出力例から帰納的に合成された、各々が各ユーザー供給される入力例から各ユーザー供給される出力例によって提示される形式で出力文字列を生成する候補変換プログラムのセットを入力することと、
    各候補変換プログラムについて、
    より小さい方からより大きい方への順に、順位付け体系が確立された、前記候補変換プログラムの各部分表現について、前記部分表現についての前記順位付け体系を使用して尤度スコアを確立することと、
    前記候補変換プログラムについて確立された前記部分表現の尤度スコアから、前記候補変換プログラムについての全体的な順位付けスコアを算出することとを実行させることを含む、コンピューターにより実装されるプロセス。
  2. 部分表現が、正規表現または位置表現またはアトミック表現または連結表現のいずれかであり、前記順位付け体系が、前記正規表現、位置表現、アトミック表現、および連結表現の各々をこの順序で順位付けするために確立される、請求項1に記載のプロセス。
  3. アトミック表現が、定数文字列表現または部分文字列表現のいずれかであり、アトミック表現についての順位付け体系を確立するプロセス動作が、
    前記アトミック表現が定数文字列表現であるのか、または部分文字列表現であるのかを識別する動作と、
    各タスクが複数の入力−出力例から成るタスクのトレーニングセットを入力する動作と、
    前記トレーニングセットからトレーニングデータを生成する動作と、
    各部分文字列表現および各定数文字列表現に尤度スコアを割り当てるために、機械学習分類子をトレーニングする動作と含む、請求項2に記載のプロセス。
  4. 各部分文字列表現に尤度スコアを割り当てるプロセス動作が、0から1までの範囲における値を有する尤度スコアを割り当てることを含み、各定数文字列表現に尤度スコアを割り当てるプロセス動作が、所定の尤度スコア値を割り当てることを含む、請求項3に記載のプロセス。
  5. 前記タスクのトレーニングセットからトレーニングデータを生成するプロセス動作が、
    前記トレーニングセット内の各タスクについて、
    前記タスク内の入力−出力例ごとに、
    前記入力−出力例から帰納的に合成され、各々が前記例内の入力文字列のタプルから前記例内の前記出力文字列を生成する、変換プログラムのセットを確立する動作と、
    前記変換プログラムのセットから正のトレーニング部分表現のセットを確立する動作と、
    前記変換プログラムのセットから負のトレーニング部分表現のセットを確立する動作と、
    前記正および負のトレーニング部分表現のセット内の各部分文字列表現から前記トレーニングデータを生成する動作とを含む、請求項3に記載のプロセス。
  6. 前記正および負のトレーニング部分表現のセット内の各部分文字列表現からトレーニングデータを生成する前記プロセス動作が、
    特徴の各々が、前記出力文字列内の部分文字列が前記正および負のトレーニング部分表現のセット内の部分文字列表現によって生成されるかを示す、1つまたは複数の特徴のセットを入力する動作と、
    前記正および負のトレーニング部分表現のセット内の各部分文字列表現について、各要素が、クラスラベルのために予約される要素を除いて、前記特徴のうちの1つにそれぞれ関連付けられる特徴値に対応する、要素の所定の順序を含む特徴ベクトルを生成する動作とを含み、前記特徴ベクトルの生成は、
    前記要素の所定の順序に対応する順序における前記特徴の各々について、前記特徴が考慮中の前記部分文字列表現によって生成される前記出力文字列内の部分文字列において提示される場合、第1のバイナリ値を有する特徴値を、対応する特徴ベクトル要素に割り当て、前記特徴が考慮中の前記部分文字列表現によって生成される前記出力文字列中の部分文字列において提示されない場合、第2のバイナリ値を有する特徴値を、前記対応する特徴ベクトル要素に割り当てることと、
    前記クラスラベルのために予約される前記特徴ベクトル要素について、前記部分文字列表現が前記正のトレーニング部分表現のセットに存在する場合、1つのバイナリ値を割り当て、前記部分文字列表現が前記負のトレーニング部分表現のセットに存在する場合、異なるバイナリ値を割り当てることとを含む、請求項5に記載のプロセス。
  7. 前記1つまたは複数の特徴のセットは、
    前記出力部分文字列の左端位置がトークンによって認識されること、
    前記出力部分文字列の前記左端位置の文字が定数であること、
    前記出力部分文字列の右端位置がトークンによって認識されること、
    前記出力部分文字列の前記右端位置の文字が定数であること、
    出力部分文字列はトークンを示すこと、
    前記入力部分文字列の左端位置がトークンによって認識されること、
    前記入力部分文字列の右端位置がトークンによって認識されること、
    入力部分文字列はトークンであること、
    前記出力部分文字列を取得するために実行されるケーシング、
    前記部分文字列の長さ、
    前記入力文字列の前記長さに対する前記部分文字列の相対的な長さ、
    前記出力文字列の前記長さに対する前記部分文字列の相対的な長さ、または
    構成要素となる位置表現の尤度スコア、
    の少なくとも1つを含む、請求項6に記載のプロセス。
  8. 前記機械学習分類子は、サポートベクターマシン(SVM)バイナリ分類子である、請求項6に記載のプロセス。
  9. タスク内の入力−出力例から確立される前記変換プログラムのセットから正のトレーニング部分表現のセットを確立する前記プロセス動作が、前記タスク内の前記入力−出力例から合成される変換プログラムの全てのセットの共通部分において見出される各部分表現を、正のトレーニング部分表現として指定することを含む、請求項5に記載のプロセス。
  10. 前記タスク内の前記入力−出力例から確立される前記変換プログラムのセットから負のトレーニング部分表現のセットを確立する前記プロセス動作が、正のトレーニング部分表現として識別されない前記変換プログラムのセット内の各部分表現を、負のトレーニング部分表現として指定することを含む、請求項9に記載のプロセス。
  11. 正規表現および位置表現について順位付け体系を確立する前記プロセス動作が、有限な数の予め定義されたトークンを有するセットから値を取る出力部分文字列を生成する部分表現を、前記正のトレーニング部分表現のセット内のそれらの部分表現の頻度に基づいて、頻度に基づくスコアにマッピングする辞書を算出する動作を含む、請求項5に記載のプロセス。
  12. 連結表現について順位付け体系を確立する前記プロセス動作が、連結表現において見出される個々のアトミック表現についてのスコアを結合することを含む、請求項2に記載のプロセス。
  13. 連結表現において見出だされる個々のアトミック表現についてスコアを連結する前記プロセス動作が、前記スコアを乗算すること、または前記スコアを加算することの1つを含む、請求項12に記載のプロセス。
  14. 1つまたは複数の変換プログラムの前記順位付けされたグループとして、所定の数の上位の候補変換プログラムを選択するプロセス動作をさらに含む、請求項1に記載のプロセス。
  15. 1つまたは複数の変換プログラムの前記順位付けされたグループとして、所定の数の上位の候補変換プログラムを選択する前記プロセス動作が、前記最高位の候補変換プログラムを選択することを含む、請求項14に記載のプロセス。
  16. 各々のプログラムが部分表現を含むプログラム表現を含む候補変換プログラムを順位付けして、ユーザーによって入力される入力文字列から、1つまたは複数のユーザー供給される入力−出力例の各々と調和する、各々がユーザー所望の形式で出力文字列を生成する1つまたは複数の変換プログラムの順位付けされたグループを確立するためのシステムであって、
    1つまたは複数のコンピューティング装置であって、前記コンピューティング装置は複数のコンピューティング装置がある場合はいつでもコンピューターネットワークを介して相互に通信する、1つまたは複数のコンピューティング装置と、
    前記1つまたは複数のコンピューティング装置によって実行されるプログラムモジュールを有するコンピュータープログラムとを含み、前記1つまたは複数のコンピューティング装置は、
    前記1つまたは複数のユーザー供給される入力−出力例から帰納的に合成された、各々が各ユーザー供給される入力例から各ユーザー供給される出力例によって提示される形式で出力文字列を生成する前記候補変換プログラムのセットを入力し、
    各候補変換プログラムについて、
    より小さい方からより大きい方への順に、順位付け体系が確立された、前記候補変換プログラムの各部分表現について、前記部分表現について確立された前記順位付け体系を使用して尤度スコアを確立し、
    前記候補変換プログラムについて確立された前記部分表現の尤度スコアから、前記候補変換プログラムについての全体的な順位付けスコアを算出するように、前記コンピュータープログラムの前記プログラムモジュールにより誘導される、システム。
  17. 候補変換プログラムの順位付けの前に前記順位付け体系を確立するためのプログラムモジュールをさらに含み、各順位付け体系は前記部分表現が、ユーザーによって入力される入力文字列から、前記1つまたは複数のユーザー供給される入力−出力例の各々と調和する、ユーザー所望の形式で出力文字列を生成することができるプログラムの一部である尤度を示す尤度スコアを生成し、前記順位付け体系確立プログラムモジュールが、正規表現、位置表現、アトミック表現、および連結表現の各々をこの順序で順位付けする前記順位付け体系を確立するためのサブモジュールを含み、部分表現は、正規表現または位置表現またはアトミック表現または連結表現のいずれかである、請求項16に記載のシステム。
  18. 順位付け体系が確立された前記候補変換プログラムの各部分表現について、前記部分表現のために確立された前記順位付け体系を使用して尤度スコアを確立する前記プログラムモジュールは、
    正規表現および位置表現を頻度に基づくスコアにマッピングする辞書を採用することを含む、正規表現および位置表現のための頻度に基づく順位付けを使用することと、
    アトミック表現のための特徴に基づく順位付けを使用することであって、アトミック表現は定数文字列表現または部分文字列表現のどちらかであり、前記特徴に基づく順位付けは、
    前記アトミック表現が定数文字列表現または部分文字列表現のどちらかあるか特定することと、
    前記アトミック表現が定数文字列表現である場合はいつでも、所定の尤度スコア値を割り当てることと、
    前記アトミック表現が部分文字列表現である場合にはいつでも、尤度スコアを各部分文字列表現に割り当てるようにトレーニングされた機械学習分類子を使用して尤度スコア値を割り当てることと、を含む、アトミック表現のための特徴に基づく順位付けを使用することと、
    連結表現において見出される個々のアトミック表現についてのスコアを結合することを含む、連結表現を順位付けるためのパスに基づく順位付けを使用すること、のためのサブモジュールを含む、請求項17に記載のシステム。
  19. 1つまたは複数の変換プログラムの前記順位付けされたグループとして、所定の数の前記上位の候補変換プログラムを選択するためのプログラムモジュールをさらに含む、請求項16に記載のシステム。
JP2015537832A 2012-10-17 2013-10-17 文字列変換の帰納的合成のための順位付け Active JP6285943B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/653,581 2012-10-17
US13/653,581 US9002758B2 (en) 2012-10-17 2012-10-17 Ranking for inductive synthesis of string transformations
PCT/US2013/065497 WO2014062948A2 (en) 2012-10-17 2013-10-17 Ranking for inductive synthesis of string transformations

Publications (3)

Publication Number Publication Date
JP2016502701A JP2016502701A (ja) 2016-01-28
JP2016502701A5 JP2016502701A5 (ja) 2016-11-04
JP6285943B2 true JP6285943B2 (ja) 2018-02-28

Family

ID=49517708

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015537832A Active JP6285943B2 (ja) 2012-10-17 2013-10-17 文字列変換の帰納的合成のための順位付け

Country Status (6)

Country Link
US (1) US9002758B2 (ja)
EP (1) EP2909740B1 (ja)
JP (1) JP6285943B2 (ja)
KR (1) KR102129640B1 (ja)
CN (1) CN104737155B (ja)
WO (1) WO2014062948A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9002758B2 (en) * 2012-10-17 2015-04-07 Microsoft Technology Licensing, Llc Ranking for inductive synthesis of string transformations
US9880997B2 (en) * 2014-07-23 2018-01-30 Accenture Global Services Limited Inferring type classifications from natural language text
US9891895B2 (en) 2015-09-14 2018-02-13 Microsoft Technology Licensing, Llc User interaction models for disambiguation in programming-by-example
US10528328B2 (en) 2015-12-08 2020-01-07 Microsoft Technology Licensing, Llc Learning from input patterns in Programing-By-Example
US10095484B2 (en) 2015-12-15 2018-10-09 International Business Machines Corporation Automatic program synthesis using monadic second-order logic
US20180039693A1 (en) * 2016-08-05 2018-02-08 Microsoft Technology Licensing, Llc Learned data filtering
US10621195B2 (en) 2016-09-20 2020-04-14 Microsoft Technology Licensing, Llc Facilitating data transformations
US10706066B2 (en) 2016-10-17 2020-07-07 Microsoft Technology Licensing, Llc Extensible data transformations
US11620304B2 (en) 2016-10-20 2023-04-04 Microsoft Technology Licensing, Llc Example management for string transformation
US11256710B2 (en) 2016-10-20 2022-02-22 Microsoft Technology Licensing, Llc String transformation sub-program suggestion
US11892987B2 (en) 2016-10-20 2024-02-06 Microsoft Technology Licensing, Llc Automatic splitting of a column into multiple columns
US10776380B2 (en) 2016-10-21 2020-09-15 Microsoft Technology Licensing, Llc Efficient transformation program generation
US11372830B2 (en) 2016-10-24 2022-06-28 Microsoft Technology Licensing, Llc Interactive splitting of a column into multiple columns
US10846298B2 (en) 2016-10-28 2020-11-24 Microsoft Technology Licensing, Llc Record profiling for dataset sampling
US11163788B2 (en) 2016-11-04 2021-11-02 Microsoft Technology Licensing, Llc Generating and ranking transformation programs
US11170020B2 (en) 2016-11-04 2021-11-09 Microsoft Technology Licensing, Llc Collecting and annotating transformation tools for use in generating transformation programs
CN110352423B (zh) * 2016-11-04 2021-04-20 渊慧科技有限公司 使用噪声信道模型生成目标序列的方法、存储介质和系统
US10698571B2 (en) * 2016-12-29 2020-06-30 Microsoft Technology Licensing, Llc Behavior feature use in programming by example
US10713429B2 (en) 2017-02-10 2020-07-14 Microsoft Technology Licensing, Llc Joining web data with spreadsheet data using examples
US10782939B2 (en) * 2017-08-07 2020-09-22 Microsoft Technology Licensing, Llc Program predictor
US10831451B2 (en) * 2017-12-01 2020-11-10 Microsoft Technology Licensing, Llc Synthesized programming-by-example programs
US11132180B2 (en) * 2018-01-05 2021-09-28 Microsoft Technology Licensing, Llc Neural-guided deductive search for program synthesis
CN110610450B (zh) * 2018-06-15 2023-05-05 伊姆西Ip控股有限责任公司 数据处理方法、电子设备和计算机可读存储介质
WO2020245993A1 (ja) * 2019-06-06 2020-12-10 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置
EP3754564A1 (en) * 2019-06-21 2020-12-23 Fujitsu Limited Ising machine data input apparatus and method of inputting data into an ising machine
US11074048B1 (en) 2020-04-28 2021-07-27 Microsoft Technology Licensing, Llc Autosynthesized sublanguage snippet presentation
US11327728B2 (en) 2020-05-07 2022-05-10 Microsoft Technology Licensing, Llc Source code text replacement by example
US11900080B2 (en) 2020-07-09 2024-02-13 Microsoft Technology Licensing, Llc Software development autocreated suggestion provenance
US11875136B2 (en) 2021-04-01 2024-01-16 Microsoft Technology Licensing, Llc Edit automation using a temporal edit pattern
US11941372B2 (en) 2021-04-01 2024-03-26 Microsoft Technology Licensing, Llc Edit automation using an anchor target list

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642472A (en) * 1994-05-20 1997-06-24 Lucent Technologies Inc. Software discovery system
EP1388812A1 (en) 2002-07-04 2004-02-11 Ronald E. Dr. Kates Method for training a learning-capable system
US8799234B2 (en) * 2010-07-12 2014-08-05 Microsoft Corporation Semantic entity manipulation using input-output examples
JP2007200263A (ja) * 2006-01-25 2007-08-09 Yasushi Suga 漢字辞書検索装置
US8060880B2 (en) * 2007-05-04 2011-11-15 Microsoft Corporation System using backward inter-procedural analysis for determining alternative coarser grained lock when finer grained locks exceeding threshold
US8181163B2 (en) * 2007-05-07 2012-05-15 Microsoft Corporation Program synthesis and debugging using machine learning techniques
US8316345B2 (en) * 2007-06-01 2012-11-20 Microsoft Corporation Program abstraction based on program control
US8266598B2 (en) * 2008-05-05 2012-09-11 Microsoft Corporation Bounding resource consumption using abstract interpretation
US8719801B2 (en) * 2008-06-25 2014-05-06 Microsoft Corporation Timing analysis of concurrent programs
US8402439B2 (en) * 2008-06-27 2013-03-19 Microsoft Corporation Program analysis as constraint solving
US8271404B2 (en) * 2008-10-02 2012-09-18 Microsoft Corporation Template based approach to discovering disjunctive and quantified invariants over predicate abstraction
US8397221B2 (en) * 2008-10-07 2013-03-12 Microsoft Corporation Calculating resource bounds of programs manipulating recursive data structures and collections
US20100223213A1 (en) 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
US8249336B2 (en) * 2009-08-14 2012-08-21 Microsoft Corporation Learning string transformations from examples
US8752029B2 (en) * 2009-09-29 2014-06-10 Microsoft Corporation Computing a symbolic bound for a procedure
US8972930B2 (en) 2010-06-04 2015-03-03 Microsoft Corporation Generating text manipulation programs using input-output examples
US9613115B2 (en) 2010-07-12 2017-04-04 Microsoft Technology Licensing, Llc Generating programs based on input-output examples using converter modules
CN101976233B (zh) * 2010-09-30 2012-11-14 北京新媒传信科技有限公司 基于序列模式的新词发现方法
US10409892B2 (en) * 2011-01-26 2019-09-10 Microsoft Technology Licensing, Llc Formatting data by example
US8484550B2 (en) * 2011-01-27 2013-07-09 Microsoft Corporation Automated table transformations from examples
US8825572B2 (en) * 2011-02-01 2014-09-02 Microsoft Corporation Program synthesis with existentially and universally quantified belief propagation using probabilistic inference
US8650207B2 (en) * 2011-12-02 2014-02-11 Microsoft Corporation Inductive synthesis of table-based string transformations
US9002758B2 (en) * 2012-10-17 2015-04-07 Microsoft Technology Licensing, Llc Ranking for inductive synthesis of string transformations

Also Published As

Publication number Publication date
US20140108305A1 (en) 2014-04-17
US9002758B2 (en) 2015-04-07
WO2014062948A2 (en) 2014-04-24
WO2014062948A3 (en) 2014-11-20
EP2909740A2 (en) 2015-08-26
KR20150070171A (ko) 2015-06-24
EP2909740B1 (en) 2019-04-24
KR102129640B1 (ko) 2020-07-08
CN104737155B (zh) 2017-07-21
JP2016502701A (ja) 2016-01-28
CN104737155A (zh) 2015-06-24

Similar Documents

Publication Publication Date Title
JP6285943B2 (ja) 文字列変換の帰納的合成のための順位付け
US10310812B2 (en) Matrix ordering for cache efficiency in performing large sparse matrix operations
JP5939588B2 (ja) 関連ノードを探索する方法、並びに、そのコンピュータ、及びコンピュータ・プログラム
CN111522967B (zh) 知识图谱构建方法、装置、设备以及存储介质
US8312041B2 (en) Resource description framework network construction device and method using an ontology schema having class dictionary and mining rule
JP2016502701A5 (ja)
JP7397903B2 (ja) インテリジェント対話方法、装置、電子機器及び記憶媒体
JP2011258184A (ja) コンピュータ解析のためにテキスト文書を表現するためのグラフィカル・モデル
US10628413B2 (en) Mapping questions to complex database lookups using synthetic events
US11182681B2 (en) Generating natural language answers automatically
CN105701083A (zh) 文本表示方法和装置
CN112214584A (zh) 使用知识图利用实体关系来发现答案
JP5980520B2 (ja) 効率的にクエリを処理する方法及び装置
CN113516491B (zh) 推广信息展示方法、装置、电子设备及存储介质
EP2778971A1 (en) Rule triggering for search rule engine
JP2011227749A (ja) 略語完全語復元装置とその方法と、プログラム
WO2023103914A1 (zh) 文本情感分析方法、装置及计算机可读存储介质
US10872122B2 (en) Knowledge management system and process for managing knowledge
WO2022262632A1 (zh) 网页搜索方法、装置及存储介质
JPWO2011004524A1 (ja) テキストマイニング装置
CN109471969A (zh) 一种应用搜索方法、装置及设备
CN111723177B (zh) 信息提取模型的建模方法、装置及电子设备
CN107038148A (zh) Xml文档的解析方法及解析装置
JP2013218627A (ja) 構造化文書からの情報抽出方法、装置、及びプログラム
CN113033205A (zh) 实体链接的方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160914

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180202

R150 Certificate of patent or registration of utility model

Ref document number: 6285943

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250