JP2022538705A - Regular expression generation for negative examples with context - Google Patents

Regular expression generation for negative examples with context Download PDF

Info

Publication number
JP2022538705A
JP2022538705A JP2021539860A JP2021539860A JP2022538705A JP 2022538705 A JP2022538705 A JP 2022538705A JP 2021539860 A JP2021539860 A JP 2021539860A JP 2021539860 A JP2021539860 A JP 2021539860A JP 2022538705 A JP2022538705 A JP 2022538705A
Authority
JP
Japan
Prior art keywords
regular expression
data
character sequences
negative
user
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.)
Pending
Application number
JP2021539860A
Other languages
Japanese (ja)
Other versions
JPWO2020263675A5 (en
Inventor
マラック,マイケル
リーバス,ルイス・イー
クライダー,マーク・エル
Original Assignee
オラクル・インターナショナル・コーポレイション
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
Priority claimed from US16/904,298 external-priority patent/US11941018B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2022538705A publication Critical patent/JP2022538705A/en
Publication of JPWO2020263675A5 publication Critical patent/JPWO2020263675A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Abstract

生成された正規表現のための技術が開示される。いくつかの実施形態では、正規表現生成器は、1つまたは複数のキャラクタシーケンスを含む入力データを受け取ることができる。正規表現生成器は、キャラクタシーケンスを正規表現コードおよび/またはスパンデータ構造のセットに変換することができる。正規表現生成器は、正規表現コードおよび/またはスパンのセットによって共有される最長共通サブシーケンスを識別することができ、最長共通サブシーケンスに基づいて正規表現を生成することができる。正規表現の生成には陰性例を用いることができる。正規表現を生成するために、陰性例からのコンテキストを判断することができる。Techniques for generated regular expressions are disclosed. In some embodiments, a regular expression generator can receive input data that includes one or more character sequences. A regular expression generator can convert a character sequence into a set of regular expression codes and/or span data structures. A regular expression generator can identify the longest common subsequence shared by a set of regular expression codes and/or spans and can generate a regular expression based on the longest common subsequence. Negative examples can be used to generate regular expressions. To generate regular expressions, context from negative examples can be determined.

Description

関連出願の相互参照
本出願は、2019年6月11日に提出された、「USER INTERFACE FOR REGULAR EXPRESSION GENERATION(正規表現生成のためのユーザインターフェイス)」と題される米国特許出願第16/438,327号の一部係属であり、米国特許法第119条(e)に基づき、2018年6月13日に提出された「AUTOMATED GENERATION OF REGULAR EXPRESSIONS(自動化された正規表現生成)」と題される米国仮特許出願第62/684,498号に対する優先権を主張し、および米国特許法第119条(e)に基づき、2018年10月22日に提出された「AUTOMATED GENERATION OF REGULAR EXPRESSIONS(自動化された正規表現生成)」と題される米国仮特許出願第62/749,001号に対する優先権を主張する。本出願はまた、米国特許法第119条(e)に基づき、2019年6月24日に提出された「AUTOMATED GENERATION OF REGULAR EXPRESSIONS(正規表現の自動生成)」と題される米国仮特許出願第62/865,797号に対する優先権を主張する。それらの全内容は、あらゆる目的のために参照により本明細書に組み込まれる。
CROSS REFERENCE TO RELATED APPLICATIONS This application is related to U.S. patent application Ser. 327, entitled "AUTOMATED GENERATION OF REGULAR EXPRESSIONS," filed June 13, 2018 under 35 U.S.C. 119(e); Claiming priority to U.S. Provisional Patent Application No. 62/684,498 and under 35 U.S.C. No. 62/749,001 entitled "Regular Expression Generation". 119(e), filed Jun. 24, 2019, entitled "AUTOMATED GENERATION OF REGULAR EXPRESSIONS." 62/865,797 is claimed. their entire contents are incorporated herein by reference for all purposes.

背景
ビッグデータ解析システムは、予測解析、ユーザ挙動解析、および他の高度なデータ解析に使用することができる。しかしながら、有用な結果を提供するために任意のデータ解析が効果的に実行される前に、最初のデータセットは、クリーンかつキュレートされたデータセットにフォーマットされる必要があり得る。このデータオンボード化は、多くの場合、さまざまな異なるデータソースおよび/またはデータストリームからのデータが単一のデータリポジトリにコンパイルされ得るクラウドベースのデータリポジトリならびに他のビッグデータシステムに対する課題を提示する。そのようなデータは、複数の異なるフォーマットの構造化データ、異なるデータモデルに従った半構造化データ、およびさらには非構造化データを含み得る。そのようなデータのリポジトリは、多くの場合、さまざまな異なるフォーマットおよび構造内のデータ表現を含み、重複データおよび誤ったデータを含む場合もある。これらのデータリポジトリが報告、予測モデリング、および他の解析タスクのために解析されるとき、初期データセットの低信号対雑音比は、不正確であるかまたは有用でない結果につながり得る。
Background Big data analytics systems can be used for predictive analytics, user behavior analytics, and other advanced data analytics. However, before any data analysis can be effectively performed to provide useful results, the initial dataset may need to be formatted into a clean and curated dataset. This data onboarding often presents a challenge to cloud-based data repositories and other big data systems where data from a variety of different data sources and/or data streams can be compiled into a single data repository. . Such data may include structured data in multiple different formats, semi-structured data according to different data models, and even unstructured data. Such data repositories often contain data representations in a variety of different formats and structures, and may contain duplicate and erroneous data. When these data repositories are analyzed for reporting, predictive modeling, and other analytical tasks, low signal-to-noise ratios in initial data sets can lead to inaccurate or unhelpful results.

データフォーマッティングおよび前処理の問題に対する多くの現在の解決策は、データ解析を実行する前にデータを共通のフォーマットに操作するために、データを浄化およびキュレートするための手動およびアドホック処理を含む。これらの手動処理は、特定のより小さいデータセットに対しては有効であり得るが、そのような処理は、大規模なデータセットを前処理およびフォーマットすることを試みる場合は、非効率的かつ非実用的であり得る。 Many current solutions to data formatting and preprocessing problems involve manual and ad-hoc processes to cleanse and curate data in order to manipulate it into a common format before performing data analysis. While these manual processes can be effective for certain smaller data sets, such processes are inefficient and inefficient when attempting to preprocess and format large data sets. can be practical.

概要
本明細書で説明される態様は、正規表現を生成するためのさまざまな技法を提供する。本明細書で使用される場合、「正規表現」は、より長い入力テキストストリング内のマッチを検索するために使用され得る、パターンを定義するキャラクタのシーケンスを指し得る。いくつかの実施形態では、正規表現は、記号のワイルドカードマッチング言語を使用して構成されてもよく、正規表現によって定義されたパターンは、キャラクタストリングとマッチするよう、および/または入力として与えられるキャラクタストリングから情報を抽出するよう、使用されてもよい。本明細書で説明するさまざまな実施形態では、データ処理システムとして実現される正規表現生成器を使用して、入力テキストデータを受信および表示し、クライアントユーザインターフェイスを介して入力テキストの特定のキャラクタサブセットの選択を受け取り、次いで、選択されたキャラクタサブセットに基づいて1つまたは複数の正規表現を生成することができる。1つまたは複数の正規表現を生成した後、正規表現エンジンを使用して、正規表現のパターンを1つまたは複数のデータセットに対してマッチさせることができる。さまざまな実施形態において、正規表現にマッチするデータは、抽出、再フォーマット、または修正などされてもよい。場合によっては、正規表現にマッチするデータに基づいて、追加の列、テーブル、または他のデータセットが作成されてもよい。
Overview Aspects described herein provide various techniques for generating regular expressions. As used herein, a "regular expression" may refer to a sequence of characters that define a pattern that may be used to search for matches within longer input text strings. In some embodiments, a regular expression may be constructed using a symbolic wildcard matching language, where the pattern defined by the regular expression is matched against a string of characters and/or given as input. It may be used to extract information from character strings. Various embodiments described herein use a regular expression generator, implemented as a data processing system, to receive and display input text data and generate specific character subsets of the input text via a client user interface. , and then generate one or more regular expressions based on the selected character subset. After generating one or more regular expressions, a regular expression engine can be used to match patterns of the regular expressions against one or more data sets. In various embodiments, data matching the regular expression may be extracted, reformatted, modified, or the like. In some cases, additional columns, tables, or other data sets may be created based on the data matching the regular expression.

本明細書で説明するいくつかの態様によれば、データ処理システムを介して実現される正規表現生成器は、1つまたは複数の正規表現コードの、異なるセットによって共有される、判断された最長共通サブシーケンス(LCS)に基づいて、正規表現を生成することができる。正規表現コード(カテゴリコードとも称され得る)は、たとえば、英語アルファベットの文字に対するL、数字に対するN、空白に対するZ、句読点に対するP、および他の記号に対するSを含み得る。1つまたは複数の正規表現コードの各セットは、ユーザインターフェイスを介して入力データとして受信された1つまたは複数のキャラクタの異なるシーケンスから変換され得る。LCSから除外される正規表現コードは、任意選択および/または代替として表され得る。いくつかの実施形態では、正規表現コードは、正規表現コードの最小発生数に関連付けられてもよい。追加または代替として、正規表現コードは、正規表現コードの最大発生数に関連付けられてもよい。たとえば、あるカテゴリコードのセットは、LCSの特定の部分が、ある文字を、もしあったとしてもせいぜい1回含む旨を示すよう、L<0,1>を含んでもよい。以下でより詳細に説明するように、入力データを中間正規表現コード(IREC)として一般化することは、非常にわずかな入力データを使用することを含むさまざまな技術的利点を提供し得、それは、まだ見られていないデータにおける偽陽性マッチまたは偽陰性マッチに屈しない正規表現のほぼ即時的な生成を可能にする。 According to some aspects described herein, a regular expression generator implemented via a data processing system provides a determined longest length shared by different sets of one or more regular expression codes. A regular expression can be generated based on the common subsequence (LCS). Regular expression codes (which may also be referred to as category codes) may include, for example, L for letters of the English alphabet, N for numbers, Z for spaces, P for punctuation, and S for other symbols. Each set of one or more regular expression codes may be converted from a different sequence of one or more characters received as input data via the user interface. Regular expression codes that are excluded from the LCS may be expressed as optional and/or alternative. In some embodiments, a regular expression code may be associated with a minimum number of occurrences of the regular expression code. Additionally or alternatively, the regular expression code may be associated with a maximum number of occurrences of the regular expression code. For example, a set of category codes may include L<0,1> to indicate that a particular portion of the LCS contains a character at most once, if any. As explained in more detail below, generalizing the input data as an Intermediate Regular Expression Code (IREC) can offer various technical advantages, including using very little input data, which is , allows near-instantaneous generation of regular expressions that are immune to false-positive or false-negative matches in unseen data.

本明細書で説明される追加の態様によれば、正規表現は、3つ以上のキャラクタシーケンスを含む入力データに基づいて生成され得る。3つ以上のキャラクタシーケンスが入力データとして識別される場合、キャラクタシーケンスのLCSを識別する正規表現生成器は、ランタイムの指数関数的な増加をもたらし得る。すべてのキャラクタシーケンスのLCSを充分に機能する態様で識別するために、正規表現生成器は、2つのキャラクタシーケンスの各別個の組み合わせに対してLCSアルゴリズムを実行してもよい。LCSアルゴリズムの結果に基づいて、全結合グラフを生成してもよく、各グラフノードは異なるキャラクタシーケンスを表し、各グラフエッジの長さは、グラフエッジを定義するノードのLCSに対応する。次いで、全結合グラフに対して最小スパニングツリーの深さ優先トラバースを実行することによって、キャラクタシーケンスを選択する順序を判断してもよい。 According to additional aspects described herein, regular expressions may be generated based on input data that includes sequences of three or more characters. If three or more character sequences are identified as input data, a regular expression generator that identifies the LCS of character sequences can provide an exponential increase in runtime. In order to identify the LCS of all character sequences in a fully functional manner, the regular expression generator may run the LCS algorithm on each distinct combination of two character sequences. Based on the results of the LCS algorithm, a fully connected graph may be generated, each graph node representing a different sequence of characters, and the length of each graph edge corresponding to the LCS of the node defining the graph edge. The order in which character sequences are selected may then be determined by performing a depth-first traversal of the minimum spanning tree over the fully connected graph.

本明細書で説明されるさらなる態様は、陽性キャラクタシーケンス例および陰性キャラクタシーケンス例の両方を含む入力に基づいて正規表現を生成することに関する。陽性例は、生成されるべき正規表現にマッチするキャラクタのシーケンスを指し得、陰性例は、生成されるべき正規表現にマッチしないキャラクタのシーケンスを指し得る。いくつかの実施形態では、陽性例および陰性例の両方が受け取られた場合、正規表現生成器は、弁別子、つまり陽性例を陰性例から区別する1つまたは複数のキャラクタの最短サブシーケンスを識別してもよい。選択された弁別子は、(たとえばカテゴリコードで表現された)最短シーケンスであってもよく、陽性または陰性のいずれかであってもよく、したがって、陽性例はマッチし、陰性例はマッチしないことになる。次いで、弁別子は、正規表現生成器によって生成される正規表現にハードコード化されてもよい。場合によっては、最短サブシーケンスは、陰性例のプレフィックス部分またはサフィックス部分に含まれてもよい。 A further aspect described herein relates to generating a regular expression based on input that includes both example positive character sequences and example negative character sequences. Positive examples may refer to sequences of characters that match the regular expression to be generated, and negative examples may refer to sequences of characters that do not match the regular expression to be generated. In some embodiments, when both positive and negative examples are received, the regular expression generator identifies a discriminator, the shortest subsequence of one or more characters that distinguishes positive from negative examples. You may The selected discriminator may be the shortest sequence (e.g., expressed as a category code) and may be either positive or negative, thus matching positive examples and not matching negative examples. become. The discriminator may then be hard-coded into the regular expression generated by the regular expression generator. In some cases, the shortest subsequence may be included in the negative example prefix or suffix portion.

本明細書で説明されるさらなる態様は、正規表現を生成するために入力データが提供され得る1つまたは複数のユーザインターフェイスに関する。いくつかの実施形態では、ユーザインターフェイスは、正規表現生成サーバに通信可能に結合されたクライアントデバイスに表示されてもよい。ユーザインターフェイスは、サーバによって、クライアントデバイスによって、またはサーバおよびクライアントにおいて実行されるソフトウェアコンポーネントの組み合わせによってプログラム的に生成され得る。ユーザインターフェイスを介して受信された入力データは、陽性例または陰性例を表し得る1つまたは複数のキャラクタシーケンスのユーザ選択に対応し得る。場合によっては、ユーザインターフェイスは、第2のキャラクタシーケンス内の第1のキャラクタシーケンスの選択を含む入力データをサポートしてもよい。たとえば、ユーザは、より大きな、以前に強調表示されたキャラクタシーケンス内の、1つまたは複数のキャラクタを強調表示することができ、第2のユーザ選択は、より大きな第1のユーザ選択のためのコンテキストを提供することができる。これは、入力データが、より高い特異性で正規表現生成器に提供されることを可能にし、正規表現生成器に「コンテキスト」を提供して、それが、偽陽性を回避する正規表現を生成できるようにすることを可能にする。ユーザインターフェイスを介してユーザがキャラクタシーケンスを選択することに応答して、正規表現生成器は正規表現を生成して表示してもよい。たとえば、ユーザがキャラクタの第1のシーケンスを強調表示すると、正規表現生成器は、キャラクタの第1のシーケンスにマッチする正規表現、ならびに他の同様のキャラクタシーケンス(たとえば、マッチするシーケンスについてユーザの意図と整合する)を生成し、表示することができる。ユーザがキャラクタの第2のシーケンスを強調表示すると、正規表現生成器は、キャラクタの第1のシーケンスとキャラクタの第2のシーケンスとの両方を包含する更新された正規表現を生成してもよい。次いで、ユーザが(たとえば第1のシーケンスまたは第2のシーケンスのいずれか内で)キャラクタの第3のシーケンスを強調表示すると、正規表現生成器は正規表現を再び更新してもよいなどとなる。 A further aspect described herein relates to one or more user interfaces through which input data may be provided to generate regular expressions. In some embodiments, the user interface may be displayed on a client device communicatively coupled to the regular expression generation server. The user interface may be generated programmatically by a server, by a client device, or by a combination of software components running on the server and client. Input data received via the user interface may correspond to user selection of one or more character sequences that may represent positive or negative examples. In some cases, the user interface may support input data including selection of a first character sequence within a second character sequence. For example, a user can highlight one or more characters in a larger, previously highlighted sequence of characters, and a second user selection is for a first, larger user selection. Can provide context. This allows the input data to be provided to the regular expression generator with higher specificity, providing a "context" to the regular expression generator that produces a regular expression that avoids false positives. make it possible. A regular expression generator may generate and display a regular expression in response to a user selecting a character sequence via the user interface. For example, when a user highlights a first sequence of characters, the regular expression generator generates regular expressions that match the first sequence of characters, as well as other similar sequences of characters (e.g., the user's intent for matching sequences). ) can be generated and displayed. When the user highlights the second sequence of characters, the regular expression generator may generate an updated regular expression that includes both the first sequence of characters and the second sequence of characters. Then, when the user highlights a third sequence of characters (eg, within either the first sequence or the second sequence), the regular expression generator may update the regular expression again, and so on.

本明細書で説明される追加の態様によれば、正規表現は、1つまたは複数の入力シーケンス例からの最長共通サブシーケンスに基づいて生成され得るが、例のいくつかにのみ存在するキャラクタを取り扱うこともできる。いくつかの入力例においてのみ存在するキャラクタを取り扱うために、正規表現コードの最小発生数および最大発生数の両方が追跡されるスパンを定義してもよい。所与の入力例のすべてにスパンが存在しない可能性がある場合、最小発生数はゼロにセットされてもよい。次いで、これらの最小数および最大数は、正規表現マルチプリシティ構文にマッピングされ得る。最長共通サブシーケンス(LCS)アルゴリズムを、すべての入力例には現れない「任意選択の」スパン(たとえばゼロの最小長さ)を含む、入力例から導出されたキャラクタのスパン上で実行してもよい。以下で説明するように、連続するスパンは、LCSアルゴリズムの実行中にマージされてもよい。そのような場合において、一緒に担持されている追加の任意選択のスパンが連続して出現することに終わるとき、LCSアルゴリズムは、それらの任意選択のスパン上でも同様に再帰的に実行されてもよい。 According to additional aspects described herein, a regular expression may be generated based on the longest common subsequence from one or more input sequence examples, but with characters present in only some of the examples. can also be handled. To handle characters that are only present in some input examples, a span may be defined over which both the minimum and maximum number of occurrences of the regular expression code are tracked. The minimum number of occurrences may be set to zero if spans may not exist for all given input examples. These minimum and maximum numbers can then be mapped to a regular expression multiplicity syntax. The longest common subsequence (LCS) algorithm can be run on spans of characters derived from input examples, including "optional" spans (e.g. minimum length of zero) that do not appear in all input examples. good. Consecutive spans may be merged during execution of the LCS algorithm, as described below. In such cases, when additional optional spans carried together result in successive occurrences, the LCS algorithm may be recursively performed on those optional spans as well. good.

本明細書で説明されるさらなる態様は、正規表現生成器によって実行されるLCSアルゴリズムが複数回実行されて、「正しい」正規表現(たとえば、すべての所与の陽性例と適切にマッチし、すべての所与の陰性例を適切に除外する正規表現)を生成してもよく、および/または最も望ましいもしくは最適な正規表現が選択され得る複数の正しい正規表現を生成してもよい、コンビナトリック探索に関する。いくつかの実施形態では、LCSアルゴリズムは一般に、正規表現を生成するために、入力例において右から左に実行され得る。しかしながら、比較の目的のために、および代替的な正規表現を見つけるために、LCSアルゴリズムは、入力例において逆方向に(たとえば左から右への方向で)別途実行されてもよい。たとえば、ユーザ入力として受信された例示的なキャラクタシーケンスは、それらがLCSアルゴリズムを通過する前に反転されてもよく、次いで、LCSアルゴリズムからの結果を、(元のテキストフラグメントを含んで)反転して戻してもよい。さらに、いくつかの実施形態では、LCSアルゴリズムは、正規表現生成器によって、複数回、通常のキャラクタシーケンス順序および逆の順序の両方で、行の始まりでの位置指定、行の終わりでの位置固定、行の始まりまたは終わりでの位置指定なしで、実行されてもよい。したがって、場合によっては、LCSアルゴリズムは、少なくともこれら6回実行されてもよく、最短の成功裡な正規表現が、これらの実行から選択されてもよい。 A further aspect described herein is that the LCS algorithm performed by the regular expression generator is run multiple times to properly match all given positive examples, all and/or generate multiple correct regular expressions from which the most desirable or optimal regular expression can be selected, combinatoric search Regarding. In some embodiments, the LCS algorithm may generally be run from right to left on the input examples to generate the regular expression. However, for comparison purposes and to find alternative regular expressions, the LCS algorithm may be run separately on the input examples in reverse (eg, left-to-right direction). For example, exemplary character sequences received as user input may be reversed before they are passed through the LCS algorithm, and then the results from the LCS algorithm are reversed (including the original text fragment). You can put it back. Further, in some embodiments, the LCS algorithm is generated by the regular expression generator multiple times, positional at the beginning of the line, fixed at the end of the line, both in normal character sequence order and in reverse order. , may be executed without positioning at the beginning or end of a line. Therefore, in some cases, the LCS algorithm may be run at least these six times, and the shortest successful regular expression may be selected from these runs.

さまざまな実施形態が実現され得る、正規表現を生成するための例示的な分散システムの構成要素を示すブロック図である。1 is a block diagram illustrating components of an exemplary distributed system for generating regular expressions in which various embodiments may be implemented; FIG. 本明細書で説明する1つまたは複数の実施形態による、ユーザインターフェイスを介して受信された入力に基づいて正規表現を生成するための処理を示すフローチャートである。[0014] Figure 4 is a flowchart illustrating a process for generating regular expressions based on input received via a user interface, according to one or more embodiments described herein; 本明細書で説明する1つまたは複数の実施形態による、正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムを使用して正規表現を生成するための処理を示すフローチャートである。FIG. 4 is a flowchart illustrating a process for generating a regular expression using the longest common subsequence (LCS) algorithm on a set of regular expression codes, according to one or more embodiments described herein. 本明細書で説明する1つまたは複数の実施形態による、正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムを使用して、2つのキャラクタシーケンス例に基づいて正規表現を生成するための例示的な図である。For generating a regular expression based on two example character sequences using the longest common subsequence (LCS) algorithm on a set of regular expression codes according to one or more embodiments described herein: 1 is an exemplary diagram; FIG. 本明細書で説明する1つまたは複数の実施形態による、より大きな正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムを使用して正規表現を生成するための処理を示すフローチャートである。FIG. 4 is a flowchart illustrating a process for generating regular expressions using the longest common subsequence (LCS) algorithm over a larger set of regular expression codes, according to one or more embodiments described herein. 本明細書で説明する1つまたは複数の実施形態による、正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムを使用して、5つのキャラクタシーケンス例に基づいて正規表現を生成するための例示的な図である。For generating a regular expression based on five example character sequences using the longest common subsequence (LCS) algorithm on a set of regular expression codes according to one or more embodiments described herein: 1 is an exemplary diagram; FIG. 本明細書で説明する1つまたは複数の実施形態による、より大きな正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムについて実行の順序を判断するための処理を示すフローチャートである。FIG. 10 is a flow chart illustrating a process for determining the order of execution for the longest common subsequence (LCS) algorithm on a larger set of regular expression codes, according to one or more embodiments described herein; FIG. 本明細書に記載する1つまたは複数の実施形態による、より大きな正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムについて実行の順序を判断するために用いられる、全結合グラフを示す。FIG. 11 illustrates a total join graph used to determine the order of execution for the longest common subsequence (LCS) algorithm on a larger set of regular expression codes, according to one or more embodiments described herein; FIG. 本明細書に記載する1つまたは複数の実施形態による、より大きな正規表現コードのセット上で最長共通サブシーケンス(LCS)アルゴリズムについて実行の順序を判断するために用いられる、全結合グラフの最小スパニングツリー表現を示す。Minimum Spanning of All Connective Graphs Used to Determine Execution Order for the Longest Common Subsequence (LCS) Algorithm on a Larger Set of Regular Expression Codes, According to One or More Embodiments Described herein Shows a tree representation. 本明細書に記載する1つまたは複数の実施形態による、陽性キャラクタシーケンス例および陰性キャラクタシーケンス例に基づいて正規表現を生成するための処理を示すフローチャートである。4 is a flowchart illustrating a process for generating regular expressions based on example positive and negative character sequences, according to one or more embodiments described herein. 本明細書に記載する1つまたは複数の実施形態による、陽性キャラクタシーケンス例に基づく正規表現の生成を示す例示的なユーザインターフェイス画面である。5 is an example user interface screen showing the generation of regular expressions based on example positive character sequences in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、陽性キャラクタシーケンス例および陰性キャラクタシーケンス例に基づく正規表現の生成を示す例示的なユーザインターフェイス画面である。4 is an exemplary user interface screen showing the generation of regular expressions based on example positive and negative character sequences in accordance with one or more embodiments described herein; 本明細書で説明する1つまたは複数の実施形態による、ユーザインターフェイス内で受信されるユーザデータ選択に基づいて正規表現を生成するための処理を示すフローチャートである。[0014] Figure 4 is a flowchart illustrating a process for generating regular expressions based on user data selections received within a user interface, according to one or more embodiments described herein; 本明細書で説明する1つまたは複数の実施形態による、ユーザインターフェイス内で受信されるユーザデータ選択を介して、正規表現を生成し、キャプチャグループに基づいてデータを抽出する処理を示すフローチャートである。FIG. 4 is a flowchart illustrating a process of generating regular expressions and extracting data based on capturing groups via user data selections received within a user interface, according to one or more embodiments described herein; . 本明細書に記載する1つまたは複数の実施形態によるテーブル形式データディスプレイを示す例示的なユーザインターフェイス画面である。5 is an exemplary user interface screen showing a tabular data display in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからのデータの選択に基づく正規表現およびキャプチャグループの生成を示す例示的なユーザインターフェイス画面である。5 is an exemplary user interface screen showing generation of regular expressions and capture groups based on selection of data from a tabular display in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからのデータの選択に基づく正規表現およびキャプチャグループの生成を示す例示的なユーザインターフェイス画面である。5 is an exemplary user interface screen showing generation of regular expressions and capture groups based on selection of data from a tabular display in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからの陽性例および陰性例の選択に基づく正規表現の生成を示す例示的なユーザインターフェイス画面である。4 is an exemplary user interface screen showing generation of a regular expression based on selection of positive and negative examples from a tabular display in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからの陽性例および陰性例の選択に基づく正規表現の生成を示す例示的なユーザインターフェイス画面である。4 is an exemplary user interface screen showing generation of a regular expression based on selection of positive and negative examples from a tabular display in accordance with one or more embodiments described herein; 本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからのデータの選択に基づく正規表現およびキャプチャグループの生成を示す別の例示的なユーザインターフェイス画面である。5 is another exemplary user interface screen showing generation of regular expressions and capturing groups based on selection of data from a tabular display in accordance with one or more embodiments described herein; 本明細書で説明する1つまたは複数の実施形態による、最長共通サブシーケンス(LCS)アルゴリズムを使用して、任意選択のスパンを含む、正規表現を生成するための処理を示すフローチャートである。FIG. 10 is a flowchart illustrating a process for generating regular expressions, including optional spans, using the longest common subsequence (LCS) algorithm, according to one or more embodiments described herein. 本明細書で説明する1つまたは複数の実施形態による、最長共通サブシーケンス(LCS)アルゴリズムを使用して、任意選択のスパンを含む、正規表現を生成するための例示的な図である。FIG. 4 is an exemplary diagram for generating regular expressions, including optional spans, using the longest common subsequence (LCS) algorithm according to one or more embodiments described herein; 本明細書で説明する1つまたは複数の実施形態による、最長共通サブシーケンス(LCS)アルゴリズムのコンビナトリックな実行に基づいて正規表現を生成するための処理を示すフローチャートである。[0014] Figure 4 is a flowchart illustrating a process for generating regular expressions based on a combinatorial execution of the longest common subsequence (LCS) algorithm, according to one or more embodiments described herein; 本発明のさまざまな実施形態が実現され得る例示的な分散システムの構成要素を示すブロック図である。1 is a block diagram illustrating components of an exemplary distributed system in which various embodiments of the invention may be implemented; FIG. 本発明の実施形態によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の構成要素を示すブロック図である。1 is a block diagram illustrating components of a system environment in which services provided by embodiments of the present invention may be provided as cloud services; FIG. 本発明の実施形態が実現され得る例示的なコンピュータシステムを示すブロック図である。1 is a block diagram of an exemplary computer system upon which embodiments of the invention may be implemented; FIG. いくつかの例示的実施形態による、正規表現生成器を示す。4 illustrates a regular expression generator, according to some example embodiments; いくつかの例示的実施形態による、分割コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing a split command, according to some example embodiments; いくつかの例示的実施形態による、分割コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing a split command, according to some example embodiments; いくつかの例示的実施形態による、分割コマンドの結果をデータセットに表示するユーザインターフェイスを示す。4 illustrates a user interface displaying the results of a split command on a dataset, according to some example embodiments; いくつかの例示的な実施形態による、分割コマンドを実行するための方法のフローチャートを示す。4 illustrates a flow chart of a method for executing a split command, according to some exemplary embodiments; いくつかの例示的実施形態による、削除コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing a delete command, according to some exemplary embodiments; いくつかの例示的実施形態による、データセット上に削除コマンドの結果を表示するユーザインターフェイスを示す。4 illustrates a user interface displaying the results of a delete command on a dataset, according to some example embodiments; いくつかの例示的な実施形態による、削除コマンドを実行するための方法のフローチャートを示す。4 depicts a flowchart of a method for executing a delete command, according to some exemplary embodiments; いくつかの例示的実施形態による、難読化コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing obfuscation commands, according to some example embodiments; いくつかの例示的実施形態による、データセット上に難読化コマンドの結果を表示するユーザインターフェイスを示す。4 illustrates a user interface displaying results of an obfuscation command on a dataset, according to some example embodiments; いくつかの例示的実施形態による、難読化コマンドを実行するための方法のフローチャートを示す。4 illustrates a flowchart of a method for executing obfuscation commands, according to some example embodiments; いくつかの例示的実施形態による、置換コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing replacement commands, according to some exemplary embodiments; いくつかの例示的実施形態による、置換コマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing replacement commands, according to some exemplary embodiments; いくつかの例示的実施形態による、置換コマンドの結果をデータセットに表示するユーザインターフェイスを示す。4 illustrates a user interface displaying the results of a replace command in a dataset, according to some example embodiments; いくつかの例示的な実施形態による、置換コマンドを実行するための方法のフローチャートを示す。4 depicts a flow chart of a method for executing a replacement command, according to some exemplary embodiments; いくつかの例示的実施形態による、行フィルタリングコマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing row filtering commands, according to some example embodiments; いくつかの例示的実施形態による、行フィルタリングコマンドを実現するためのユーザインターフェイスを示す。4 illustrates a user interface for implementing row filtering commands, according to some example embodiments; いくつかの例示的実施形態による、データセット上に行フィルタリングコマンドの結果を表示するユーザインターフェイスを示す。4 illustrates a user interface displaying results of a row filtering command on a dataset, according to some example embodiments; いくつかの例示的な実施形態による、行フィルタリングコマンドを実行するための方法のフローチャートを示す。4 illustrates a flowchart of a method for executing row filtering commands, according to some exemplary embodiments; いくつかの例示的実施形態による、単一レベルモードでデータセットのビューを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying a view of a dataset in single-level mode, according to some example embodiments; いくつかの例示的実施形態による、ネスト化された完全制御モードで強調表示されたデータを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying highlighted data in a nested full control mode, according to some example embodiments; いくつかの例示的実施形態による、ネスト化された完全制御モードで強調表示されたデータを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying highlighted data in a nested full control mode, according to some example embodiments; いくつかの例示的な実施形態による、例を提供するためのユーザインターフェイスを示す。4 illustrates a user interface for providing an example, according to some example embodiments; いくつかの例示的実施形態による、更新された生成されたレゲックスを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying updated generated regex, according to some example embodiments; いくつかの例示的実施形態による、代替データ強調表示を表示するユーザインターフェイスを示す。4 illustrates a user interface displaying alternative data highlighting, according to some example embodiments; いくつかの例示的実施形態による、更新された生成されたレゲックスを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying updated generated regex, according to some example embodiments; いくつかの例示的な実施形態による、多重強調表示を実行するための方法のフローチャートである。4 is a flowchart of a method for performing multiple highlighting, according to some example embodiments; いくつかの例示的な実施形態による、陰性例を提供するための方法のフローチャートを示す。4 illustrates a flowchart of a method for providing negative examples, according to some exemplary embodiments; いくつかの例示的な実施形態による、陰性例からコンテキストを判断するための方法のフローチャートを示す。4 depicts a flow chart of a method for determining context from negative examples, according to some example embodiments. いくつかの例示的実施形態による、スパン強調表示整列に基づいて正規表現を生成するための図を示す。FIG. 4 illustrates a diagram for generating regular expressions based on span highlighting alignment, according to some example embodiments; いくつかの例示的実施形態による、スパン強調表示整列を実行するための方法のフローチャートを示す。4 illustrates a flow chart of a method for performing span highlight alignment, according to some exemplary embodiments; いくつかの例示的実施形態による、スパンを追跡する方法のフローチャートを示す。4 illustrates a flowchart of a method for tracking spans, according to some example embodiments; いくつかの例示的実施形態による、句読点スパンおよび記号スパンを表示するユーザインターフェイスを示す。4 illustrates a user interface displaying punctuation spans and symbol spans, according to some example embodiments;

詳細な説明
以下の記載では、説明を目的として、本発明のさまざまな実施形態の完全な理解のために、多数の具体的な詳細が記載される。しかしながら、本発明の実施形態は、これらの具体的な詳細のいくつかを伴わずに実施され得ることが当業者には明白であろう。他の例では、周知の構造およびデバイスがブロック図の形で示される。
DETAILED DESCRIPTION In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments of the invention. However, it will be apparent to one skilled in the art that embodiments of the invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.

以下の説明は、例示的な実施形態のみを提供するものであり、本開示の範囲、適用可能性、または構成を限定することを意図したものではない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実施するための実施可能な説明を当業者に提供するであろう。特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および構成にさまざまな変更を加えることができることを理解されたい。 The following description provides exemplary embodiments only and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing the exemplary embodiments. It is to be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the claims.

具体的な詳細が、以下の説明において、実施の形態の十分な理解を与えるよう与えられる。しかしながら、当業者には、実施の形態はこれらの具体的な詳細なしに実施されてもよいことが理解される。たとえば、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、実施の形態を不必要な詳細で曖昧にしないように、ブロック図形式におけるコンポーネントとして示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造および技術は、実施の形態を曖昧にすることを回避するために、不必要な詳細なしに示され得る。 Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by those skilled in the art that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes and other components may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.

さらに、個々の実施の形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載され得ることが注記される。フローチャートは動作をシーケンシャルなプロセスとして記載するかもしれないが、動作の多くは並列または同時に実行され得る。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを含み得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合では、その終結は、その関数が呼出関数または主関数に戻ることに対応し得る。 Additionally, it is noted that individual embodiments can be described as processes depicted as flowcharts, flow diagrams, data flow diagrams, structural diagrams, or block diagrams. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. Additionally, the order of operations may be rearranged. A process is terminated when its operations are completed, but may include additional steps not included in the figure. A process may correspond to a method, function, procedure, subroutine, subprogram, or the like. Where a process corresponds to a function, its termination may correspond to the function returning to its calling or main function.

「コンピュータ読取可能媒体」という語は、命令および/もしくはデータを記憶するか、含むか、または担持することができるポータブルまたは固定された記憶装置、光記憶装置、ならびにさまざまな他の媒体のような非一時的媒体を含むが、それらに限定はされない。コードセグメントまたはコンピュータ実行可能な命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラム文の任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータまたはメモリコンテンツを受け渡すおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または伝送されてもよい。 The term "computer-readable medium" means such media as portable or fixed storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and/or data. Including, but not limited to, non-transitory media. Code segments or computer-executable instructions may represent procedures, functions, subprograms, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuit by passing and/or receiving information, data, arguments, parameters or memory content. Information, arguments, parameters, data, etc. may be passed, transferred, or transmitted via any suitable means, including memory sharing, message passing, token passing, network transmission, and the like.

さらに、実施の形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組み合わせによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現される場合には、必要なタスクを実行するプログラムコードまたはコードセグメントを機械読取可能媒体に記憶してもよい。プロセッサは必要なタスクを実行してもよい。 Furthermore, embodiments may be implemented in hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. If implemented in software, firmware, middleware, or microcode, the program code or code segments that perform the required tasks may be stored on the machine-readable medium. A processor may perform the necessary tasks.

本明細書では、1つまたは複数の入力データ例内で識別されるパターンに対応する正規表現を生成するためのさまざまな技法(たとえば、方法、システム、1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的なコンピュータ読取可能記憶メモリなど)について説明する。特定の実施形態では、入力データの選択を受け取ることに応答して、入力データ内の1つまたは複数のパターンが自動的に識別され、識別されたパターンを表すよう、正規表現(または短く「レゲックス」)が自動的かつ効率的に生成され得る。そのようなパターンは、キャラクタのシーケンス(たとえば、文字、数字、空白、句読点、記号等のシーケンス)に基づくことができる。本明細書では、方法、システム、1つもしくは複数のプロセッサによって実行可能なプログラム、コード、または命令を記憶する非一時的コンピュータ読取可能記憶媒体などを含むさまざまな実施形態について説明する。 Described herein are various techniques (e.g., methods, systems, techniques executable by one or more processors) for generating regular expressions that correspond to patterns identified in one or more example input data. (such as a non-transitory computer readable storage memory for storing instructions for In certain embodiments, in response to receiving a selection of input data, one or more patterns in the input data are automatically identified, and a regular expression (or "regex" for short) is generated to represent the identified pattern. ”) can be automatically and efficiently generated. Such patterns can be based on sequences of characters (eg, sequences of letters, numbers, spaces, punctuation marks, symbols, etc.). Various embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, code, or instructions executable by one or more processors, and the like.

いくつかの実施形態では、正規表現は、キャラクタストリングにマッチするために、および/または入力として与えられるキャラクタストリングから情報を抽出するために、記号的なワイルドカードマッチング言語を使用して構成され得る。 In some embodiments, regular expressions may be constructed using a symbolic wildcard matching language to match character strings and/or extract information from character strings provided as input. .

Figure 2022538705000002
Figure 2022538705000002

正規表現生成システムによって受信される入力データは、たとえば、1つもしくは複数の「陽性」データ例および/または1つもしくは複数の「陰性」データ例を含み得る。本明細書で使用される場合、陽性例は、入力として受信され、その入力に基づいて生成される正規表現によってマッチされることになるキャラクタシーケンスを指し得る。一方、陰性例は、その入力に基づいて生成される正規表現によってマッチされることにならない、入力されたキャラクタシーケンスを指し得る。 Input data received by the regular expression generation system may include, for example, one or more "positive" data examples and/or one or more "negative" data examples. As used herein, a positive example may refer to a character sequence received as input and to be matched by a regular expression generated based on that input. A negative example, on the other hand, may refer to an input character sequence that would not be matched by a regular expression generated based on that input.

いくつかの技術的利点が、本明細書に記載されるさまざまな実施形態および例内で実現され得る。たとえば、本開示で説明するいくつかの技法は、正規表現生成処理の速度および効率を向上させ得る(たとえば、レゲックス解は、1秒未満で生成され得、ユーザインターフェイスは、対話型リアルタイム使用に適し得る)。本明細書で説明されるさまざまな技法はまた、判断論的であってもよく、トレーニングデータを必要としなくてもよく、いかなる初期正規表現入力も必要とせずに解を生成してもよく、完全に自動化されてもよい(たとえば、任意の人的介入を必要とする範囲内で正規表現を生成する)。さらに、本明細書で説明されるさまざまな技法は、効果的に処理され得るデータ入力のタイプに関して限定される必要はなく、そのような技法は、結果として得られる正規表現の人間による可読性を改善し得る。 Several technical advantages may be realized within the various embodiments and examples described herein. For example, some techniques described in this disclosure may improve the speed and efficiency of the regular expression generation process (eg, a Regex solution may be generated in less than a second and the user interface is suitable for interactive real-time use). obtain). The various techniques described herein may also be deterministic, may not require training data, may generate solutions without requiring any initial regular expression input, It may be fully automated (eg generate regular expressions to the extent that it requires any human intervention). Moreover, the various techniques described herein need not be limited with respect to the types of data input that can be effectively processed, and such techniques improve the human readability of the resulting regular expressions. can.

本明細書で説明するいくつかの実施形態は、最長共通サブシーケンス(LCS)アルゴリズムの1つまたは複数の実行を含む。LCSアルゴリズムは、ある状況においては、2つのテキストファイル間の差分を判断し示すように構成された差分エンジン(たとえば、Unix(登録商標) “diff”utilityの背後にあるエンジン)として使用され得る。いくつかの実施形態では、入力データ(たとえば、ストリングおよび他のキャラクタシーケンス)は、抽象的なトークンに変換され得、次いで、それらは、LCSアルゴリズムへの入力として提供され得る。そのような抽象的なトークンは、たとえば、正規表現キャラクタクラスを表す正規表現コード(たとえば、Loogleコードまたは他のキャラクタクラスコード)に基づくトークンであってもよい。そのようなコードのさまざまな異なる例が考えられ、本明細書では「正規表現コード」または「中間正規表現コード」(IREC)と称され得る。たとえば、入力されたキャラクタシーケンス「May 3」は、IRECコード「LLLZN」に変換されてもよく、その後、トークン化されたストリングは、他のトークン化されたストリングとともにLCSアルゴリズムに供されてもよい。いくつかの実施形態では、入力されたキャラクタシーケンスが共通に有さないIREC(たとえば正規表現コード)が、最終的に生成された正規表現において、任意選択(たとえば任意選択のスパン)として現れてもよい。特定の実施形態では、正規表現コードは、https://www.regular-expressions.info/unicode.html#categoryで示されるユニコードカテゴリコードに基づくカテゴリコードであってもよく、またはhttp://unicode.org/reports/tr18/#General_Category_Propertyの一般的なカテゴリプロパティコードであってもよい。たとえば、コードLは文字を表してもよく、コードNは数字を表してもよく、コードZは空白を表してもよく、コードSは記号を表してもよく、コードPは句読点を表してもよい等である。 Some embodiments described herein include one or more implementations of the longest common subsequence (LCS) algorithm. The LCS algorithm can be used in some situations as a diff engine (eg, the engine behind the Unix "diff" utility) configured to determine and show differences between two text files. In some embodiments, input data (eg, strings and other character sequences) may be converted into abstract tokens, which may then be provided as input to the LCS algorithm. Such abstract tokens may, for example, be tokens based on regular expression codes representing regular expression character classes (eg, Loogle codes or other character class codes). A variety of different examples of such code are possible and may be referred to herein as "regular expression code" or "intermediate regular expression code" (IREC). For example, the input character sequence "May 3" may be converted to the IREC code "LLLZN", after which the tokenized string may be subjected to the LCS algorithm along with other tokenized strings. . In some embodiments, IRECs (eg, regular expression codes) that the input character sequences do not have in common appear as optional (eg, optional spans) in the final generated regular expression. good. In certain embodiments, the regular expression code may be a category code based on the Unicode category codes shown at https://www.regular-expressions.info/unicode.html#category, or http://unicode May be a general category property code from .org/reports/tr18/#General_Category_Property. For example, code L may represent a letter, code N may represent a number, code Z may represent a space, code S may represent a symbol, code P may represent a punctuation mark. good etc.

Figure 2022538705000003
Figure 2022538705000003

加えて、これらの異なるカテゴリは、互いに素、つまり相互に排他的であってもよい。すなわち、この例では、カテゴリL、N、Z、PおよびSは、カテゴリのメンバ間に重複がないように、互いに素にされてもよい。 Additionally, these different categories may be disjoint or mutually exclusive. That is, in this example, categories L, N, Z, P and S may be made disjoint so that there is no overlap between members of the categories.

さらなる技術的利点は、正規表現コード(たとえばカテゴリコード)、スパンなどの使用に基づく正規表現のより効率的な生成を含むさまざまな実施形態において実現され得る。そのようなコードを使用することによって、LCSアルゴリズムが入力ストリング内のキャラクタのすべてまたは実質的にすべてを異なるものとして首尾よく識別する場合には、計算資源を無駄にする必要がない。本明細書においてさまざまな実施形態によって提供されるさらなる技術的利点は、生成された正規表現の改善された可読性、ならびに陽性例および陰性例の両方を入力データとしてサポートすること、およびさまざまな有利なユーザインターフェイス特徴を提供すること(たとえば、ユーザが、抽出のために、より大きなキャラクタシーケンスまたはデータセル内のテキストフラグメントを強調表示することを可能にする)を含む。 Additional technical advantages may be realized in various embodiments, including more efficient generation of regular expressions based on the use of regular expression codes (eg, category codes), spans, and the like. By using such codes, computational resources need not be wasted if the LCS algorithm successfully identifies all or substantially all of the characters in the input string as being different. Further technical advantages provided by various embodiments herein are improved readability of generated regular expressions, and support for both positive and negative examples as input data, and various advantageous Including providing user interface features (eg, allowing the user to highlight larger character sequences or text fragments within data cells for extraction).

I.全体の概要
本明細書に開示されるさまざまな実施形態は、正規表現の生成に関連する。いくつかの実施形態では、正規表現生成器として構成されるデータ処理システムは、正規表現コード(たとえばカテゴリコード)の異なるセットによって共有される最長共通サブシーケンス(LCS)を識別することによって正規表現を生成することができる。正規表現コードの各セットは、ユーザインターフェイスを介して入力データとして受け取られるキャラクタのシーケンスから変換され得る。本明細書で説明する技術的利点のうち、入力データを中間コード(たとえば、正規表現コード、スパンなど)として抽象化することにより、非常に少ない入力データを使用して正規表現を効率的に生成することができる。
I. General Overview Various embodiments disclosed herein relate to the generation of regular expressions. In some embodiments, a data processing system configured as a regular expression generator generates regular expressions by identifying the longest common subsequence (LCS) shared by different sets of regular expression codes (e.g., category codes). can be generated. Each set of regular expression codes can be converted from a sequence of characters received as input data via the user interface. Among the technical advantages described here are the ability to efficiently generate regular expressions using very little input data by abstracting the input data as intermediate code (e.g. regular expression code, spans, etc.) can do.

図1は、さまざまな実施形態が実現され得る、正規表現を生成するための例示的な分散システムの構成要素を示すブロック図である。この例に示されるように、クライアントデバイス120は、正規表現生成サーバ110(または正規表現生成器)と通信し、ユーザインターフェイスと対話してテーブル形式データを取り出し表示し、ユーザインターフェイスを介した入力データ(たとえば例)の選択に基づいて正規表現を生成することができる。いくつかの実施形態では、クライアントデバイス120は、クライアントウェブブラウザ121および/またはクライアント側正規表現アプリケーション122(たとえば、サーバ110によって生成された正規表現を受信/消費するクライアント側アプリケーション)を介して正規表現生成器110と通信してもよい。正規表現生成器110内で、クライアントデバイス120からの要求は、ネットワークインターフェイスにおいてさまざまな通信ネットワークを介して受信され、REST API112などのアプリケーションプログラミングインターフェイス(API)によって処理され得る。ユーザインターフェイスデータモデル生成器114コンポーネントは正規表現生成器110とともに、サーバ側プログラミングコンポーネントおよびロジックを提供して、本明細書で説明されるさまざまなユーザインターフェイス特徴を生成し、レンダリングすることができる。そのような特徴は、ユーザがデータリポジトリ130からテーブル形式データを取り出し、表示すること、入力データ例を選択して正規表現の生成を開始し、生成された正規表現に基づいてデータを修正および/または抽出することを可能にする機能を含み得る。この例では、正規表現生成器コンポーネント116は、入力キャラクタシーケンスを正規表現コードおよび/またはスパンに変換すること、入力データに対してアルゴリズム(たとえばLCSアルゴリズム)を実行すること、および正規表現を生成/単純化することを含んで、正規表現を生成するように実現され得る。正規表現生成器116によって生成された正規表現は、RESTサービス112によってクライアントデバイス120に送信されてもよく、そこで、クライアントブラウザ121(または対応するクライアント側アプリケーションコンポーネント122)上のJavascriptコードは、次いで、ブラウザ内でレンダリングされたスプレッドシート列内のすべてのセルに対して正規表現を適用することができる。他の場合では、サーバ側でマッチするデータ/マッチしないデータを識別するために、サーバ側で別個の正規表現エンジンコンポーネントを実現して、生成された正規表現を、ユーザインターフェイス上に表示されるテーブル形式データおよび/またはデータリポジトリ130に格納された他のデータ内で比較してもよい。さまざまな実施形態において、マッチする/マッチしないデータは、ユーザインターフェイス内で自動的に選択(たとえば強調表示)されてもよく、抽出、修正、削除などのために選択されてもよい。正規表現の生成に基づいて、ユーザインターフェイスを介して抽出または修正される任意のデータは、1つまたは複数のデータリポジトリ130に記憶され得る。さらに、いくつかの実施形態では、生成された正規表現(および/またはLCSアルゴリズムへの対応する入力)は、将来の検索および使用のために正規表現ライブラリ135に記憶されてもよい。いくつかの実施形態では、生成された正規表現は、実際に「ライブラリ」に格納される必要はなく、「変換スクリプト」に組み込まれてもよい。たとえば、ET.S.特許番号10,210,246(すべての目的のために、ここに引用により援用する)においてより詳細に記載されるように、そのような変換スクリプトは、受信されたデータを変換するために1つまたは複数の処理ユニットによって実行可能であり得るプログラム、コード、または命令を含み得る。変換スクリプトの他の考えられ得る例は、「改名列」、「大文字列データ」、または「ファーストネームから性別を推測し性別を伴う新たな列を作成する」などを含み得る。 FIG. 1 is a block diagram illustrating components of an exemplary distributed system for generating regular expressions in which various embodiments may be implemented. As shown in this example, the client device 120 communicates with the regular expression generation server 110 (or regular expression generator) and interacts with the user interface to retrieve and display tabular data and input data through the user interface. A regular expression can be generated based on the selection (eg, example). In some embodiments, client device 120 may access regular expressions via client web browser 121 and/or client-side regular expression application 122 (eg, a client-side application that receives/consumes regular expressions generated by server 110). may communicate with the generator 110; Within regular expression generator 110 , requests from client device 120 may be received over various communication networks at a network interface and processed by an application programming interface (API), such as REST API 112 . The user interface data model generator 114 component along with the regular expression generator 110 can provide server-side programming components and logic to generate and render various user interface features described herein. Such features include a user retrieving and displaying tabular data from the data repository 130, selecting example input data to initiate generation of regular expressions, modifying and/or modifying data based on the generated regular expressions. Or it may contain functions that allow it to be extracted. In this example, the regular expression generator component 116 converts the input character sequence into regular expression codes and/or spans, runs an algorithm (eg, LCS algorithm) on the input data, and generates/ It can be implemented to generate regular expressions, including simplification. The regular expression generated by the regular expression generator 116 may be sent by the REST service 112 to the client device 120, where the Javascript code on the client browser 121 (or corresponding client-side application component 122) then: Regular expressions can be applied to all cells within a spreadsheet column rendered within the browser. In other cases, to identify matched/unmatched data on the server side, a separate regular expression engine component can be implemented on the server side to store the generated regular expressions in a table displayed on the user interface. Comparisons may be made within formal data and/or other data stored in data repository 130 . In various embodiments, matching/non-matching data may be automatically selected (eg, highlighted) within the user interface, selected for extraction, modification, deletion, and the like. Any data extracted or modified via the user interface based on the generation of regular expressions may be stored in one or more data repositories 130 . Additionally, in some embodiments, the generated regular expressions (and/or corresponding inputs to the LCS algorithm) may be stored in the regular expression library 135 for future retrieval and use. In some embodiments, the generated regular expressions need not actually be stored in a 'library', but may be incorporated into a 'conversion script'. For example, ET. S. As described in more detail in US Pat. No. 10,210,246 (herein incorporated by reference for all purposes), such a conversion script is used to convert received data. or may include a program, code, or instructions that may be executable by multiple processing units. Other possible examples of conversion scripts may include "rename column", "capitalize string data", or "guess gender from first name and create new column with gender", and the like.

図2は、本明細書に記載される1つまたは複数の実施形態に係る、ユーザインターフェイスを介して受信される入力に基づいて正規表現を生成するための処理200を示すフローチャートである。ステップ201において、正規表現生成器110は、正規表現生成器ユーザインターフェイスにアクセスし、ユーザインターフェイスを介して特定のデータを閲覧するための要求をクライアントデバイス120から受信することができる。ステップ201における要求は、REST API112、および/またはウェブサーバ、認証サーバなどを介して受信されてもよく、ユーザの要求はパーズおよび認証されてもよい。たとえば、ビジネスまたは組織内のユーザは、取引データ、顧客データ、実績データ、予測データ、および/または組織のデータリポジトリ130に記憶され得るデータの任意の他のカテゴリを解析および/または修正するために、正規表現生成器110にアクセスすることができる。ステップ202において、正規表現生成器110は、選択された入力データに基づく正規表現の生成をサポートするユーザインターフェイスを介して、要求されたデータを取り出し、表示することができる。そのようなユーザインターフェイスのさまざまな実施形態および例は、以下で詳細に説明される。 FIG. 2 is a flowchart illustrating a process 200 for generating regular expressions based on input received via a user interface, according to one or more embodiments described herein. At step 201, the regular expression generator 110 may receive a request from the client device 120 to access the regular expression generator user interface and view specific data through the user interface. The request in step 201 may be received via REST API 112 and/or a web server, authentication server, etc., and the user's request may be parsed and authenticated. For example, a user within a business or organization may be able to analyze and/or modify transaction data, customer data, performance data, forecast data, and/or any other category of data that may be stored in the organization's data repository 130. , can access the regular expression generator 110 . At step 202, the regular expression generator 110 can retrieve and display the requested data via a user interface that supports the generation of regular expressions based on selected input data. Various embodiments and examples of such user interfaces are described in detail below.

ステップ203において、ユーザは、正規表現生成器110によって提供されるユーザインターフェイスに表示されたデータから1つまたは複数の入力キャラクタシーケンスを選択し得る。いくつかの実施形態では、データは、特定のデータタイプおよび/またはデータのカテゴリを有するラベル付き列を含んで、ユーザインターフェイス内にテーブル形式で表示されてもよい。そのような場合、ステップ203における入力データの選択は、ユーザがデータセルを選択すること、またはデータセル内の個々のテキストフラグメントを選択する(たとえば強調表示すること)ことに対応し得る。しかしながら、他の実施形態では、正規表現生成器110は、ユーザインターフェイスを介して半構造化および非構造化データの検索ならびに表示をサポートしてもよく、ユーザは、半構造化または非構造化データからキャラクタシーケンスを選択することによって正規表現生成のための入力データを選択してもよい。後述する例で説明されるように、ユーザが表示されたテーブル形式データから入力キャラクタシーケンスを選択することは、単なる使用ケースの一例である。他の例では、ユーザ(たとえば、おそらく、Linux(登録商標)コマンドラインツールgrep、sed、またはawkなどのために正規表現を構築することを試みるソフトウェア開発者またはパワーユーザ)は、スプレッドシートから例を拾うのではなく、例において初めからタイプしてもよい。 At step 203 , the user may select one or more input character sequences from data displayed in the user interface provided by regular expression generator 110 . In some embodiments, data may be displayed in a tabular format within the user interface, including labeled columns having specific data types and/or categories of data. In such cases, the selection of input data in step 203 may correspond to the user selecting a data cell or selecting (eg, highlighting) an individual text fragment within the data cell. However, in other embodiments, the regular expression generator 110 may support searching and displaying semi-structured and unstructured data via a user interface, allowing users to create semi-structured or unstructured data Input data for regular expression generation may be selected by selecting a character sequence from . A user selecting an input character sequence from displayed tabular data, as described in the examples below, is just one example of a use case. In another example, a user (e.g., perhaps a software developer or power user trying to build a regular expression for the Linux command-line tools grep, sed, or awk, etc.) can extract examples from a spreadsheet. You can type it from scratch in the example instead of picking it up.

ステップ204において、正規表現生成器110は、ステップ203においてユーザにより選択された入力データに基づいて、1つまたは複数の正規表現を生成してもよい。ステップ205において、正規表現生成器110は、たとえば、生成された正規表現を表示するように、および/または表示されたデータ内のマッチする/マッチしないデータを強調表示するように、ユーザインターフェイスを更新してもよい。いくつかの実施形態では任意選択であり得るステップ206において、ユーザインターフェイスは、ユーザが生成された正規表現に基づいて基礎となるデータを修正することを可能にする機能をサポートしてもよい。たとえば、ユーザインターフェイスは、ユーザが、テーブル形式データから、特定のデータフィールドを、それらフィールドが正規表現とマッチするか否かに基づいて、フィルタリング、修正、削除、または抽出することを可能にする特徴をサポートしてもよい。データをフィルタリングまたは修正することは、リポジトリ130に格納された基礎となるデータを修正することを含むことができ、場合によっては、抽出したデータを新たな列および/または新たなテーブルとしてリポジトリ130に格納することができる。 At step 204 , regular expression generator 110 may generate one or more regular expressions based on the input data selected by the user at step 203 . At step 205, the regular expression generator 110 updates the user interface, for example, to display the generated regular expression and/or highlight matching/non-matching data within the displayed data. You may At step 206, which may be optional in some embodiments, the user interface may support functionality that allows the user to modify the underlying data based on the generated regular expression. For example, the user interface features allow users to filter, modify, delete, or extract specific data fields from tabular data based on whether those fields match regular expressions. may be supported. Filtering or modifying the data can include modifying the underlying data stored in repository 130, and in some cases presenting the extracted data to repository 130 as new columns and/or new tables. can be stored.

これらのステップは、正規表現生成器110のユーザインターフェイスとの例示的なユーザ対話の一般的かつハイレベルの概要を示すが、他の実施形態では、さまざまな追加の特徴および機能性をサポートしてもよい。たとえば、いくつかの実施形態では、正規表現コード(またはカテゴリコード)は、コードの最小発生数に関連付けられ得る。追加的または代替的に、正規表現コードは、コードの最大発生数に関連付けられてもよい。一例として、正規表現コードのセットは、LCSの特定の部分がある文字を少なくとも0回、および最大でも1回のいずれかで含むことを示すコードL<0,1>を含むことができる。 Although these steps provide a general and high-level overview of exemplary user interactions with the user interface of regular expression generator 110, other embodiments support various additional features and functionality. good too. For example, in some embodiments, regular expression codes (or category codes) may be associated with a minimum number of occurrences of the code. Additionally or alternatively, a regular expression code may be associated with a maximum number of occurrences of the code. As an example, the set of regular expression codes may include the code L<0,1> to indicate that a particular portion of the LCS contains a character at least 0 times, and at most 1 time.

さらに、いくつかの実施形態では、入力データは、3つ以上のキャラクタシーケンスを含み得る。そのような実施形態では、さまざまな技法を用いて、3つ以上のキャラクタシーケンスに対してLCSアルゴリズムを実行するための順序を判断し、結果として生じる正規表現が充分に機能する態様で生成され得るようにして、3つ以上の入力キャラクタシーケンスによって引き起こされるランタイムの指数関数的な増加を回避することができる。なお、正規表現生成器110は、かわりに、一度に2つのキャラクタシーケンス上でLCSアルゴリズムを実行し、グラフに基づいてキャラクタシーケンスのペアを選択するための順序を判断してもよい。たとえば、全結合グラフは、LCSアルゴリズムの第1の実行(たとえばLCS1)は、シーケンス1およびシーケンス3に対して実行されるべきであることを示し、次いで、LCSアルゴリズムの第2の実行(たとえばLCS2)は、LCS1およびシーケンス2に対して実行されるべきであることなどを示し得る。グラフは、全結合グラフであってもよく、ノードは、キャラクタシーケンスを表し、エッジはノードを接続して、接続されたノードによって共有されるLCSの長さを表す。グラフ内の各ノードは、グラフ内の他のすべてのノードに接続されてもよく、キャラクタシーケンスを選択する順序は、グラフについて最小スパニングツリーの深さ優先トラバースを実行することによって判断されてもよい。 Additionally, in some embodiments, input data may include more than two character sequences. In such embodiments, various techniques may be used to determine the order for performing the LCS algorithm on sequences of three or more characters, and the resulting regular expression generated in a well-functioning manner. In this way, the exponential increase in runtime caused by input character sequences of three or more can be avoided. Note that the regular expression generator 110 may alternatively run the LCS algorithm on two character sequences at a time and determine the order for selecting character sequence pairs based on the graph. For example, the fully connected graph indicates that a first run of the LCS algorithm (eg LCS1) should be run for sequence 1 and sequence 3, then a second run of the LCS algorithm (eg LCS2 ) may indicate that LCS1 and sequence 2 should be executed, and so on. The graph may be a fully connected graph, with nodes representing character sequences and edges connecting nodes to represent the length of the LCS shared by the connected nodes. Each node in the graph may be connected to every other node in the graph, and the order for selecting character sequences may be determined by performing a depth-first traversal of the minimum spanning tree over the graph. .

さらなる実施形態では、入力データは、いくつかの異なる方法でユーザインターフェイスを介して提供されてもよい。たとえば、入力データは、キャラクタのセットの第2のユーザ選択内の、1つまたは複数のキャラクタの第1のユーザ選択を示してもよい。たとえば、ユーザは、以前に強調表示されたキャラクタのセット内のうちのあるキャラクタを強調表示してもよい。したがって、第2のユーザ選択は、第1のユーザ選択のためのコンテキストを提供し得、これは、入力データが、より高い特異性で正規表現生成器110に提供されることを可能にし得る。いくつかの実施形態では、正規表現生成器110は、各ユーザ選択に応答して、ほぼリアルタイムで正規表現を生成し、表示することができる。たとえば、ユーザがキャラクタの第1の範囲を強調表示する場合、正規表現生成器110は、キャラクタの第1の範囲を表す正規表現を表示してもよい。そして、ユーザが、キャラクタの第1の範囲内の、キャラクタの第2の範囲を強調表示すると、正規表現生成器110は、表示される正規表現を更新してもよい。 In further embodiments, input data may be provided via the user interface in a number of different ways. For example, input data may indicate a first user selection of one or more characters within a second user selection of a set of characters. For example, a user may highlight a character within a previously highlighted set of characters. Thus, the second user selection may provide context for the first user selection, which may allow input data to be provided to regular expression generator 110 with greater specificity. In some embodiments, the regular expression generator 110 can generate and display regular expressions in near real-time in response to each user selection. For example, if the user highlights a first range of characters, regular expression generator 110 may display a regular expression representing the first range of characters. Then, when the user highlights a second range of characters within the first range of characters, the regular expression generator 110 may update the displayed regular expression.

さらに、いくつかの実施形態では、正規表現生成器110は、陽性および陰性の両方の例を含む入力に基づいて正規表現を生成することができる。上述したように、陽性例は、正規表現に包含されるべきキャラクタのシーケンスを指し得、陰性例は、正規表現に包含されるべきでないキャラクタのシーケンスを指し得る。そのような場合、正規表現生成器110は、特定の位置において、陽性例を陰性例から区別する、1つまたは複数のキャラクタからなる最短サブシーケンスを識別することができる。次いで、最短サブシーケンスは、正規表現生成器110によって生成された正規表現内でハードコード化され得る。さまざまな例では、最短サブシーケンスは、プレフィックス/サフィックス部分、または陰性例内のミッドスパンに含まれ得る。 Further, in some embodiments, the regular expression generator 110 can generate regular expressions based on input containing both positive and negative examples. As noted above, positive examples may refer to sequences of characters that should be included in the regular expression, and negative examples may refer to sequences of characters that should not be included in the regular expression. In such cases, regular expression generator 110 can identify the shortest subsequence of one or more characters that distinguishes positive from negative examples at a particular position. The shortest subsequence may then be hard-coded within the regular expression generated by regular expression generator 110 . In various examples, the shortest subsequence may be included in the prefix/suffix portion, or the midspan within the negative example.

特定の実施形態による、正規表現を自動的に生成するさらなる例を以下に記載する。これらの例は、図2の一般的技法のさまざまな具体的な考えられ得る実現例に対応し得、それぞれのシステムの1つまたは複数の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラムなど)、ハードウェア、またはそれらの組み合わせにおいて実現され得る。ソフトウェアは、非一時的記憶媒体上に(たとえばメモリデバイス上に)記憶され得る。以下で説明するさらなる例は、例示的かつ非限定的であることを意図している。これらの例は、特定の順番または順序で生じるさまざまな処理ステップを示すが、これは限定することを意図するものではない。いくつかの代替実施形態では、ステップは、ある異なる順序で実行されてもよく、またはいくつかのステップは、並行して実行されてもよい。 Further examples of automatically generating regular expressions according to certain embodiments are described below. These examples may correspond to various specific possible implementations of the general technique of FIG. 2, and software executed by one or more processing units (eg, processors, cores) of the respective system (eg, code, instructions, programs, etc.), hardware, or a combination thereof. The software may be stored on non-transitory storage media (eg, on memory devices). Further examples described below are intended to be illustrative and non-limiting. Although these examples show various processing steps occurring in a particular order or order, this is not meant to be limiting. In some alternative embodiments, the steps may be performed in some different order, or some steps may be performed in parallel.

いくつかの例では、ユーザインターフェイス(たとえばステップ203)を介して受信されるユーザ入力は、正規表現出力によってマッチされる1つまたは複数の「陽性例」と、正規表現出力によってマッチされない0またはそれより多い「陰性例」とを含み得る。任意選択で、陽性例のうちの1つまたは複数を強調表示して、キャラクタの特定の範囲(またはサブシーケンス)を選択することができる。場合によっては、ステップ204において、ユーザインターフェイスを介して受信された陽性例は、正規表現コード(たとえば、ユニコードカテゴリコードのようなキャラクタカテゴリコード)のスパンに変換され得る。各陽性例に対して、スパンのシーケンスが生成され得る。いくつかの実施形態では、各頂点が、スパンのシーケンスのうちの1つに対応し、エッジ重みが、エッジのエンドポイントに対応するスパンのそれらの2つのシーケンス上で実行されるLCSアルゴリズムからの出力の長さに等しい、グラフが生成されてもよい。グラフについて、最小スパニングツリーを判断することができる。たとえば、いくつかの実施形態では、Primのアルゴリズムを用いて、最小スパニングツリーを得てもよい。深さ優先トラバースを最小スパニングツリー上で実行してトラバース順序を判断してもよく、その後、LCSアルゴリズムを、トラバースの最初の2つの要素上で実行してもよい。次いで、1つずつ、トラバースの各追加要素が、前のLCS反復の出力および次の現在のトラバース要素に対してLCSアルゴリズムを再び実行することによって、現在のLCS出力に順番にマージされてもよい。次いで、スパンのシーケンスであり得る、LCSアルゴリズムの最終出力が、正規表現に変換されてもよい。この変換は、いくつかの実施形態では、1対1変換であり得るが、本明細書で説明される特定の任意選択的な実施形態は、1対1変換に対応しないかもしれない。最後に、得られた正規表現は、ステップ203でユーザインターフェイスを介して受信されたすべての陽性例および陰性例に対してテストされてもよい。テストのいずれかが失敗した場合、すべての陽性例および失敗した任意の陰性例を使用して、上述の処理を繰り返してもよい。 In some examples, user input received via a user interface (eg, step 203) includes one or more "positive examples" matched by the regular expression output and zero or more not matched by the regular expression output. It can include more "negative cases". Optionally, one or more of the positive examples can be highlighted to select a particular range (or subsequence) of characters. Optionally, at step 204, positive examples received via the user interface may be converted to spans of regular expression codes (eg, character category codes such as Unicode category codes). A sequence of spans may be generated for each positive example. In some embodiments, each vertex corresponds to one of the sequences of spans, and the edge weights from the LCS algorithm run on those two sequences of spans correspond to the endpoints of the edges. A graph may be generated that is equal to the length of the output. A minimum spanning tree can be determined for a graph. For example, in some embodiments, Prim's algorithm may be used to obtain the minimum spanning tree. A depth-first traversal may be performed on the minimum spanning tree to determine the traversal order, and then the LCS algorithm may be performed on the first two elements of the traversal. Then, one by one, each additional element of the traverse may be merged into the current LCS output in order by running the LCS algorithm again on the output of the previous LCS iteration and the next current traversal element. . The final output of the LCS algorithm, which can be a sequence of spans, may then be converted to regular expressions. This transformation may be a one-to-one transformation in some embodiments, but certain optional embodiments described herein may not correspond to a one-to-one transformation. Finally, the resulting regular expression may be tested against all positive and negative examples received via the user interface at step 203 . If any of the tests fail, the above process may be repeated using all positive examples and any negative examples that fail.

II.正規表現コード上で最長共通サブシーケンスアルゴリズムを用いた正規表現生成
上述したように、本明細書で説明するいくつかの態様は、入力データに対応する正規表現コードの異なるセットによって共有される最長共通サブシーケンス(LCS)の計算に基づく正規表現の生成に関する。
II. Regular Expression Generation Using the Longest Common Subsequence Algorithm on Regular Expression Codes As noted above, some aspects described herein provide a longest common subsequence algorithm shared by different sets of regular expression codes corresponding to input data. It relates to the generation of regular expressions based on subsequence (LCS) computation.

図3は、本明細書で説明する1つまたは複数の実施形態による、正規表現コードのセットに対してLCSアルゴリズムを使用して正規表現を生成するための処理300を示すフローチャートである。ステップ301において、正規表現生成器110は、入力データとして1つまたは複数のキャラクタシーケンスを受け取り得る。上述したように、いくつかの例では、入力データは、ユーザインターフェイスに表示されたテーブル形式データ内から選択された陽性例データに対応し得るが、いくつかの実施形態ではユーザインターフェイスは任意選択であり、入力データは、さまざまな例では任意の他の通信チャネル(たとえば非ユーザインターフェイス)を介して受信される任意のキャラクタシーケンスに対応し得ることを理解されたい。 FIG. 3 is a flowchart illustrating a process 300 for generating regular expressions using the LCS algorithm on a set of regular expression codes, according to one or more embodiments described herein. At step 301, regular expression generator 110 may receive one or more character sequences as input data. As noted above, in some examples the input data may correspond to positive case data selected from within tabular data displayed in the user interface, although in some embodiments the user interface may optionally Yes, and it should be appreciated that the input data may correspond to any character sequence received over any other communication channel (eg, non-user interface) in various examples.

ステップ302において、ステップ301において受け取られた各キャラクタシーケンスは、対応する正規表現コードに変換され得る。さまざまな実施形態において、正規表現コードは、Loogleコード、ユニコードカテゴリコード、または正規表現キャラクタクラスを表す任意の他のキャラクタクラスコードであり得る。たとえば、ある入力キャラクタシーケンス「May 3」をLoogleコード「LLLZN」に変換してもよい。いくつかの実施形態では、正規表現コードは、https://www.regular-expressions.info/unicode.html#categoryに示されるユニコードカテゴリコードに基づくカテゴリコードであり得る。たとえば、コードLは文字を表してもよく、コードNは数字を表してもよく、コードZは空白を表してもよく、コードSは記号を表してもよく、コードPは句読点を表してもよい、等である。 At step 302, each character sequence received at step 301 may be converted to a corresponding regular expression code. In various embodiments, the regular expression code may be a Loogle code, a Unicode category code, or any other character class code representing a regular expression character class. For example, one input character sequence "May 3" may be converted to the Loogle code "LLLZN". In some embodiments, the regular expression code may be a category code based on the Unicode category codes shown at https://www.regular-expressions.info/unicode.html#category. For example, code L may represent a letter, code N may represent a number, code Z may represent a space, code S may represent a symbol, code P may represent a punctuation mark. good, etc.

Figure 2022538705000004
Figure 2022538705000004

ステップ303では、ステップ302で生成された正規表現コードのセットの中から最長共通サブシーケンスを判断することができる。いくつかの実施形態では、LCSアルゴリズムは、入力として正規表現コードの2つのセットを使用して実行され得る。LCSアルゴリズム(たとえば、処理の方向、位置指定、空白のプッシュ、低濃度スパンの合体(coalescing)、共通トークン上の整列など)の実行のさまざまな異なる特性が、異なる実施形態において使用され得る。ステップ304では、LCSアルゴリズムの出力に基づいて正規表現を生成することができる。場合によっては、ステップ304は、LCSアルゴリズムの出力を正規表現コードで捕捉すること、および正規表現コードを正規表現に変換することを含み得る。ステップ305において、正規表現は、たとえば、ユーザインターフェイスを介してユーザに正規表現を表示することによって、単純化され、出力されてもよい。 At step 303, the longest common subsequence among the set of regular expression codes generated at step 302 can be determined. In some embodiments, the LCS algorithm may be run using two sets of regular expression codes as input. Various different characteristics of the implementation of the LCS algorithm (eg, processing direction, positioning, blank pushing, coalescing of low-density spans, alignment on common tokens, etc.) may be used in different embodiments. At step 304, a regular expression can be generated based on the output of the LCS algorithm. Optionally, step 304 may include capturing the output of the LCS algorithm in regular expression code and converting the regular expression code to a regular expression. At step 305, the regular expression may be simplified and output, for example, by displaying the regular expression to the user via a user interface.

図4は、2つのキャラクタシーケンス例に基づき、正規表現コードのセットに対して最長共通サブシーケンス(LCS)アルゴリズムを使用して、正規表現を生成するための例示的な図である。したがって、図4は、図3において上述した処理を適用する例を示している。図4に示すように、本例の正規表現は、2つの入力ストリング「iPhone 5」および「iPhone X」に基づいて生成される。この例における各シーケンスは、正規表現コードのそれぞれのセットに変換され得る。したがって、iPhone 5は「LLLLLLZN」に変換されてもよく、iPhone Xは「LLLLLLZL」に変換されてもよい。図4に示されるように、これらのカテゴリコードは、次いで、LCSアルゴリズムへの入力として提供され、LCSアルゴリズムは、IREC(またはカテゴリコード)の両方のセットは6つのLおよび1つのZを含む、と判断する。LCSから除外されるZカテゴリコードは、任意選択および/または代替として表され得る。 FIG. 4 is an exemplary diagram for generating a regular expression using the Longest Common Subsequence (LCS) algorithm on a set of regular expression codes based on two example character sequences. FIG. 4 thus shows an example of applying the process described above in FIG. As shown in FIG. 4, the regular expression in this example is generated based on two input strings "iPhone 5" and "iPhone X". Each sequence in this example can be converted to a respective set of regular expression codes. Therefore, iPhone 5 may be converted to "LLLLLLZN" and iPhone X may be converted to "LLLLLLZL". As shown in FIG. 4, these category codes are then provided as input to the LCS algorithm, which determines that both sets of IRECs (or category codes) contain six Ls and one Z, I judge. Z-category codes excluded from the LCS may be expressed as optional and/or alternative.

Figure 2022538705000005
Figure 2022538705000005

数字6を含む中括弧は、文字の6つのインスタンスを示し、疑問符は、最後の数字/文字が任意選択であることを示す。最後に、正規表現生成器によって単純化処理を実行することができ、その間に、正規表現は、共通テキストフラグメント「iPhone」を最終正規表現に挿入し戻すことによって単純化され、正規表現のより広い The curly brackets containing the digit 6 indicate 6 instances of the letter and the question mark indicates that the last digit/letter is optional. Finally, a simplification process can be performed by the regex generator, during which the regex is simplified by inserting the common text fragment "iPhone" back into the final regex, resulting in a wider regex

Figure 2022538705000006
Figure 2022538705000006

部分を置き換える。
この例に示されるように、正規表現生成器110によって受け取られた入力ストリングは、正規表現ブロードカテゴリ(これは、「カテゴリコード」とも呼ばれ得る)を表す「正規表現コード」に変換されてもよく、LCSアルゴリズムは、それらの正規表現コード上で実行されてもよい。いくつかの実施形態では、正規表現コードのために、ユニコードカテゴリコードを使用し得る。たとえば、入力テキストストリングは、レゲックスユニコードブロードカテゴリ
replace part.
As shown in this example, an input string received by regular expression generator 110 may be converted into a "regular expression code" representing a regular expression broad category (which may also be referred to as a "category code"). Well, the LCS algorithm may be run on those regular expression codes. In some embodiments, Unicode category codes may be used for regular expression codes. For example, the input text string is Regex Unicode Broad Category

Figure 2022538705000007
Figure 2022538705000007

を表すコードに変換され得る。図3および図4によって示されるこのアプローチは、間接的アプローチと称され得る。しかしながら、他の実施形態では、LCSアルゴリズムが入力として受け取られたキャラクタシーケンスに対して直接実行される直接的アプローチが使用されてもよい。 can be converted into a code representing This approach illustrated by FIGS. 3 and 4 may be referred to as the indirect approach. However, in other embodiments a direct approach may be used in which the LCS algorithm is run directly on the character sequence received as input.

いくつかの実施形態では、間接的アプローチは、大量のトレーニングデータを必要としないという点で、追加の技術的利点を提供し得、比較的より少ない数の入力例で有効な正規表現を生成し得る。これは、間接的なアプローチが、正規表現生成における不確実性を低減するために、および潜在的な偽陽性および偽陰性を除去するために、ヒューリスティックを使用するためである。たとえば、入力ストリング「May 3」および「Apr 11」に基づいて正規表現を生成する際に、直接的アプローチは、日付パターンにマッチする有効な正規表現を生成するために月毎に少なくとも1つの例を必要とし得る。それら2つの例のみに依拠して、直接的アプローチは、「[AM][ap][yr] [13]1?」のレゲックスを生成してもよい。対照的に、間接的アプローチは、ユニコードブロードカテゴリに基づいて、 In some embodiments, the indirect approach may offer additional technical advantages in that it does not require large amounts of training data and produces effective regular expressions with a relatively smaller number of input examples. obtain. This is because the indirect approach uses heuristics to reduce uncertainty in regular expression generation and to eliminate potential false positives and false negatives. For example, in generating a regular expression based on the input strings "May 3" and "Apr 11", a direct approach would require at least one instance per month to generate a valid regular expression that matches the date pattern. may require Relying only on those two examples, a direct approach may generate a regex of "[AM][ap][yr] [13]1?". In contrast, the indirect approach is based on the Unicode broad category,

Figure 2022538705000008
Figure 2022538705000008

の、より効果的な正規表現を生成してもよい。加えて、上述のように、本明細書で説明される技術的利点の1つは、場合によっては単一の例からさえ、非常にわずかな入力データを使用して正規表現を効率的に生成することを含む。たとえば、単一の例「am」からの正規表現の生成に関して、あるヒューリスティックは、正規表現のために「am」を生成するか may generate a more efficient regular expression for Additionally, as noted above, one of the technical advantages described herein is the ability to efficiently generate regular expressions using very little input data, possibly even from a single example. including doing For example, regarding the generation of a regular expression from a single instance 'am', one heuristic is to generate 'am' for the regular expression

Figure 2022538705000009
Figure 2022538705000009

を生成するかを判断することができる。どちらも、おそらくは正しいが、プログラムされたヒューリスティックは、最適な正規表現を生成する方法(たとえば、それが「pm」にもマッチすべきか否か)を判断するために、ユーザ選好および/または基準を実現し得る。 can be determined to generate Both are probably correct, but programmed heuristics may use user preferences and/or criteria to determine how to best generate the regular expression (e.g., whether it should also match "pm"). It can be realized.

加えて、間接的アプローチは、さらに、生成された正規表現 In addition, the indirect approach also allows the generated regular expression

Figure 2022538705000010
Figure 2022538705000010

を単純化して、それをより人間によって可読なものにすることができる。これは、いくつかの実施形態において、たとえば、正規表現のためのユニコード表現に精通していない可能性がある高度な知識のない正規表現ユーザに出力する場合に有益であり得る。 can be simplified to make it more human readable. This may be beneficial in some embodiments, for example, when outputting to non-sophisticated regular expression users who may not be familiar with the Unicode representation for regular expressions.

さらに、いくつかの実施形態では、LCSアルゴリズムを実行する際に各キャラクタを独立して扱う代わりに、シーケンシャルかつ等しい正規表現コードが、スパンデータ構造(スパンとも称され得る)に変換され得る。場合によっては、スパンは、単一の正規表現コード(たとえばユニコードブロードカテゴリコード)の表現を、繰り返しカウント範囲(たとえば最小数および/または最大数)とともに含み得る。正規表現コードからスパンへの変換は、交代(オルタネーション)(たとえば分離)を認識するなど、以下に説明されるいくつかのさまざまな追加の特徴を容易にすることができ、また、生成された正規表現をさらに単純化するために、隣接する任意選択のスパンのマージを容易にすることもできる。 Further, in some embodiments, instead of treating each character independently when performing the LCS algorithm, sequential and equal regular expression codes may be converted into span data structures (which may also be referred to as spans). In some cases, a span may include a representation of a single regular expression code (eg, Unicode broad category code) along with a repeat count range (eg, minimum and/or maximum number). Conversion from regular expression code to spans can facilitate a number of different additional features described below, such as recognizing alternations (e.g. separation), and also the generated To further simplify the regular expression, merging of adjacent optional spans can also be facilitated.

上述したように、LCSアルゴリズムは、図4のストリング「iPhone」のような、最終的な正規表現に潜在的に挿入して戻すことができる、入力キャラクタシーケンス内の基礎となるテキストフラグメントを記憶し、保持するように構成することができる。そのスパンに割り当てられたカテゴリコードを元々もたらしたテキストフラグメントを追跡することによって、そのような実施形態は、リテラルテキスト(たとえばamおよびpm)が、生成された正規表現に直接含まれることを可能にし、偽陽性を低減し、正規表現出力をより人間により可読なものにすることができる。 As mentioned above, the LCS algorithm remembers underlying text fragments in the input character sequence that can potentially be inserted back into the final regular expression, such as the string "iPhone" in FIG. , can be configured to hold By keeping track of the text fragment that originally resulted in the assigned category code for that span, such an embodiment allows literal text (e.g. am and pm) to be included directly in the generated regular expression. , can reduce false positives and make the regular expression output more human readable.

いくつかの実施形態では、あるヒューリスティックを用いて、広くマッチする正規表現コードとは対照的に、生成された正規表現にいつストリングリテラルを出力するべきかを判断することができる。上述したように、場合によっては、正規表現がストリングフラグメントに対して正確なマッチを必要とすることが望ましい場合がある。したがって、いくつかの実施形態では、あるヒューリスティックを用いて、正確なストリングフラグメントが正規表現に出力されるかどうかを判断してもよい。例えば、あるヒューリスティックは、特定のスパンについて、今までにたった1つの特定のストリングフラグメント(例えば、"pm")に遭遇した場合、そしてそのスパンについて2つ以上の例が存在する場合、その正確なストリングフラグメントが正規表現に出力される、と判断してもよい。句読点スパンの場合、ヒューリスティックは、(例えば、句読点は変化する可能性がより低いという仮定に基づいて)そのスパンについて閾値を1回だけの発生に低下させてもよい。例えば、 In some embodiments, certain heuristics can be used to determine when string literals should be output in the generated regular expression as opposed to broadly matching regular expression code. As mentioned above, in some cases it may be desirable for the regular expression to require an exact match against the string fragment. Therefore, in some embodiments, some heuristic may be used to determine whether the correct string fragment is output to the regular expression. For example, one heuristic is that if only one particular string fragment (e.g., "pm") has ever been encountered for a particular span, and if there are more than one instance of that span, then the exact It may be determined that the string fragment is output to the regular expression. For punctuation spans, the heuristic may lower the threshold to only one occurrence for that span (eg, based on the assumption that punctuation is less likely to change). for example,

Figure 2022538705000011
Figure 2022538705000011

の両方について、正規表現内にリテラルストリングを出力するために、閾値は、1回だけの発生まで下げられてもよい。ヒューリスティックは、正確なストリングフラグメントを正規表現に出力するのに必要な例の閾値数に基づいて、ある程度制限的になるように修正および/または調整されてもよい。ヒューリスティックが(リテラルストリングフラグメントをあまりに容易に正規表現に出力することによって)過剰に制限的であることにおいて誤る場合には、ユーザは、追加の陽性例を導入することによって補ってもよいことに留意されたい。同様に、ヒューリスティックエラーが(あまりにしばしば広範な正規表現コードを出力することによって)過剰に許容的であることにおいて誤る場合には、ユーザは、追加の陰性例を導入することによって補ってもよい。ヒューリスティックは、以前のユーザインタラクションおよび実験に基づいて、適切な量の制限を伴って最初にプログラムされ(およびその後調整され)ることができる。 For both , the threshold may be lowered to only one occurrence to output the literal string within the regular expression. The heuristics may be modified and/or adjusted to be somewhat restrictive based on the threshold number of examples required to output the correct string fragment to the regular expression. Note that if the heuristic errs in being overly restrictive (by outputting literal string fragments into the regular expression too easily), the user may compensate by introducing additional positive examples. want to be Similarly, if the heuristic error errs in being overly permissive (by outputting too often broad regular expression code), the user may compensate by introducing additional negative examples. Heuristics can be initially programmed (and subsequently adjusted) with appropriate amounts of limits based on previous user interaction and experimentation.

図4を参照して上述したように、単純化処理は、正規表現生成器110によって実行されてもよく、その間、正規表現は、様々な技法を用いて単純化されてもよい。場合によっては、単純化は、(例えば、中括弧を用いて)長形正規表現繰り返しコードを正規表現短手コード(例えば、*, +,および?)に置換することを含み得る。例えば、スパンが、例えば、0と3(最小と最大)との間の繰り返しを表すストリングフラグメント例から来る場合、正規表現生成器110は、偽陰性を防止し、判読性を改善するために、正規表現に{0,3}の代わりに*を出力することによって、表現を単純化することができる。さらに、{a,b}構文を頻繁に用いる代わりに、正規表現生成器110は、代わりに、a>2またはb>4の場合に、+構文を用いてもよい。これは、生成された正規表現をより判読性にし、偽陰性を回避する可能性を高める。 As described above with reference to FIG. 4, the simplification process may be performed by regular expression generator 110, during which the regular expression may be simplified using various techniques. In some cases, simplification may involve replacing long regular expression repeat codes (eg, using curly braces) with regular expression short codes (eg, *, +, and ?). For example, if the span comes from an example string fragment that represents repetitions between, say, 0 and 3 (minimum and maximum), then the regular expression generator 110 may, to prevent false negatives and improve readability: You can simplify the expression by outputting * instead of {0,3} in the regular expression. Further, instead of frequently using the {a,b} syntax, the regular expression generator 110 may instead use the + syntax if a>2 or b>4. This makes the generated regular expression more readable and increases the chances of avoiding false negatives.

場合によっては、予め定義されたキャラクタ範囲のバンクが用いられてもよい。例えば、文字に対する正規表現Unicodeキャラクタカテゴリは In some cases, a bank of predefined character ranges may be used. For example, the regular expression Unicode character category for characters is

Figure 2022538705000012
Figure 2022538705000012

であり、それは、[A-Z]などの、より古いキャラクタ範囲と比較して、周知でないかまたは容易に判読可能でないかもしれない。したがって、英語入力の場合、正規表現生成器110は、[A-Z], [a-z], および [A-Za-z]を , which may not be well known or readily readable compared to older character ranges such as [A-Z]. Thus, for English input, the regular expression generator 110 converts [A-Z], [a-z], and [A-Za-z] to

Figure 2022538705000013
Figure 2022538705000013

に置換することを、所与の例がそれら置換物の1つと上手くマッチし得る場合には、行ってもよい。 may be made if a given example can be successfully matched with one of those substitutions.

さらに、正規表現生成器110は、いくつかの実施形態では、正規表現における空白に関して最大許容度までデフォルトするよう構成され得る。本明細書で説明されるように、正規表現生成器110は、例えば、場合によっては、広範なマッチするコードよりもリテラルストリングフラグメントを好み、中括弧内の繰り返し出力に最小および最大境界を適用することによって、より特定の正規表現を生成するよう構成され得る。しかしながら、空白に関しては、正規表現生成器110は、いくつかの実施形態では、最大許容度までデフォルトするよう構成されてもよい。すなわち、任意の空白(例えば、単語間に現れる1つの空白であっても)について、正規表現生成器110は、それを正規表現カテゴリコード Additionally, regular expression generator 110 may be configured in some embodiments to default to a maximum tolerance for whitespace in regular expressions. As described herein, the regular expression generator 110 may, for example, prefer literal string fragments to extensive matching code in some cases, and apply minimum and maximum bounds to repeated output within curly braces. can be configured to generate more specific regular expressions. However, for whitespace, the regular expression generator 110 may be configured to default to a maximum tolerance in some embodiments. That is, for any white space (eg, even a single space that appears between words), the regular expression generator 110 converts it to the regular expression category code

Figure 2022538705000014
Figure 2022538705000014

として維持するよう構成されてもよく、繰り返しを、1つまたは複数を意味する+であるよう指定してもよい。したがって、そのような実施形態は、余分の空白、または正確にマッチされることができる(例えば、完全に構造化されていないテキストにおけるような)タブおよび復帰さえも、予想し、マッチし得る。 , and repeats may be specified to be +, which means one or more. Thus, such an embodiment can anticipate and match extra white space, or even tabs and carriage returns that can be matched exactly (eg, as in completely unstructured text).

場合によっては、生成された正規表現内の繰り返しは、文字通り繰り返す正規表現コードに展開され得る。 In some cases, repetitions within the generated regular expression may expand into literally repeating regular expression code.

Figure 2022538705000015
Figure 2022538705000015

例えば、正規表現生成器110は、Unicodeカテゴリコードの長さが2つのキャラクタ(例えば For example, the regular expression generator 110 may generate Unicode category codes that are two characters in length (e.g.

Figure 2022538705000016
Figure 2022538705000016

)であり、繰り返し数が4以下の場合、またはUnicodeカテゴリコードの長さが3つのキャラクタ(例えば ) and the number of repetitions is 4 or less, or the Unicode category code is 3 characters long (e.g.

Figure 2022538705000017
Figure 2022538705000017

)であり、繰り返し数が3以下の場合、またはUnicodeカテゴリコードの長さが3つのキャラクタより長く、繰り返し数が2以下である場合、繰り返しを展開してもよい。さらに、いくつかの実施形態では、リテラルキャラクタを出力する必要がある場合(例えば、正規表現「特殊文字」)、正規表現生成器110は、それを逃れるよう構成されてもよい。 ) and the repetitions may be expanded if the number of repetitions is 3 or less, or if the length of the Unicode category code is greater than 3 characters and the number of repetitions is 2 or less. Additionally, in some embodiments, if a literal character needs to be output (eg, a regular expression "special character"), the regular expression generator 110 may be configured to escape it.

様々な追加の実施形態では、正規表現生成器110は、様々なタイプの対になった括弧(たとえば、{および})を検出し、否定されたキャラクタクラス(たとえば、[^}]*)を有する正規表現を生成するよう構成され得る。例えば、ユーザによって強調表示された(または別様に選択された)テキスト内、またはシステムへの陽性/陰性例他の入力内では、開いた括弧または閉じた括弧が検出され、対応する括弧とマッチされるかまたはペアリングされてもよい。いくつかの例では、 In various additional embodiments, regular expression generator 110 detects various types of paired parentheses (e.g., { and }) and replaces negated character classes (e.g., [^}]*) with can be configured to generate a regular expression with For example, within text highlighted (or otherwise selected) by the user, or within positive/negative examples or other input to the system, an open or closed bracket is detected and matched with the corresponding bracket. may be connected or paired. In some examples,

Figure 2022538705000018
Figure 2022538705000018

のうちのいくつかまたはすべてを含む複数の異なるタイプの括弧が入力テキスト内で検出されてもよい。したがって、一例として、HTMLタグの場合、<[a-z]+(?: [a-z]+=[a-z]+>のようなもの代わりに<[^>]*>を生成してもよい。様々な種類の括弧を検出およびペアリングするとき、正規表現生成器110は、括弧内にネスト化された括弧を適切に検出およびペアリングするよう構成されてもよいし、入力の強調表示された(またはそうでなければ、ユーザ選択された)部分と重なる括弧を無視するよう構成されてもよい。また、場合によっては、正規表現生成器110は、コンテンツが一意である場合に括弧間に新たな否定されたキャラクタクラスを用いないかもしれない。すなわち、コンテンツが常にすべて同じである場合(例えば、HTMLの例を続けると、識別されるすべてのタグが<h1>である場合)、リテラルは、否定された大括弧キャラクタクラスの代わりに、生成された正規表現に出力されてもよい(例えば、<[^>]*>の代わりに<h1>だけの出力)。 Several different types of brackets may be detected in the input text, including some or all of the . So, as an example, for HTML tags you might generate <[^>]*> instead of something like <[a-z]+(?: [a-z]+=[a-z]+>. When detecting and pairing parentheses of sorts, the regular expression generator 110 may be configured to properly detect and pair parentheses nested within parentheses or highlighted (or Otherwise, the regular expression generator 110 may be configured to ignore parentheses that overlap the (user-selected) portion, and in some cases, the regular expression generator 110 may add a new negation between parentheses if the content is unique. i.e., if the content is always all the same (e.g., continuing the HTML example, if all the tags identified are <h1>), the literal is negated may be output in the generated regular expression instead of the bracketed character class (e.g. just output <h1> instead of <[^>]*>).

例示的な実施形態では、強調表示がちょうど括弧によって包含されるとき、括弧内に隠すこと(collapsing)ことが許容されてもよい。これにより、挿入句的注釈の抽出が可能になる。例えば、(Windows NT)からWindows NTを抽出するためには、生成されたレゲックスは、 In an exemplary embodiment, collapsing within parentheses may be allowed when the highlighting is just contained by the parentheses. This allows extraction of parenthetical annotations. For example, to extract Windows NT from (Windows NT), the generated regex would be

Figure 2022538705000019
Figure 2022538705000019

それは、より一般的であり、もたらされる偽陰性がより少ないであろう。
III.正規表現コードの組み合わせ上で最長共通サブシーケンスアルゴリズムを用いた正規表現生成
本明細書で説明するさらなる態様は、3つ以上のストリング(たとえば3つ以上の別個のキャラクタシーケンス)を含む入力データに基づく正規表現の生成に関する。3つ以上のストリングが入力データとして識別される場合、正規表現生成器110は、LCSアルゴリズム実行のシーケンスに対して最適な順序が判断される性能最適化特徴を使用し得る。以下で説明するように、3つ以上のストリングに関する性能最適化機能は、各ストリングに対応する頂点と、各ストリングと他のすべてのストリングとの間のLCS出力のサイズに基づき得るエッジ長さ/重みとでグラフを構築することを含み得る。次いで、それらのエッジ重みを使用して最小スパニングツリーが導出され得、入力ストリングの順序を判断するために、深さ優先トラバースが実行され得る。最後に、判断された入力ストリングの順序を使用して、一連のLCSアルゴリズムが行われてもよい。
It will be more common and result in fewer false negatives.
III. Regular Expression Generation Using the Longest Common Subsequence Algorithm on Regular Expression Code Combinations Further aspects described herein are based on input data comprising three or more strings (e.g., three or more distinct character sequences) Concerning regular expression generation. If more than two strings are identified as input data, the regular expression generator 110 may use a performance optimization feature that determines the optimal order for the sequence of LCS algorithm executions. As described below, performance optimization functions for three or more strings can be based on the size of the vertices corresponding to each string and the LCS output between each string and all other strings edge length/ constructing a graph with the weights. A minimum spanning tree may then be derived using those edge weights, and a depth-first traversal may be performed to determine the order of the input strings. Finally, using the determined input string order, a series of LCS algorithms may be performed.

図5は、正規表現コードの、より大きなセット(たとえば3つ以上のキャラクタシーケンス)に対して、最長共通サブシーケンス(LCS)アルゴリズムを使用して、正規表現を生成するための処理500を示すフローチャートである。したがって、この例におけるステップ502~505は、図3で上述したステップ303に対応し得る。しかしながら、この例は、3つ以上の入力キャラクタシーケンスに基づいて正規表現を生成することに関するため、LCSアルゴリズムは複数回実行されてもよい。たとえば、3つ以上の入力ストリングのランタイムの指数関数的な増加を避けるために、LCSアルゴリズムは複数回実行されてもよく、各実行は2つの入力ストリングだけに対して実行される。たとえば、正規表現生成器110は、2つのストリング(たとえば2つの入力キャラクタシーケンスまたは2つの変換された正規表現コード)に対してLCSアルゴリズムの最初の実行を実行してもよく、次いで、第1のLCSアルゴリズムの出力および第3のストリングに対してLCSアルゴリズムの第2の実行を実行してもよく、次いで、第2のLCSアルゴリズムの出力および第4のストリングに対してLCSアルゴリズムの第3の実行を実行してもよい等となる。 FIG. 5 is a flowchart illustrating a process 500 for generating regular expressions using the longest common subsequence (LCS) algorithm for larger sets of regular expression codes (eg, sequences of three or more characters). is. Accordingly, steps 502-505 in this example may correspond to step 303 described above in FIG. However, since this example relates to generating regular expressions based on more than two input character sequences, the LCS algorithm may be run multiple times. For example, to avoid an exponential increase in runtime for more than two input strings, the LCS algorithm may be run multiple times, each run for only two input strings. For example, regular expression generator 110 may perform a first run of the LCS algorithm on two strings (e.g., two input character sequences or two transformed regular expression codes), then a first A second execution of the LCS algorithm may be performed on the output of the LCS algorithm and the third string, and then a third execution of the LCS algorithm on the output of the second LCS algorithm and the fourth string. and so on.

そのような実施形態の性能を改善および/または最適化するために、LCSアルゴリズムのシーケンスを実行する入力ストリング(たとえば入力キャラクタシーケンスまたは正規表現コード)の最適な順序を判断することが望ましい場合がある。たとえば、入力ストリングを取り込むための良好な順序は、任意選択のスパンの数を最小にすることなどによって、生成された正規表現の可読性に影響を及ぼし得る。生成されたレゲックスを簡潔に保つために、現在のレゲックスにLCSされる追加のストリングは、現在のレゲックス(既に見られたストリングをLCSしたことからの中間結果)に既にいくらか類似していることが好ましい。 To improve and/or optimize the performance of such embodiments, it may be desirable to determine the optimal order of input strings (e.g., input character sequences or regular expression codes) to run a sequence of LCS algorithms. . For example, good order for fetching input strings can affect the readability of generated regular expressions, such as by minimizing the number of optional spans. To keep the generated regex concise, we note that the additional strings that are LCS'd to the current regex already have some similarity to the current regex (the intermediate result from LCSing already seen strings). preferable.

これにより、ステップ501では、複数(たとえば3つ以上)の入力キャラクタシーケンスが正規表現コードに変換される。ステップ502では、LCSアルゴリズムを使用して正規表現コードを処理する順序を判断する。ステップ502における順序の判断については、図7を参照して後述する。ステップ503において、判断された順序における最初の2つの正規表現コードが(ステップ503の最初の反復のために)選択されるか、または判断された順序における次の正規表現コードが(ステップ503の後続の反復のために)選択される。ステップ504において、LCSアルゴリズムは、正規表現コードのフォーマットに対応する2つの入力ストリングに対して実行される。ステップ504の第1の反復では、LCSアルゴリズムは、判断された順序における最初の2つの正規表現コードに対して実行され、ステップ504の後続の反復では、LCSアルゴリズムは、判断された順序における次の正規表現コードおよび前のLCSアルゴリズムの出力(同じ正規表現コードのフォーマットであってもよい)に対して実行される。ステップ505において、正規表現生成器110は、LCSアルゴリズムへの入力としてまだ提供されていない、判断された順序における追加の正規表現コードがあるか否かを判断する。判断された順序におけるそのような追加の正規表現コードがある場合、処理は、LCSアルゴリズムの別の実行のためにステップ503に戻る。そうでない場合には、ステップ506において、LCSアルゴリズムの最後の実行の出力に基づいて、正規表現が生成される。 Thus, in step 501, multiple (eg, three or more) input character sequences are converted into regular expression codes. At step 502, the LCS algorithm is used to determine the order in which to process the regular expression code. The determination of the order in step 502 is described below with reference to FIG. In step 503, either the first two regular expression codes in the determined order are selected (for the first iteration of step 503) or the next regular expression code in the determined order is selected (following step 503). ) is selected for iterations of In step 504, the LCS algorithm is run on two input strings corresponding to the regular expression code format. In the first iteration of step 504, the LCS algorithm is performed on the first two regular expression codes in the determined order, and on subsequent iterations of step 504, the LCS algorithm is performed on the next It is run on the regular expression code and the output of the previous LCS algorithm (which may be in the same regular expression code format). At step 505, regular expression generator 110 determines whether there are additional regular expression codes in the determined order that have not yet been provided as input to the LCS algorithm. If there are such additional regular expression codes in the determined order, processing returns to step 503 for another execution of the LCS algorithm. Otherwise, in step 506 a regular expression is generated based on the output of the last run of the LCS algorithm.

図6は、5つの入力キャラクタシーケンス例に基づいて正規表現を生成するための例示的な図である。この例では、各入力されたキャラクタシーケンスを正規表現コードに変換し、次いで、判断された正規表現コードの順序に基づいてLCSアルゴリズムを繰り返し実行する。したがって、図6は、図5において上述した処理を適用する一例を示す。この例では、5つの正規表現コードについて判断された順序は、コード#1~コード#5であり、各コードは、判断された順序でLCSアルゴリズムに入力されて、正規表現出力が生成される。最終の正規表現出力(Reg Ex#4)は、入力キャラクタシーケンスの5つすべてに基づいて生成された最終正規表現に対応する。 FIG. 6 is an exemplary diagram for generating a regular expression based on five example input character sequences. In this example, each input character sequence is converted to a regular expression code, and then the LCS algorithm is repeatedly performed based on the determined order of the regular expression codes. FIG. 6 thus shows an example of applying the process described above in FIG. In this example, the determined order for the five regular expression codes is Code #1 through Code #5, and each code is input to the LCS algorithm in the determined order to produce the regular expression output. The final regular expression output (Reg Ex#4) corresponds to the final regular expression generated based on all five of the input character sequences.

図7は、正規表現コードの、より大きいセット(たとえば3つ以上)上における最長共通サブシーケンス(LCS)アルゴリズムについての実行順序を判断するための処理を示すフローチャートである。したがって、この例に示されるように、ステップ701~704は、上述のステップ502における順序判断に対応し得る。ステップ701において、LCSアルゴリズムは、入力データに対応する正規表現コードの各他とは異なるペア上で実行されてもよく、得られた出力LCSは、実行ごとに記憶されてもよい。したがって、k個の入力データについて、これは、LCSアルゴリズムを通して実行されるストリングのすべての(k(k-1))/2個の可能なペア形成、またはいくつかの実施形態ではk(k-1)を表し得る。たとえば、k=3の入力キャラクタシーケンスが受け取られた場合、LCSアルゴリズムは、ステップ701において3回実行されてもよく;k=4の入力キャラクタシーケンスが受け取られた場合、LCSアルゴリズムは、ステップ701において6回実行されてもよく;k=5の入力キャラクタシーケンスが受け取られた場合、LCSアルゴリズムは、ステップ701において10回実行されてもよい等となる。ステップ702において、全結合グラフは、(k(k-1))/2個のエッジのエッジ重みが2つのノード間の未処理LCS出力の長さでストリングを表すk個のノードから構築され得る。ステップ703では、ステップ702における全結合グラフから最小スパニングツリーを導出し得る。ステップ704では、深さ優先トラバースが最小スパニングツリー上で実行され得る。このトラバースの出力は、正規表現コードがLCSアルゴリズム実行のシーケンスに入力される順序に対応し得る。 FIG. 7 is a flowchart illustrating a process for determining execution order for the longest common subsequence (LCS) algorithm on a larger set (eg, three or more) of regular expression codes. Thus, as shown in this example, steps 701-704 may correspond to the order determination in step 502 above. In step 701, the LCS algorithm may be run on each distinct pair of regular expression codes corresponding to the input data, and the resulting output LCS may be stored for each run. Thus, for k input data, this is all (k(k−1))/2 possible pairings of strings run through the LCS algorithm, or in some embodiments k(k− 1). For example, if k=3 input character sequences are received, the LCS algorithm may be executed three times in step 701; if k=4 input character sequences are received, the LCS algorithm is It may be run 6 times; if k=5 input character sequences are received, the LCS algorithm may be run 10 times in step 701, and so on. In step 702, a fully connected graph may be constructed from k nodes where the edge weights of (k(k−1))/2 edges represent a string with the length of the raw LCS output between the two nodes. . At step 703 , a minimum spanning tree may be derived from the total connectivity graph at step 702 . At step 704, a depth-first traversal may be performed on the minimal spanning tree. The output of this traversal may correspond to the order in which the regular expression code is entered into the sequence of LCS algorithm executions.

図8Aおよび図8Bを簡単に参照すると、図5に、受け取られたk=5の入力キャラクタシーケンスに基づいて生成された全結合グラフの例が示され、図8Bに、全結合グラフに対する最小スパニングツリー表現が示されている。 8A and 8B, FIG. 5 shows an example of a fully connected graph generated based on a received k=5 input character sequence, and FIG. 8B shows a minimum spanning graph for the fully connected graph. A tree representation is shown.

いくつかの実施形態では、図5~図8Bに記載されるアプローチは、性能に関して追加の技術的利点を提供し得る。たとえば、LCSアルゴリズムの、特定の従来の実現例は、O(n)のランタイム性能を示すことができ、ここで、nはストリングの長さである。そのような実現例を2だけの代わりにk個のストリングに拡張すると、指数関数的なランタイム性能O(n)をもたらし得、なぜならば、LCSアルゴリズムはk次元空間を探索するよう求められ得るからである。LCSアルゴリズムのそのような従来の実現例は、リアルタイムのオンラインユーザ体験に対しては、充分に機能しないか、または十分に適していないかもしれない。 In some embodiments, the approaches described in FIGS. 5-8B may provide additional technical advantages in terms of performance. For example, certain conventional implementations of the LCS algorithm can exhibit O(n 2 ) runtime performance, where n is the length of the string. Extending such an implementation to k strings instead of just 2 can yield exponential run-time performance O(n k ), since the LCS algorithm can be asked to search a k-dimensional space. It is from. Such conventional implementations of LCS algorithms may not perform well or be well suited for real-time online user experiences.

上述したように、LCSアルゴリズムは、(k(k-1))/2回実行されてもよく、その場合、時として重複は以前に見られたのと全く同じであり、なぜならば、LCSアルゴリズムは、ユーザからの生の入力例がレゲックスカテゴリコードに変換された場合であり得るためである。したがって、いくつかの場合においては、記憶化が実現され得、キャッシュを使用して、以前に見られたLCS問題を以前に機能したLCS解にマッピングすることができる。 As mentioned above, the LCS algorithm may be run (k(k−1))/2 times, where sometimes the overlap is exactly the same as seen before, because the LCS algorithm may be the case when raw input examples from the user are converted to Regex category codes. Thus, in some cases memorization may be implemented and a cache may be used to map a previously seen LCS problem to a previously worked LCS solution.

ある例示的な実施形態も、キャッシュテーブルが大きすぎる場合にキャッシュサイズを制御する有効な方法を提供する。キャッシュの一部を削除してもよい。例えば、切り捨てることができるハッシュマップテーブルを用いることができる。ハッシュマップテーブルは、任意に切り捨てることができる。 Certain exemplary embodiments also provide an effective method of controlling cache size when the cache table is too large. Part of the cache may be deleted. For example, a hashmap table that can be truncated can be used. Hashmap tables can be arbitrarily truncated.

IV.陽性および陰性パターンマッチング例に基づく正規表現の生成
本明細書で説明するさらなる態様は、陽性および陰性の両方の例に対応する入力データに基づいて正規表現を生成することに関する。上述したように、陽性例は、正規表現生成器によって生成される正規表現にマッチするべき例のストリングとして指定される入力データキャラクタシーケンスを指し得る。一方、陰性例は、正規表現生成器によって生成される正規表現とマッチするべきでない例のストリングとして指定される入力データキャラクタシーケンスを指し得る。以下で説明するように、いくつかの実施形態では、正規表現生成器110は、位置、およびその位置で陽性例を陰性例から区別するキャラクタの最短サブシーケンスを識別するように構成され得る。次いで、最短サブシーケンスは、生成された正規表現にハードコード化され得、陽性例は正規表現とマッチすることになり、陰性例は正規表現によって除外される(たとえばマッチしない)ことになる。
IV. Generating Regular Expressions Based on Positive and Negative Pattern Matching Examples A further aspect described herein relates to generating regular expressions based on input data corresponding to both positive and negative examples. As noted above, positive examples may refer to an input data character sequence that is specified as a string of examples to match the regular expression generated by the regular expression generator. Negative examples, on the other hand, may refer to an input data character sequence that is specified as a string of examples that should not match the regular expression generated by the regular expression generator. As described below, in some embodiments, the regular expression generator 110 may be configured to identify a position and the shortest subsequence of characters that distinguish positive examples from negative examples at that position. The shortest subsequence can then be hard-coded into the generated regular expression such that positive examples will be matched by the regular expression and negative examples will be excluded (eg, not matched) by the regular expression.

図9は、陽性のキャラクタシーケンス例および陰性のキャラクタシーケンス例に基づいて正規表現を生成するための処理900を示すフローチャートである。ステップ901において、正規表現生成器110は、陽性例に対応する1つまたは複数の入力データキャラクタシーケンスを受け取ることができる。ステップ902において、正規表現生成器110は、受け取った陽性例に基づいて正規表現を生成し得る。したがって、ステップ901~902は、入力データキャラクタシーケンスに基づいて正規表現を生成するために、上で論じた図3または図5において実行されるステップの一部またはすべてを含み得る。 FIG. 9 is a flowchart illustrating a process 900 for generating regular expressions based on positive and negative example character sequences. At step 901, regular expression generator 110 may receive one or more input data character sequences corresponding to positive examples. At step 902, regular expression generator 110 may generate a regular expression based on the received positive examples. Accordingly, steps 901-902 may include some or all of the steps performed in Figures 3 or 5 discussed above to generate a regular expression based on an input data character sequence.

ステップ903において、正規表現生成器110は、陰性例に対応する1つの追加入力データキャラクタシーケンスを受け取ることができる。したがって、ステップ902で生成された正規表現とマッチしないように、陰性例を具体的に指定する。いくつかの実施形態では、ステップ903において受け取られた陰性例は、ステップ902において生成された正規表現に対して最初にテストされてもよく、陰性例が正規表現とマッチしないと判断された場合、さらなるアクションはとられない。しかしながら、この例では、ステップ903において受け取られた陰性例のうちの少なくとも1つはステップ902において生成された正規表現とマッチする、と仮定されてもよい。したがって、ステップ904では、ステップ902で生成された正規表現内で曖昧性除去位置を判断してもよい。いくつかの実施形態では、曖昧性除去位置は、(たとえば正規表現の始まりにおける)プレフィックス位置または(たとえば正規表現の終わりにおける)サフィックス位置のいずれかとして選択され得る。たとえば、正規表現生成器110は、陽性例を陰性例から区別するためにプレフィックスで必要とされるであろう第1の数のキャラクタと、陽性例を陰性例から区別するためにサフィックスで必要とされるであろう第2の数のキャラクタとを判断してもよい。次いで、正規表現生成器110は、必要とされる置換キャラクタの最短数に基づいてサフィックスまたはプレフィックスを選択し得る。場合によっては、曖昧性除去位置としてプレフィックスを使用することが、可読性のために好まれる(たとえば重み付けされる)ことがある。さらに他の例では、曖昧性除去位置は、正規表現のプレフィックスまたはサフィックスに対応しないミッドスパン位置であり得る。 At step 903, regular expression generator 110 may receive one additional input data character sequence corresponding to a negative example. Therefore, negative examples are specified specifically so that they do not match the regular expression generated in step 902 . In some embodiments, the negative examples received in step 903 may first be tested against the regular expression generated in step 902, and if it is determined that the negative examples do not match the regular expression, No further action is taken. However, in this example it may be assumed that at least one of the negative examples received in step 903 matches the regular expression generated in step 902 . Accordingly, step 904 may determine the disambiguation position within the regular expression generated in step 902 . In some embodiments, the disambiguation position may be selected as either a prefix position (eg, at the beginning of the regular expression) or a suffix position (eg, at the end of the regular expression). For example, the regular expression generator 110 determines the first number of characters that would be needed in the prefix to distinguish positive from negative examples and the number of characters that would be needed in the suffix to distinguish positive from negative examples. A second number of characters that will be played may be determined. Regular expression generator 110 may then select a suffix or prefix based on the minimum number of replacement characters required. In some cases, using prefixes as disambiguating locations may be preferred (eg, weighted) for readability. In yet another example, the disambiguation positions may be midspan positions that do not correspond to regular expression prefixes or suffixes.

ステップ905において、正規表現生成器110は、判断された位置で正規表現に挿入されると、陽性例を陰性例から区別することができるカスタムキャラクタクラスの置換シーケンス(またはより具体的には、カスタム「大括弧」正規表現キャラクタクラスのシーケンス)を判断することができる。いくつかの実施形態では、ステップ905において、正規表現生成器110は、陽性例および陰性例の各々から、曖昧性除去位置(または置換位置)に対応するテキストフラグメントを取り出し、次いで、それらテキストフラグメントを使用して、陽性例を陰性例から区別する置換シーケンスとして使用される弁別子を判断することができる。さらに、ステップ905で判断される弁別子置換シーケンスは、カスタムキャラクタクラスの、複数の異なる置換シーケンスを含むことができ、それらは、正規表現内の同じ位置または異なる位置のいずれかで置換されることができる。 In step 905, the regular expression generator 110 generates a replacement sequence of custom character classes (or, more specifically, a custom character class) that, when inserted into the regular expression at the determined position, can distinguish positive from negative examples. sequence of the "bracket" regular expression character class). In some embodiments, in step 905, regular expression generator 110 retrieves text fragments corresponding to disambiguation positions (or replacement positions) from each of the positive and negative examples, and then replaces those text fragments with can be used to determine discriminators that are used as permutation sequences to distinguish positive from negative examples. Further, the discriminator replacement sequence determined in step 905 can include multiple different replacement sequences for the custom character class, which are replaced either at the same position or at different positions within the regular expression. can be done.

上述したように、場合によっては、ステップ905における置換シーケンスの判断は、ステップ904における曖昧性除去位置(または置換位置)の判断との関連で実行されてもよい。たとえば、正規表現生成器110は、第1の可能な置換位置において陽性例を陰性例から区別し得る1つまたは複数の置換シーケンスを判断し得る。正規表現生成器110はまた、第2の異なる可能な置換位置において陽性例を陰性例から区別し得る1つまたは複数の他の置換シーケンスも判断し得る。この例において、異なる可能な置換位置および対応する置換シーケンスの間で選択するとき、正規表現生成器110は、ヒューリスティック式を適用して、置換位置のキャラクタのサイズ、ならびに対応する置換シーケンスの数および/またはサイズ、のうちの1つまたは複数に基づいて選択を実行することができる。最後に、ステップ906において、正規表現は、1つまたは複数の判断された置換シーケンスを判断された位置に挿入して正規表現の以前の部分を置換することによって、修正され得る。場合によっては、ステップ906における正規表現の修正に続いて、陽性例および/または陰性例を、修正された正規表現に対してテストして、陽性例が正規表現とマッチし、陰性例が正規表現とマッチしないことを確認してもよい。 As noted above, in some cases the determination of permutation sequences in step 905 may be performed in conjunction with the determination of disambiguation positions (or permutation positions) in step 904 . For example, regular expression generator 110 may determine one or more replacement sequences that may distinguish positive from negative examples at the first possible replacement position. Regular expression generator 110 may also determine one or more other permutation sequences that may distinguish positive from negative examples at a second different possible permutation position. In this example, when choosing between different possible replacement positions and corresponding replacement sequences, the regular expression generator 110 applies a heuristic formula to determine the size of characters at the replacement positions as well as the number and number of corresponding replacement sequences. The selection can be performed based on one or more of: size. Finally, at step 906, the regular expression may be modified by inserting one or more determined replacement sequences at the determined positions to replace previous portions of the regular expression. Optionally, following modification of the regular expression in step 906, the positive and/or negative examples are tested against the modified regular expression such that positive examples match the regular expression and negative examples match the regular expression. You may check that it does not match with

図10Aおよび図10Bは、陽性および陰性のキャラクタシーケンスの例に基づく正規表現の生成を示す例示的なユーザインターフェイス画面である。したがって、図10Aおよび図10Bに示される例は、上述の図9の処理の実行中に表示されるユーザインターフェイスに対応し得る。図10Aにおいて、ユーザは、データ入力キャラクタシーケンスの3つの陽性例1001を提供し、正規表現生成器110は、陽性例の各々にマッチする正規表現1002を生成する。次に、図10Bにおいて、ユーザは、1つの陰性例1004を提供し、正規表現生成器110は、陽性例の現在のセット1003および陰性例の現在のセット1004の両方に基づく修正された正規表現1005を生成する。 10A and 10B are exemplary user interface screens showing the generation of regular expressions based on example positive and negative character sequences. Accordingly, the examples shown in FIGS. 10A and 10B may correspond to user interfaces displayed during execution of the process of FIG. 9 described above. In FIG. 10A, a user provides three positive examples 1001 of a data input character sequence, and regular expression generator 110 generates regular expressions 1002 that match each of the positive examples. Next, in FIG. 10B, the user provides one negative example 1004 and the regular expression generator 110 generates a modified regular expression based on both the current set of positive examples 1003 and the current set of negative examples 1004. 1005 is generated.

上で注記したように、いくつかの実施形態では、陽性例および陰性例の両方が受け取られると、正規表現生成器110は、弁別子、つまり陽性例を陰性例から区別する1つまたは複数のキャラクタの最短サブシーケンスを識別してもよい。選択された弁別子は、最短シーケンス(たとえばカテゴリコードで表現される)であってもよく、陽性または陰性のいずれかであってもよく、陽性例はマッチし、陰性例はマッチしないことになる。場合によっては、弁別子は、次いでステップ905で正規表現にハードコード化され得る置換サブシーケンスに対応してもよい。一例として、「[AL][a-z]+」において、[AL]は、それが街路サフィックスに適用されると仮定すると、「Alley(小路)」、「Avenue(大通り)」、および「Lane(横町)」とはマッチする(またはそれらを認める)であろうが、他のすべてのものとはマッチしない(または許容しない)であろう陽性の弁別子である。別の例として、「[BC][o][a-z]+」において、[BC][o]は、「Boulevard(並木道)」および「Court(袋小路)」とマッチするであろう2つのキャラクタクラスのシーケンスからなる陽性の弁別子である。さらに別の例として、「[^A][a-z]+」において、[LA]は、「Alley」および「Avenue」を許容しないであろう陰性の弁別子であってもよい。場合によっては、アルゴリズムは、正しく弁別するために陰性後読みを生成してもよい。たとえば、(?<!Av)[A-Za-z]+は、「Avenue」は除外するが、「Alley」は認めるであろう。 As noted above, in some embodiments, when both positive and negative examples are received, the regular expression generator 110 generates a discriminator, i.e., one or more A shortest subsequence of characters may be identified. The selected discriminator may be the shortest sequence (e.g., represented by a category code) and may be either positive or negative, with positive examples matching and negative examples not matching. . In some cases, the discriminator may correspond to a replacement subsequence that can then be hard-coded into the regular expression at step 905 . As an example, in "[AL][a-z]+", [AL] is equivalent to "Alley," "Avenue," and "Lane," assuming it applies to street suffixes. )” are positive discriminators that will match (or allow them) but will not match (or disallow) all others. As another example, in "[BC][o][a-z]+", [BC][o] is two character classes that would match "Boulevard" and "Court". is a positive discriminator consisting of the sequence of As yet another example, in "[^A][a-z]+", [LA] may be a negative discriminator that would disallow "Alley" and "Avenue". In some cases, the algorithm may generate negative lookbehind to discriminate correctly. For example, (?<!Av)[A-Za-z]+ would exclude "Avenue" but allow "Alley".

別の例として、ユーザが陽性例「202-456-7800」および「313-678-8900」ならびに陰性例「404-765-9876」および「515-987-6570」を供給する場合、ある実施形態では、正規表現生成器110は、正規表現 As another example, if a user supplies positive examples "202-456-7800" and "313-678-8900" and negative examples "404-765-9876" and "515-987-6570", an embodiment Now, the regular expression generator 110 generates the regular expression

Figure 2022538705000020
Figure 2022538705000020

を生成してもよい。すなわち、置換キャラクタサブシーケンスは、正規表現のサフィックスについて、(たとえば、目的が、ビジネス電話番号とマッチする正規表現であると仮定して、)00で終わる電話番号は陽性例を陰性例から区別するという判断に基づいて、識別され得る。これは、サフィックスによる陰性例の例(より具体的に言えば、陽性のサフィックスを使用することによって陰性例に対処する例)であるが、さまざまな他の実施形態は、プレフィックス、サフィックス、またはミッドスパン位置のいずれかでの置換をサポートしてもよい。ミッドスパン位置での置換の例では、スパン内にオフセットされるキャラクタが追跡され、ミッドスパンポイントで分割され得る。 may be generated. That is, the replacement character subsequence is such that for regular expression suffixes, telephone numbers ending in 00 distinguish positive from negative examples (assuming, for example, that the objective is a regular expression that matches business telephone numbers). can be identified based on the determination that Although this is an example of negative examples by suffix (more specifically, an example of addressing negative examples by using positive suffixes), various other embodiments include prefix, suffix, or mid Substitutions at any of the span positions may be supported. In the example of substitution at mid-span positions, characters that are offset into the span can be tracked and split at the mid-span point.

プレフィックスまたはサフィックスを使用するかどうかを判断するために、いくつかの実施形態では、kaおよびプレフィックス/サフィックスのすべての組み合わせにわたって最小スコアが選択されるヒューリスティックが使用される: To determine whether to use a prefix or a suffix, some embodiments use a heuristic in which the minimum score is selected over all k a and prefix/suffix combinations:

Figure 2022538705000021
Figure 2022538705000021

ka=アフィックス(プレフィックスまたはサフィックス)の曖昧性を除去すると考えられるキャラクタの数
|Fp|=アフィックスの曖昧性を除去するために必要とされる陽性例からの一意のテキストフラグメントの数
|Fn|=アフィックスの曖昧性を除去するために必要とされる陰性例からの一意のテキストフラグメントの数
|Ep|=ユーザによって提供される(完全な)陽性例の数
|En|=ユーザによって提供される(完全な)陰性例の数
上記の例では、ヒューリスティックは、より長い曖昧性除去テキストフラグメント(したがって、たとえば、kaによる乗算)よりもより短い曖昧性除去テキストフラグメントを好むように設計される。ヒューリスティックはまた、可読性を改善するよう、サフィックス(したがって、たとえば、サフィックスに対する0.1のペナルティ)よりもプレフィックスを好むように設計される。最後に、ヒューリスティックは、より長いプレフィックスまたはサフィックスの曖昧性除去(たとえば置換)を、より多数のストリングフラグメント(したがって、たとえば、置換されるべきストリングフラグメントの数を二乗)を使用することによる曖昧性除去よりも好むように設計される。
k a = number of characters considered to disambiguate the affix (prefix or suffix)
|F p | = number of unique text fragments from positive examples required to disambiguate the affix
|F n | = number of unique text fragments from negative examples required to disambiguate the affix
|E p | = number of (complete) positive examples provided by the user
|E n | = number of (complete) negative examples provided by the user In the example above, the heuristic is a shorter disambiguation than a longer disambiguating text fragment (thus multiplication by e.g. k a ) Designed to like text fragments. The heuristic is also designed to favor prefixes over suffixes (hence, eg, a 0.1 penalty for suffixes) to improve readability. Finally, the heuristic disambiguates the longer prefix or suffix disambiguation (e.g. replacement) by using a larger number of string fragments (thus, e.g. the number of string fragments to be replaced squared). designed to be preferred over

上述したように、いくつかの実施形態はまた、陰性のミッドスパン例、ならびに陰性の後読み例および陰性の先読み例をサポートしてもよい。 As noted above, some embodiments may also support negative midspan examples, as well as negative lookbehind and negative lookahead examples.

いったんプレフィックス/サフィックスおよびk(曖昧性除去すべきキャラクタの数)が判断されると、正規表現生成器110は、さらに、その曖昧性除去を、生成された正規表現においてどのように表現するかを判断することができる。生成された正規表現は、陽性例のように見えるアフィックス(たとえばプレフィックスまたはサフィックス)について許容的(permissive)であってもよく、または陰性例のように見えるアフィックスを除外してもよい。 Once the prefix/suffix and k (the number of characters to disambiguate) are determined, the regular expression generator 110 also determines how to express the disambiguation in the generated regular expression. can judge. The generated regular expression may be permissive for affixes (eg, prefixes or suffixes) that look like positive examples, or exclude affixes that look like negative examples.

Figure 2022538705000022
Figure 2022538705000022

usePermissiveがゼロよりも大きい場合、陽性例のように見えるものは、(各キャラクタ位置)について1つずつ、陽性例から取られたキャラクタを許容する正規表現を生成することによって通される。他の場合では、正規表現生成器110は(各キャラクタ位置について)1つずつ、陰性例から取られたキャラクタを許容しない正規表現を生成することにより、陰性例のように見えるものを許容しないアプローチをとってもよい。 If usePermissive is greater than zero, what appear to be positive examples are passed by generating a regular expression that allows characters taken from positive examples, one for each character position. In other cases, the regular expression generator 110 takes an approach that disallows what appears to be a negative example by generating, one at a time (for each character position), a regular expression that disallows characters taken from negative examples. may be taken.

別の例として、陽性例8amおよび陰性例9pmについて生成された正規表現は、 As another example, the regular expression generated for a positive example at 8am and a negative example at 9pm is

Figure 2022538705000023
Figure 2022538705000023

であるかもしれない。これは、カレット構文を使用する。場合によっては、正規表現生成器110は、より短い正規表現を好むように構成されてもよく、それは、ユーザとってより可読であり得るだけでなく、より正しい可能性があり得る。その原理は、今後、頻繁に出現するキャラクタは、今後再び出現する可能性がよりありそうであり、したがって、頻繁に出現するキャラクタに強調がおかれるべきである、というものである。一意のキャラクタ|Fp|がより少ない場合(出現するものはより頻繁に出現するため、一意性はより少ない)、これは、分母内にそれを有することによって、ヒューリスティックにおいて報酬を与えられる。 may be. This uses caret syntax. In some cases, regular expression generator 110 may be configured to prefer shorter regular expressions, which may not only be more readable to the user, but may also be more likely to be correct. The principle is that characters that appear frequently in the future are more likely to appear again in the future, so emphasis should be placed on characters that appear frequently. If there are fewer unique characters |F p | (less unique, since those that occur appear more often), this is rewarded in the heuristic by having it in the denominator.

再び上記のusePermissive例のヒューリスティックを参照すると、1つの一意の陽性アフィックスを判断することは、ユーザから1つの陽性例しかない場合、大きな特色ではない。したがって、このヒューリスティックでは低い|Ep|は、分子内にそれを有することによってペナルティを科せられる(すなわち、高い|Ep|は、このヒューリスティックにおいて報酬を与えられる)。 Referring again to the usePermissive example heuristic above, determining one unique positive affix is not a great feature if there is only one positive example from the user. Therefore, a low |E p | in this heuristic is penalized by having it in the numerator (ie, a high |E p | is rewarded in this heuristic).

さらに、いくつかの実施形態では、陰性例は、後読みおよび/または先読みに基づいてもよい。たとえば、ユーザは、「323-1234」の陽性例および「202-754-9876」の陰性例を提供し、その場合、それはエリアコードを有する電話番号を除外するためにレゲックス後読み構文(?<!)の使用を伴う。 Additionally, in some embodiments, negative examples may be based on lookbehind and/or lookahead. For example, the user provides a positive example of "323-1234" and a negative example of "202-754-9876", in which case it uses the Regex lookbehind syntax (?<) to exclude phone numbers with area codes. !).

場合によっては、陰性例は、任意選択のスパンに基づいてもよい。たとえば、ユーザは、「ab」および「a2b」の陽性例および「a3b」の陰性例を提供してもよい。この場合、ある例示的な実現例は失敗し得、なぜならば、それは、必要とされるスパンのみに基づいて弁別しようとし得、「2」の桁は任意選択のスパンにあるからである。この例において、失敗とは、生成された正規表現が、陽性例のすべてに(正しく)マッチし、また、陰性例の1つまたは複数に(誤って)マッチする状況を指し得る。そのような場合、ユーザは、失敗に対して警告されることができ、生成された正規表現を手動で修復するために、および/または陰性例の一部を除去するために、ユーザインターフェイスを介して選択肢を提供されることができる。 In some cases, negative examples may be based on an optional span. For example, a user may provide "ab" and "a2b" positive examples and "a3b" negative examples. In this case, an exemplary implementation may fail because it may attempt to discriminate based only on the required span and the digit "2" is in the optional span. In this example, failure may refer to a situation in which the generated regular expression matches all of the positive examples (correctly) and one or more of the negative examples (incorrectly). In such cases, the user can be warned of the failure, and via the user interface to manually repair the generated regular expression and/or remove some of the negative examples. can be offered a choice.

V.正規表現生成のためのユーザインターフェイス
本明細書で説明する追加の態様は、正規表現の生成に関連するグラフィカルユーザインターフェイス内にいくつかの異なる特徴および機能を含む。以下で説明するように、これらの特徴のうちのあるものは、ユーザ選択のためのさまざまな選択肢、および陽性例および陰性例の強調表示、陽性例および陰性例のカラーコード化、ならびにデータセル内の複数の重複/ネストされた強調表示を含み得る。
V. User Interface for Regular Expression Generation Additional aspects described herein include several different features and functions within the graphical user interface related to regular expression generation. As described below, some of these features are various choices for user selection and highlighting of positive and negative cases, color-coding of positive and negative cases, and may contain multiple overlapping/nested highlighting of .

図11は、ユーザインターフェイス内で受信されたユーザデータ選択に基づいて正規表現を生成するための処理1100を示すフローチャートである。図11の例示的な処理は、入力データキャラクタシーケンスに基づいて正規表現を生成する前述の例のいずれかに対応し得る。しかしながら、図11は、クライアントデバイス120上で生成および表示され得るユーザインターフェイスに関する処理を説明する。ステップ1101において、ユーザインターフェイスを介したユーザからの要求に応答して、正規表現生成器110は、(たとえばデータリポジトリ130から)データを取り出し、そのデータをグラフィカルユーザインターフェイス内においてテーブル形式でレンダリング/表示してもよい。なお、この例ではテーブル形式データを用いているが、他の例ではテーブル形式データを使用および表示しなくてもよいことを理解されたい。たとえば、場合によっては、ユーザは、(ユーザインターフェイスからデータを選択するのではなく)生データを直接タイプすることができる。さらに、データがユーザインターフェイスを介して提示されるとき、データはテーブル形式である必要はなく、構造化されていないデータ(たとえばドキュメント)または半構造化(たとえば、ツイートまたはポストのような非フォーマット化/非構造化データアイテムのスプレッドシート)であってもよい。さまざまな例では、テーブル形式データは、取引データ、顧客データ、実績データ、予測データ、および/またはビジネスもしくは他の組織のためにデータリポジトリ130に記憶され得るデータの任意の他のカテゴリに対応し得る。ステップ1102において、入力データのユーザ選択がユーザインターフェイスを介して受信され得る。選択された入力データは、たとえば、ユーザによって選択されたあるデータセル全体、またはあるデータセル内のキャラクタのサブシーケンスに対応し得る。ステップ1103において、正規表現生成器110は、ステップ1102において受信された入力データ(たとえばデータセルまたはその一部分)に基づいて正規表現を生成し得る。ステップ1104において、ユーザインターフェイスは、正規表現の生成に応答して更新され得る。場合によっては、ユーザーインターフェイスは、単に、生成された正規表現をユーザーに表示するために更新されてもよく、一方、他の場合では、ユーザーインターフェイスは、以下で説明するさまざまな他の方法で更新されてもよい。この例に示されるように、ユーザは、ユーザインターフェイスを介して複数の異なる入力データキャラクタシーケンスを選択してもよく、受信された各新たな入力データに応答して、正規表現生成器110は、キャラクタシーケンスの第1および第2の(陽性の)例の両方を包含する更新された正規表現を生成してもよい。次いで、ユーザがキャラクタの第3のシーケンスを(たとえば、両方のキャラクタシーケンス外、または第1もしくは第2のキャラクタシーケンス内で)を強調表示すると、正規表現生成器110は、正規表現を再び更新してもよい等となる。いくつかの実施形態では、正規表現生成器110は、アルゴリズムをリアルタイム(またはほぼリアルタイム)で実行し得、全面的に新たな正規表現が、ユーザによってなされた各新たなキーストロークまたは各新たな強調表示されたセクションに応答して生成され得る。さらに、ユーザが、前の強調表示上を部分的に強調表示(または他の態様で選択)する場合、古い強調表示は削除されてもよく、新たな強調表示が追加されてもよい。 FIG. 11 is a flowchart illustrating a process 1100 for generating regular expressions based on user data selections received within a user interface. The exemplary process of FIG. 11 may correspond to any of the aforementioned examples of generating regular expressions based on input data character sequences. However, FIG. 11 describes processing related to user interfaces that may be generated and displayed on client device 120 . At step 1101, in response to a request from a user via the user interface, the regular expression generator 110 retrieves data (eg, from the data repository 130) and renders/displays the data in tabular form within the graphical user interface. You may It should be appreciated that while this example uses tabular data, other examples may not use and display tabular data. For example, in some cases, a user can type raw data directly (rather than selecting data from a user interface). Furthermore, when data is presented through a user interface, it need not be in tabular form, but rather unstructured data (e.g. documents) or semi-structured (e.g. unformatted data such as tweets or posts). /spreadsheet of unstructured data items). In various examples, tabular data corresponds to transaction data, customer data, performance data, forecast data, and/or any other category of data that may be stored in data repository 130 for a business or other organization. obtain. At step 1102, a user selection of input data may be received via a user interface. The selected input data may correspond to, for example, an entire data cell selected by a user, or a subsequence of characters within a data cell. At step 1103 , regular expression generator 110 may generate a regular expression based on the input data (eg, data cell or portion thereof) received at step 1102 . At step 1104, the user interface may be updated in response to generating the regular expression. In some cases, the user interface may simply be updated to display the generated regular expressions to the user, while in other cases the user interface may be updated in various other ways as described below. may be As shown in this example, the user may select multiple different input data character sequences via the user interface, and in response to each new input data received, the regular expression generator 110: An updated regular expression may be generated that includes both the first and second (positive) examples of the character sequence. Then, when the user highlights a third sequence of characters (e.g., outside both character sequences, or within the first or second character sequences), the regular expression generator 110 updates the regular expression again. and so on. In some embodiments, the regular expression generator 110 may run the algorithm in real-time (or near real-time) such that an entirely new regular expression is generated for each new keystroke or each new emphasis made by the user. It can be generated in response to the displayed section. Further, if the user partially highlights (or otherwise selects) over a previous highlight, the old highlight may be deleted and a new highlight added.

したがって、図11に示すように、ユーザインターフェイスを介するキャラクタシーケンスのユーザ選択に応答して、正規表現生成器110は、正規表現を生成および表示し得る。たとえば、ユーザがキャラクタの第1のシーケンスを強調表示すると、正規表現生成器は、キャラクタの第1のシーケンスを表す正規表現を生成し、表示し得る。ユーザがキャラクタの第2のシーケンスを強調表示すると、正規表現生成器は、キャラクタの第1のシーケンスとキャラクタの第2のシーケンスとの両方を包含する更新された正規表現を生成し得る。次いで、ユーザがキャラクタの第3のシーケンスを(たとえば第1のシーケンスまたは第2のシーケンスのいずれか内で)強調表示すると、正規表現生成器は正規表現を再び更新し得る等となる。 Thus, as shown in FIG. 11, in response to user selection of character sequences via a user interface, regular expression generator 110 may generate and display regular expressions. For example, when a user highlights a first sequence of characters, the regular expression generator may generate and display a regular expression representing the first sequence of characters. When the user highlights the second sequence of characters, the regular expression generator may generate an updated regular expression that includes both the first sequence of characters and the second sequence of characters. Then, when the user highlights a third sequence of characters (eg, within either the first sequence or the second sequence), the regular expression generator may update the regular expression again, and so on.

図12は、ユーザインターフェイス内で受信されたユーザデータ選択を介して、正規表現を生成し、キャプチャグループに基づいてデータを抽出するための処理1200を示す別のフローチャートである。ステップ1201において、ステップ1101で上述したように、正規表現生成器110は、(たとえばデータリポジトリ130から)データを取り出し、そのデータをグラフィカルユーザインターフェイス内においてテーブル形式でレンダリング/表示することができる。ステップ1202において、正規表現生成器110は、特定のデータセル内のテキストフラグメントのユーザ強調表示の選択を受け取ることができる。ステップ1203において、正規表現生成器110は、選択されたデータセルの陽性例に基づいて正規表現を生成することができ、ステップ1204において、セル内で強調表示されたテキストフラグメントに基づいて正規表現キャプチャグループを作成することができる。ステップ1205において、正規表現生成器110は、生成された正規表現とマッチする、表示されたテーブル形式データ内の1つまたは複数の追加セルを判断することができ、ステップ1206において、生成された正規表現とマッチする追加セル内の対応するテキストフラグメントを抽出することができる。 FIG. 12 is another flowchart illustrating a process 1200 for generating regular expressions and extracting data based on capturing groups via user data selections received within a user interface. In step 1201, regular expression generator 110 may retrieve data (eg, from data repository 130) and render/display the data in tabular form within a graphical user interface, as described above in step 1101. At step 1202, the regular expression generator 110 may receive user highlighting selections for text fragments within a particular data cell. At step 1203, the regular expression generator 110 can generate a regular expression based on the positive examples of the selected data cell, and at step 1204, the regular expression capture based on the highlighted text fragment within the cell. Groups can be created. At step 1205, the regular expression generator 110 may determine one or more additional cells within the displayed tabular data that match the generated regular expression, and at step 1206, the generated regular expression Corresponding text fragments in additional cells that match the expression can be extracted.

したがって、陽性例を供給することに加えて、ユーザは、(たとえばマウステキスト強調表示を介して、)選択された陽性例のいずれか内でテキストフラグメントを選択してもよい。これに応答して、正規表現生成器110は、例から、そのテキストフラグメントを抽出し、正規表現が適用されているテキスト中の他のすべてのマッチから、対応するフラグメントを抽出するために、正規表現キャプチャグループを作成してもよい。マッチするデータセルからテキストフラグメントを抽出することは、削除および修正も含み得、場合によっては、半構造化または非構造化テキストの既存の列からデータの新たな列を作成するために用いられ得る。 Thus, in addition to supplying positive examples, the user may select text fragments within any of the selected positive examples (eg, via mouse text highlighting). In response, the regular expression generator 110 extracts the text fragment from the example and extracts the corresponding fragment from all other matches in the text to which the regular expression has been applied. You may create an expression capture group. Extracting text fragments from matching data cells can also include deletions and modifications, and in some cases can be used to create new columns of data from existing columns of semi-structured or unstructured text. .

ユーザが陽性のデータ例を選択する例を用いて、ユーザが年を強調表示した場合、正規表現生成器110は正規表現 Using the example in which the user selects positive data examples, if the user highlights a year, the regular expression generator 110 generates the regular expression

Figure 2022538705000024
Figure 2022538705000024

を生成することができる。この例に示すように、正規表現生成器110は、年の周りに括弧を付けてあり、また、月および日の周りの古い括弧(交代のために使用)を?:レゲックス構文の使用により「非キャプチャ」グループに変換している。いくつかの実施形態では、抽出/キャプチャグループは、スパン境界上にあることが要求され得、そのような実施形態では、正規表現生成器110は、強調表示されたキャラクタ範囲を入力として取り得、最も近い位置指定子スパン境界を包含するようにそれを拡張し得る。しかしながら、他の例では、ミッドスパン抽出/キャプチャは、ユーザインターフェイスによってサポートされてもよい。 can be generated. As shown in this example, the regular expression generator 110 puts parentheses around the year, and also replaces the old parentheses around the month and day (used for alternation) with the ?:regex syntax " Converting to "non-capturing" group. In some embodiments, the extract/capture groups may be required to be on span boundaries, and in such embodiments the regular expression generator 110 may take the highlighted character range as input, It can be extended to encompass the near locator span boundary. However, in other examples midspan extraction/capture may be supported by the user interface.

いくつかの実施形態では、ユーザインターフェイスは、第2のキャラクタシーケンス内の第1のキャラクタシーケンスの選択を含むユーザからの入力データをサポートしてもよい。たとえば、ユーザは、より大きな以前に強調表示されたキャラクタシーケンス内の1つまたは複数のキャラクタを強調表示することができ、第2のユーザ選択は、より大きな第1のユーザ選択のためのコンテキストを提供してもよい。そのような実施形態は、入力データが、より高い特異性で正規表現生成器110に提供されることを可能にし得る。 In some embodiments, the user interface may support input data from a user including selection of a first character sequence within a second character sequence. For example, a user may highlight one or more characters within a larger previously highlighted character sequence, and a second user selection provides context for the larger first user selection. may provide. Such embodiments may allow input data to be provided to the regular expression generator 110 with greater specificity.

さらに、いくつかの例では、ユーザがユーザインターフェイス内で選択する(たとえばテキストを強調表示する)ことに応答して、動作を開始し、ダイアログを開くことができる。場合によっては、ダイアログは、メイン画面とのユーザ対話を妨げないフローティングツールボックスウィンドウなどの非モーダルダイアログであってもよい。ダイアログはまた、ユーザがどのような主要な操作を行っているかに応じて外観および/または機能性を変化させることもできる。したがって、そのような場合、ユーザは、キャプチャグループテキストフラグメントの修正、抽出などを開始するために、選択されたテキストを強調表示した後にさらなるメニューアイテムを検索する必要がない。 Further, in some examples, actions can be initiated and dialogs can be opened in response to user selections within the user interface (eg, highlighting text). In some cases, the dialog may be a non-modal dialog, such as a floating toolbox window that does not interfere with user interaction with the main screen. Dialogs can also change in appearance and/or functionality depending on what primary action the user is performing. Thus, in such cases, the user does not need to search for additional menu items after highlighting the selected text to initiate modification, extraction, etc. of the capturing group text fragment.

さらに、特定の実施形態では、正規表現を生成するために提供されるユーザインターフェイスは、3つの強調表示モード、すなわち、ネスト化自動、ネスト化手動、および単一レベル、を含み得る。ネスト化自動は、ネスト化(自動-外側)としても知られる。ネスト化手動は、ネスト化(完全-制御)としても知られる。これらの例では、単一レベルは、1つのレベルの強調表示(または他の形態のテキスト選択)を指し得、これは、正規表現を、キャプチャグループを伴わずに生成させ得る。ネスト化手動強調表示モードは、2つのレベルの強調表示(または他の形態のテキスト選択)の識別を可能にする。これにより、キャプチャーグループを伴う正規表現の生成を引き起こす。ネスト化自動強調表示は、外側強調表示(または他の形態のテキスト選択)が、テキスト全体(例えば、スプレッドシートセル全体)のコンテンツとなるように自動的に設定され得ることを除き、ネスト化手動強調表示モードと同一であってもよい。 Further, in certain embodiments, the user interface provided for generating regular expressions may include three highlighting modes: nested automatic, nested manual, and single level. Nested auto is also known as nested (auto-outer). Nested manual is also known as nested (full-control). In these examples, single level may refer to one level of highlighting (or other forms of text selection), which may cause regular expressions to be generated without capturing groups. A nested manual highlighting mode allows the identification of two levels of highlighting (or other forms of text selection). This causes the generation of regular expressions with capturing groups. Nested auto-highlighting is similar to nested manual highlighting, except that outer highlighting (or other forms of text selection) can be automatically set to be the content of the entire text (e.g., an entire spreadsheet cell). It may be the same as highlight mode.

場合によっては、デフォルト動作モードは、セル全体が強調表示された領域として識別されることであってもよく、ユーザは、強調されたセル内の1つまたは複数の追加のサブシーケンスをさらに強調表示してもよい。他のモードでは、ユーザは、テーブル形式データディスプレイのデータセル内で両方の強調表示を手動で指定することを許可されてもよい。さらに他のモードでは、ユーザは、内側強調表示なしで外側強調表示を手動で指定することを許可されてもよい。これらのその他のモードは、半構造化データ、たとえば、ブラウザ「ユーザエージェント」ストリングなどのツイートまたは他の長いストリングからなるデータの列に、より適し得る。「半構造化」データは、ユーザインターフェイス内でテーブル形式で表示され得るデータを指すが、テーブル内の列は非構造化テキストからなる。 In some cases, the default mode of operation may be for the entire cell to be identified as the highlighted region, and the user may further highlight one or more additional subsequences within the highlighted cell. You may In other modes, the user may be allowed to manually specify both highlights within the data cells of the tabular data display. In still other modes, the user may be allowed to manually specify outer highlighting without inner highlighting. These other modes may be more suitable for columns of data consisting of semi-structured data, for example tweets or other long strings such as browser "user agent" strings. "Semi-structured" data refers to data that may be displayed in tabular form within a user interface, but where the columns within the table consist of unstructured text.

いくつかのそのような実施形態では、ユーザインターフェイスを介したユーザによる内側および外側の選択(たとえば強調表示)は、カラーコード化によって区別され得る。たとえば、陽性例の外側強調表示は、第1のテキスト/背景色の組み合わせで示されてもよく、陽性例の内側強調表示は、異なる対照的なテキスト/背景色の組み合わせで示されてもよい。 In some such embodiments, a user's inner and outer selections (eg, highlighting) via the user interface may be distinguished by color coding. For example, the outer highlighting of positive examples may be shown with a first text/background color combination and the inner highlighting of positive examples may be shown with a different, contrasting text/background color combination. .

上述したように、ユーザは、キャラクタサブシーケンスの選択を介してキャプチャグループの選択を指定することができる。GUIを用いて、強調表示(または他の表示)を介するユーザ選択を容易にしてもよい。一例を図13に示し、例示的ユーザインターフェイス画面がテーブル形式データディスプレイとともに示される。この例では、図13は、たとえば、ユーザが列値の1つまたは複数の所望の要素を横切ってマウスをドラッグすることによって引き起こされる、列値内の強調表示を示す。なお、ユーザ強調表示が実行される「セル」は、列値の選択を示す色変化を示してもよい。この色変化は、ユーザ強調表示に応答する自動化された強調表示と解釈されてもよい。 As described above, the user can specify the selection of capture groups via the selection of character subsequences. A GUI may be used to facilitate user selection via highlighting (or other display). An example is shown in FIG. 13, where an exemplary user interface screen is shown with a tabular data display. In this example, FIG. 13 shows highlighting within a column value caused, for example, by a user dragging the mouse across one or more desired elements of the column value. Note that the "cell" on which user highlighting is performed may show a color change to indicate selection of the column value. This color change may be interpreted as automated highlighting in response to user highlighting.

図14および図15は、テーブル形式ディスプレイからのデータの選択に基づく正規表現およびキャプチャグループの生成を示す例示的なユーザインターフェイス画面である。これらの例では、図14および図15は、テーブル形式データディスプレイ内のユーザ強調表示1401の検出が自動的に表示される追加のユーザインターフェイスウィンドウを示す。ウィンドウは、陽性例を表示するためのフィールド1402と、陰性例を表示するためのフィールドと、テーブル形式データディスプレイからの陽性例の選択に応答して動的に(およびほぼ瞬時に)生成される正規表現を表示するためのフィールドとを含む。これらの例では、列値1401内のユーザ強調表示は、自動化された強調表示内のユーザ強調表示と同等であり得る。したがって、エリアコードのユーザ強調表示により、ユーザ強調表示されたエリアコード1401だけでなく、電話番号の残りの部分も陽性例フィールド1402にポピュレートされる。 14 and 15 are exemplary user interface screens showing the generation of regular expressions and capture groups based on selection of data from a tabular display. In these examples, FIGS. 14 and 15 show additional user interface windows that are automatically displayed upon detection of user highlighting 1401 within the tabular data display. A window is dynamically (and nearly instantaneously) generated in response to the selection of a field 1402 for displaying positive examples, a field for displaying negative examples, and a positive example from a tabular data display. and a field for displaying regular expressions. In these examples, user highlighting within column values 1401 may be equivalent to user highlighting within automated highlighting. User highlighting of the area code thus populates the positive example field 1402 with not only the user-highlighted area code 1401, but also the remainder of the telephone number.

しかしながら、ユーザ強調表示は、自動強調表示内の性能に限定されないことを理解されたい。たとえば、ユーザ強調表示は、代替的に、他のユーザ強調表示内で実行されてもよい。別の例として、ユーザ強調表示は、代替的に、内側強調表示(たとえば、強調表示されたテキスト内でのさらに強調表示)なしで実行されてもよい。これらの代替例は、「ツイート」または他の長いストリング(たとえばブラウザ「ユーザエージェント」ストリング)を含むデータの列などの半構造化データに特に適している。 However, it should be appreciated that user highlighting is not limited to performance within auto-highlighting. For example, user highlights may alternatively be performed within other user highlights. As another example, user highlighting may alternatively be performed without inner highlighting (eg, further highlighting within the highlighted text). These alternatives are particularly suitable for semi-structured data such as columns of data containing "tweets" or other long strings (eg browser "user agent" strings).

さらに、対応する正規表現が生成されると、正規表現にマッチする他の列値1402が、追加の自動化された強調表示に基づいて識別され得る。図14および図15に示される例では、追加の自動化された強調表示は、生成された正規表現のキャプチャグループにマッチする、これらの他の列値の要素を示す。追加の自動化された強調表示は、ユーザ強調表示に使用される色とは異なる色を使用して実行されてもよい。 Additionally, once the corresponding regular expression is generated, other column values 1402 that match the regular expression can be identified based on additional automated highlighting. In the examples shown in FIGS. 14 and 15, additional automated highlighting shows those other column value elements that match the generated regular expression capturing groups. Additional automated highlighting may be performed using colors different from those used for user highlighting.

図15に示すように、他の例のユーザ選択を示すために、追加のユーザ強調表示が示される。追加のユーザ強調表示は、上述の方法と同様の方法で実行され得る。したがって、図15のユーザインターフェイスは、陽性例を表示するためのフィールド1502における他の例のポピュレーションを示す。これは、追加のユーザ強調表示の検出に応答して起こり得る。さらに、生成された正規表現1503は、それが陽性例1502のすべてにマッチするように、動的にかつほぼ瞬時に更新されてもよい。更新された正規表現の生成に応答して、更新された正規表現にマッチする他の列値1504の自動化された強調表示も更新され得る。いくつかの実現形態では、動的カラーコード化も使用され得る。たとえば、マッチは、第1の色(たとえば青色)を使用してカラーコード化されてもよく、陽性例は、第2の色(たとえば緑色)を使用してカラーコード化されてもよく、陰性例は、第3の色(たとえば赤色)を使用してカラーコード化されてもよい。テーブル形式のデータビュー(スプレッドシートなど)またはその他の(たとえば半構造化データまたは非構造化データの)無限スクロールデータビュー内では、ビューが実際の追加データにスクロールダウンされると、新たに可視となるデータがカラーコード化されてもよい。 As shown in FIG. 15, additional user highlighting is shown to indicate another example user selection. Additional user highlighting may be performed in a manner similar to that described above. Accordingly, the user interface of FIG. 15 shows another population of examples in field 1502 for displaying positive examples. This may occur in response to detecting additional user highlights. Additionally, the generated regular expression 1503 may be dynamically and nearly instantaneously updated so that it matches all of the positive examples 1502 . In response to generating the updated regular expression, automated highlighting of other column values 1504 that match the updated regular expression may also be updated. Dynamic color coding may also be used in some implementations. For example, matches may be color-coded using a first color (e.g., blue), positive examples may be color-coded using a second color (e.g., green), and negative The examples may be color coded using a third color (eg red). Within a tabular data view (such as a spreadsheet) or other infinite scrolling data view (e.g. of semi-structured or unstructured data), when the view is scrolled down to the actual additional data, it becomes newly visible. data may be color coded.

図16Aおよび図16Bは、テーブル形式ディスプレイからの陽性例および陰性例の選択に基づく正規表現の生成を示すユーザインターフェイス画面例である。図16A~図16Bでは、陽性例フィールド1602からの個々の例は、陽性例フィールド1603から除去され得、および/または陰性例フィールド1603に移され得る。ユーザインターフェイス内で、これは、たとえば、ユーザが例の1つをクリック(たとえば右クリック)してそれを選択することによって実行されてもよい。選択は、ユーザーインターフェイスに、削除オプションおよび変更オプションを含むメニュー1602を表示させることができる。その後、オプションをクリックすると、対応する機能が実行される。 16A and 16B are example user interface screen shots showing the generation of regular expressions based on selection of positive and negative examples from a tabular display. 16A-16B, individual examples from positive example field 1602 may be removed from positive example field 1603 and/or moved to negative example field 1603. FIG. Within the user interface, this may be done, for example, by the user clicking (eg, right-clicking) one of the examples to select it. The selection can cause the user interface to display a menu 1602 containing delete and modify options. Then clicking on an option will perform the corresponding function.

図16Aおよび図16Bに示される例において、変更オプションのユーザ選択の結果は、選択された例を陰性例フィールド1603に移動させ、正規表現1601を正規表現1604に更新させ、この正規表現1604は、動的にかつほぼ瞬時に生成され得る(たとえばある実施形態では、30ms~9000msの間、または100msメジアンである)。更新された正規表現1604の生成に応答して、更新された正規表現にマッチする他の列値の自動化された強調表示も、テーブル形式データディスプレイ内で更新され得る。さらに、自動化された強調表示は、陰性例に対応する任意の列値を含む、陰性例の一部または全部に対して実行されてもよく、それは、上で使用された色のいずれとも異なる色を使用して強調表示されてもよく、または他の態様では他の視覚的技法を使用してユーザインターフェイス内で区別されてもよい。 In the example shown in FIGS. 16A and 16B, the result of user selection of the change option is to move the selected example to negative example field 1603 and update regular expression 1601 to regular expression 1604, which is: It can be generated dynamically and almost instantaneously (eg, between 30 ms and 9000 ms, or 100 ms median in some embodiments). In response to generating updated regular expression 1604, automated highlighting of other column values that match the updated regular expression may also be updated within the tabular data display. In addition, automated highlighting may be performed for some or all of the negative examples, including any column value corresponding to the negative example, which is a different color than any of the colors used above. , or in other aspects may be distinguished in the user interface using other visual techniques.

いくつかの実施形態では、ユーザインターフェイスを介して陰性例を指定することは、図16Aおよび図16Bに示されるように、最初にその例を陽性例として指定し、次いでそれを陰性例に変換することを必要とする必要はない。むしろ、陰性例は、さまざまな方法で指定され得る。たとえば、ユーザは、ユーザインターフェイスを介して列値(たとえば、自動化された強調表示が実行されて、生成された正規表現とマッチすることを示した、他の列値のうちの1つ)を選択する(たとえば右クリックする)ことができ、それによって、オプション(たとえば「新たな反例を作成する」)を含むメニューのディスプレイに、選択された列値を陰性例として指定させることができる。 In some embodiments, designating a negative example via the user interface first designates the example as a positive example and then converts it to a negative example, as shown in FIGS. 16A and 16B. need not be required. Rather, negative examples can be designated in various ways. For example, a user selects a column value (e.g., one of the other column values for which automated highlighting has been performed to indicate a match with the generated regular expression) via the user interface. (eg, right-click), which causes the display of a menu with options (eg, "create new counterexample") to designate the selected column value as a negative example.

したがって、図16Aおよび図16Bに示される例を使用して、更新された正規表現1604の生成に応答して、更新された正規表現にマッチする他の列値の自動化された強調表示も更新され得る。これらの例では、更新された正規表現は、「9」で終わる電話番号を指定する。 Thus, using the example shown in FIGS. 16A and 16B, in response to generating updated regular expression 1604, the automated highlighting of other column values matching the updated regular expression is also updated. obtain. In these examples, the updated regular expressions specify phone numbers ending in "9".

図14および図15を簡単に参照すると、「抽出」ボタンがユーザによってクリックされるか、または他の態様で選択されると、現在の正規表現1403または1503にマッチするすべてのセル内の強調表示されたテキストフラグメントを抽出するための動作が、開始され得る。図14および図15には示されていないが、いくつかの実施形態では、ユーザインターフェイスは、「抽出」ボタンに加えて、またはその代わりに、他の選択可能なボタンを提供してもよい。たとえば、「置換」ボタンが、ユーザ強調表示された要素をユーザ指定された要素に置換するためのオプションとして提示されてもよい。追加または代替として、1つまたは複数の「削除」ボタンが、事実上、ユーザ強調表示された要素を何にも置換しないオプションとして提示されてもよい。たとえば、「フラグメントを削除」操作および/または「行を削除」操作の一方または両方が実現されてもよく、それは、それぞれ、ユーザ強調表示されたテキストフラグメントまたは行全体のいずれかを削除することになる。さまざまな実施形態において実現され得る追加の操作は、「行を保持」操作、「分割」操作(たとえば、コンマを強調表示し、次いで、コンマ分離成分を別々の複数の新たな列に抽出する)、および「難読化」操作(たとえば、強調表示されたテキスト/キャプチャグループを「#」または他の記号のシーケンスで置き換える)を含み得る。 Referring briefly to FIGS. 14 and 15, when the "Extract" button is clicked or otherwise selected by the user, highlighting in all cells matching the current regular expression 1403 or 1503 Operations may be initiated to extract the rendered text fragment. Although not shown in FIGS. 14 and 15, in some embodiments the user interface may provide other selectable buttons in addition to or instead of the "Extract" button. For example, a "replace" button may be presented as an option to replace the user-highlighted element with a user-specified element. Additionally or alternatively, one or more "delete" buttons may be presented as options that effectively replace the user-highlighted element with nothing. For example, one or both of a "delete fragment" operation and/or a "delete line" operation may be implemented, which may result in deleting either a user-highlighted text fragment or an entire line, respectively. Become. Additional operations that may be implemented in various embodiments are "keep rows" operations, "split" operations (e.g., highlighting commas and then extracting the comma-separated components into separate new columns). , and “obfuscation” operations (eg, replacing highlighted text/capturing groups with “#” or other sequences of symbols).

この例では、「抽出」ボタンが選択されたことに応答して、抽出操作が、下流の操作によって実行されるべき変換スクリプトのリストに追加され得る。いくつかの実施形態では、変換スクリプトのリストは、ユーザによるレビュー/修正のためにユーザインターフェイスの一部分に表示されてもよい。代替的に、抽出操作は、その場で実行されて、レゲックスキャプチャグループの内容(たとえば、陽性例のユーザ強調表示部分に対応する要素)を含む新たな列を生成してもよい。図14および図15に示される例では、エリアコードの新たな列および/または新たなテーブルが、「抽出」ボタンの選択に応答して生成されてもよい。 In this example, in response to selecting the "extract" button, an extract operation may be added to a list of transform scripts to be executed by downstream operations. In some embodiments, a list of transformation scripts may be displayed in a portion of the user interface for review/modification by the user. Alternatively, the extraction operation may be performed in-place to generate a new column containing the content of the Regex capture group (eg, elements corresponding to user-highlighted portions of positive examples). In the examples shown in FIGS. 14 and 15, a new column of area codes and/or a new table may be generated in response to selection of the "Extract" button.

図17は、本明細書に記載する1つまたは複数の実施形態による、テーブル形式ディスプレイからのデータの選択に基づく正規表現およびキャプチャグループの生成を示す別の例示的なユーザインターフェイス画面である。 FIG. 17 is another exemplary user interface screen showing generation of regular expressions and capture groups based on selection of data from a tabular display in accordance with one or more embodiments described herein.

A.複数強調表示
いくつかの実施形態では、ユーザインターフェイスはまた、例につき複数の強調表示をサポートしてもよい。図42,図43,図44,図45,図46,図47,および図48は、いくつかの例示的実施形態による、複数の強調表示を実現するためのユーザインターフェイス4200,4300,4400,4500,4600,4700,および4800を示す。異なる強調表示方法を以下に記載する。例示的な実施形態では、内側強調表示および外側強調表示は、異なるカラーコードを用いることによって区別することができる。
A. Multiple Highlighting In some embodiments, the user interface may also support multiple highlighting per example. 42, 43, 44, 45, 46, 47, and 48 illustrate user interfaces 4200, 4300, 4400, 4500 for implementing multiple highlighting, according to some example embodiments. , 4600, 4700, and 4800 are shown. Different highlighting methods are described below. In an exemplary embodiment, inner highlighting and outer highlighting can be distinguished by using different color codes.

図42は、いくつかの例示的実施形態による、単一レベルモードでデータセットのビューを表示するユーザインターフェイス4200を示す。図42は、単一レベル強調表示モードにある間、強調表示がユーザインターフェイス上にどのように現れるかを示す。図42において、ユーザは、アプリケーション4236(例えばMozilla)のバージョン番号4235(例えば、"5.0")を強調表示する。ユーザがバージョン番号4235を強調表示するのに応答して、ユーザインターフェイスデータモデル生成器は、バージョン番号4237("6.1")、4238("1.9")、4239("2.2")、および4240("3.6")を強調表示する。 FIG. 42 shows a user interface 4200 displaying a view of a dataset in single level mode, according to some example embodiments. FIG. 42 shows how highlighting appears on the user interface while in single-level highlighting mode. In FIG. 42, the user highlights version number 4235 (eg, "5.0") of application 4236 (eg, Mozilla). In response to the user highlighting version number 4235, the user interface data model generator displays version numbers 4237 (“6.1”), 4238 (“1.9”), 4239 (“2.2”), and 4240 (“ 3.6").

強調表示に基づいて、例別レゲックスダイアログボックス4230が現れる。例別レゲックスダイアログボックス4230は、ユーザによって指定された、指定された例4233を含む。この例では、バージョン番号"5.0"がユーザによって指定される。また、例別レゲックスダイアログボックス4230は、強調表示モード4250が単一レベル4251であることを示す。 Based on the highlighting, Regex By Example dialog box 4230 appears. The Regex by Example dialog box 4230 includes the specified example 4233 specified by the user. In this example, the version number "5.0" is specified by the user. Also, example Regex dialog box 4230 indicates that highlight mode 4250 is single level 4251 .

図43は、いくつかの例示的実施形態による、ネスト化された完全制御モードで強調表示されたデータを表示するユーザインターフェイス4300を示す。図43に示す例では、ダイアログボックス4330の強調表示モードパネル4350から「ネスト化(完全制御)」4351が選択されている。また、図43に示すように、ユーザは、外側強調表示を、ソフトウェア名4236(例えば「Mozilla」)およびバージョン番号4235(例えば"5.0")として表示する。例別レゲックスダイアログボックス4330は、強調表示モード4350がネスト化(完全制御)4351にあることを示す。さらに、データセットは、現在、マルチ強調表示モード4360にある。図43において実行される強調表示は、外側強調表示を、ネスト化された全自動モードで行う。 FIG. 43 shows a user interface 4300 displaying highlighted data in nested full control mode, according to some example embodiments. In the example shown in FIG. 43, “Nested (full control)” 4351 is selected from highlight mode panel 4350 of dialog box 4330 . Also, as shown in FIG. 43, the user displays the outer highlight as software name 4236 (eg, "Mozilla") and version number 4235 (eg, "5.0"). The Regex by Example dialog box 4330 shows that the highlight mode 4350 is in nested (full control) 4351 . Additionally, the dataset is currently in multi-highlight mode 4360 . The highlighting performed in FIG. 43 performs outer highlighting in a nested fully automatic mode.

例示的な実施形態では、現在実行されている外側強調表示である進行中外側強調表示は、金色のようなそれ自体の緊急性の色で、第1のクラスの態様で取り扱うことができる。例示的な実施形態では、強調表示は、強調表示の緊急性、優先度、および/または重要性を示すために用いることができる異なる色で現れることができる。 In an exemplary embodiment, the currently running outer highlight, the ongoing outer highlight, can be handled in a first class manner, with its own urgency color, such as gold. In an exemplary embodiment, highlights can appear in different colors that can be used to indicate the urgency, priority, and/or importance of the highlight.

図44は、いくつかの例示的実施形態による、ネスト化された完全制御モードで強調表示されたデータを表示するユーザインターフェイス4400を示す。図44に示すように、マルチ強調表示モード4460が選択される。ユーザは、外側強調表示を、ソフトウェア名4236およびバージョン番号4235として表示している。外側強調表示として選択されるソフトウェア名4236(例えば、Mozilla)およびバージョン番号4235(例えば、5.0)は、第1の色で強調表示され得る。ユーザは、外側強調表示を選択した後、内側強調表示を識別することができる。例えば、ユーザは、バージョン番号4235(例えば、"5.0")のみを内側強調表示として選択することができる。内側強調表示は、第1の色とは異なる第2の色で強調表示され得る。内側強調表示と外側強調表示とが異なる色で現れるので、外側強調表示と内側強調表示とを容易に識別することができる。図44に示される例は、ネスト化された完全制御モード強調表示にある。したがって、強調表示モードパネル4450は、データセットがネスト化された完全制御モード4451にあることを示す。 FIG. 44 shows a user interface 4400 displaying highlighted data in nested full control mode, according to some example embodiments. As shown in Figure 44, multi-highlight mode 4460 is selected. The user is viewing the outer highlight as software name 4236 and version number 4235 . The software name 4236 (eg, Mozilla) and version number 4235 (eg, 5.0) selected for outer highlighting may be highlighted in a first color. After selecting the outer highlight, the user can identify the inner highlight. For example, the user can select only version number 4235 (eg, "5.0") for inner highlighting. The inner highlighting may be highlighted with a second color different from the first color. Since the inner highlighting and the outer highlighting appear in different colors, the outer highlighting and the inner highlighting can be easily distinguished. The example shown in FIG. 44 is in nested full control mode highlighting. Thus, highlight mode panel 4450 indicates that the dataset is in nested full control mode 4451 .

例示的な実施形態では、内側強調表示および外側強調表示は、異なる色またはカラーコードを用いることによって区別することができる。例えば、陽性例の外側強調表示は、淡緑色背景上に黒色テキストで示され得、陽性例の内側強調表示は、濃緑色背景上に淡緑色テキストで示され得る。 In an exemplary embodiment, inner highlighting and outer highlighting can be distinguished by using different colors or color codes. For example, the outer highlighting of positive examples may be shown in black text on a light green background, and the inner highlighting of positive examples may be shown in light green text on a dark green background.

図44では、ユーザは、要素4235として識別されるバージョン番号"5.0"を選択している。ユーザがバージョン番号"5.0"(要素4235)を選択すると、ユーザインターフェイスデータモデル生成器は、バージョン番号"3.6"(要素4240)および"5.1"(要素4241)を自動的に選択することができる。ユーザインターフェイスデータモデル生成器は、ユーザによって選択されたバージョン番号に加えて、バージョン番号を強調したので、ユーザインターフェイスデータモデル生成器によって識別される追加のバージョン番号がユーザによって望まれない場合には、ユーザは追加の例を与えることができる。あるいは、ユーザがユーザインターフェイスデータモデル生成器によって実行される追加の強調表示に同意する場合、ユーザは強調表示されたデータにコマンドを適用することに進むことができる。 In FIG. 44, the user has selected version number “5.0” identified as element 4235 . If the user selects version number "5.0" (element 4235), the user interface data model generator can automatically select version numbers "3.6" (element 4240) and "5.1" (element 4241). Since the user interface data model generator emphasized the version number in addition to the version number selected by the user, if the additional version number identified by the user interface data model generator is not desired by the user: The user can give additional examples. Alternatively, if the user consents to additional highlighting performed by the user interface data model generator, the user can proceed to apply commands to the highlighted data.

例別レゲックスダイアログボックス4430は、指定された例4433を表示する。さらに、例別レゲックスダイアログボックス4430は、強調表示モード4450がネスト化(完全制御)4451であることを示す。また、例別レゲックスダイアログボックス4430は、マルチ強調表示モード4460にあることを示す。生成された正規表現4432も、例別レゲックスダイアログボックス4430において識別される。 The Regex by Example dialog box 4430 displays the specified example 4433 . Further, example Regex dialog box 4430 indicates that highlighting mode 4450 is nested (full control) 4451 . Regex by Example dialog box 4430 also indicates that it is in multi-highlight mode 4460 . A generated regular expression 4432 is also identified in the Regex by Example dialog box 4430 .

図45、図46、図47に示すように、ユーザは、さらなる例を与えることができる。図45は、いくつかの例示的実施形態による、2つの陽性例が提供されるユーザインターフェイス4500を示す。図46は、いくつかの例示的実施形態による、2つの陽性例が提供されるユーザインターフェイス4600を示す。図47は、いくつかの例示的実施形態による、3つの陽性例が提供されるユーザインターフェイス4500を示す。 As shown in Figures 45, 46 and 47, the user can provide further examples. FIG. 45 shows a user interface 4500 in which two positive examples are provided, according to some example embodiments. FIG. 46 shows a user interface 4600 in which two positive examples are provided, according to some example embodiments. FIG. 47 shows a user interface 4500 in which three positive examples are provided, according to some example embodiments.

図45に示すように、陽性例を与えるために、ユーザは、外側強調表示をソフトウェア名4536およびバージョン番号4535として示すことができる。外側強調表示として選択されたソフトウェア名4536(例えば、WindowsNT)およびバージョン番号4535(例えば、6.1)は、第1の色で強調表示され得る。ユーザは、外側強調表示を選択した後、内側強調表示を識別することができる。例えば、ユーザは、バージョン番号4535(例えば、"6.1")を内側強調表示として選択することができる。内側強調表示は、第1の色とは異なる第2の色で強調表示され得る。正規表現4532は、強調表示に基づいて生成することができる。 As shown in FIG. 45, the user can indicate the outer highlighting as software name 4536 and version number 4535 to give positive examples. The software name 4536 (eg, Windows NT) and version number 4535 (eg, 6.1) selected for outer highlighting may be highlighted in the first color. After selecting the outer highlight, the user can identify the inner highlight. For example, the user can select version number 4535 (eg, "6.1") as the inner highlight. The inner highlighting may be highlighted with a second color different than the first color. A regular expression 4532 can be generated based on the highlighting.

ユーザーによって与えられる強調表示例は、例別レゲックスダイアログボックス4530内の指定された例4533において識別される。 The highlighted example provided by the user is identified in the specified example 4533 within the Regex by Example dialog box 4530 .

図46は、いくつかの例示的実施形態による、更新された生成されたレゲックスを表示するユーザインターフェイス4600を示す。図46に示されるように、生成されたレゲックス4632は、2つの指定された例4633(例えば、"Mozilla 5.0"および"WindowsNT 6.1")に基づいて更新される。追加の外側および内側強調表示が、ユーザによって、指定された例4633において与えられるので、生成されたレゲックス4632もそれに応じて変化する。生成されたレゲックス4632は、例別レゲックスダイアログボックス4630に現れる。 FIG. 46 shows a user interface 4600 displaying updated generated Regex, according to some example embodiments. As shown in Figure 46, the generated Regex 4632 is updated based on two specified examples 4633 (eg, "Mozilla 5.0" and "Windows NT 6.1"). As additional outer and inner highlighting is provided by the user in the specified example 4633, the generated regex 4632 will change accordingly. The generated regex 4632 appears in the regex by example dialog box 4630 .

図47は、いくつかの例示的実施形態による、代替データ強調表示を表示するユーザインターフェイス4700を示す。図47に示すように、レゲックスを生成するための例としてアンダースコアを伴うバージョン番号を与えることができる。 FIG. 47 shows a user interface 4700 displaying alternative data highlighting, according to some example embodiments. A version number with an underscore can be given as an example for generating regex, as shown in FIG.

図47に示すように、別の陽性例を与えるために、ユーザは、外側強調表示をソフトウェア名4735およびバージョン番号4735として示すことができる。外側強調表示として選択されたソフトウェア名4735(例えばMacOS X)およびバージョン番号4736(例えば10_6_8)は、第1の色で強調表示され得る。ユーザは、外側強調表示を選択した後、内側強調表示を識別することができる。例えば、ユーザは、バージョン番号4736(例えば10_6_8)を内側強調表示として選択することができる。内側強調表示は、第1の色とは異なる第2の色で強調表示され得る。 As shown in FIG. 47, the user can indicate the outer highlighting as software name 4735 and version number 4735 to give another positive example. The software name 4735 (eg, MacOS X) and version number 4736 (eg, 10_6_8) selected for outer highlighting may be highlighted in a first color. After selecting the outer highlight, the user can identify the inner highlight. For example, the user can select version number 4736 (eg, 10_6_8) as the inner highlight. The inner highlighting may be highlighted with a second color different than the first color.

ユーザーによって与えられる強調表示例は、例別レゲックスダイアログボックス4730内の指定された例4733において識別される。図47に示すように、生成されたレゲックス4732は、3つの指定された例4733(例えば、"Mozilla 5.0"、"WindowsNT 6.1" および"MacOS X 10_6_8")に基づいて更新される。追加の外側および内側強調表示が、ユーザによって、指定された例4733において与えられるので、生成されたレゲックス4732もそれに応じて変化する。 The highlighted example provided by the user is identified in the specified example 4733 within the Regex by Example dialog box 4730 . As shown in Figure 47, the generated Regex 4732 is updated based on three specified examples 4733 (eg, "Mozilla 5.0", "Windows NT 6.1" and "MacOS X 10_6_8"). As additional outer and inner highlighting is provided by the user in the specified example 4733, the generated regex 4732 will change accordingly.

図48は、いくつかの例示的実施形態による、更新された生成されたレゲックスを表示するユーザインターフェイス4800を示す。図48に示されるように、ユーザがアンダースコアを伴うバージョン番号を選択することに応答して、生成されたレゲックス4832は、アンダースコア情報を含むように更新される。 FIG. 48 shows a user interface 4800 displaying updated generated Regex, according to some example embodiments. As shown in Figure 48, in response to the user selecting a version number with an underscore, the generated regex 4832 is updated to include the underscore information.

生成されたレゲックス4832は、3つの指定された例4833(例えば、"Mozilla 5.0"、"WindowsNT 6.1"および"MacOS X 10_6_8"」)に基づいて更新される。追加の外側および内側強調表示が、ユーザによって、指定された例4833において与えられるので、生成されたレゲックス4832もそれに応じて変化する。生成されたレゲックス4832は、例別レゲックスダイアログボックス4830に表示される。 The generated regex 4832 is updated based on three specified examples 4833 (eg, "Mozilla 5.0", "WindowsNT 6.1" and "MacOS X 10_6_8"). As additional outer and inner highlighting is provided by the user in the specified example 4833, the generated regex 4832 will change accordingly. The generated regex 4832 is displayed in the regex by example dialog box 4830 .

図49は、いくつかの例示的実施形態による、多重強調表示を実行するための方法4900のフローチャートである。 FIG. 49 is a flowchart of a method 4900 for performing multiple highlighting, according to some example embodiments.

ステップ4910において、ユーザは、データセット内のデータ(例えば、データフラグメント)を選択することができる。すなわち、ユーザは、外側強調表示(例えば、"Mozilla 5.0")および内側強調表示(例えば、"5.0")を選択することができる。ユーザは、第1のデータレコード4320において外側強調表示および内側強調表示を実行することができる。 At step 4910, the user may select data (eg, data fragments) within the dataset. That is, the user can select outer highlighting (eg, "Mozilla 5.0") and inner highlighting (eg, "5.0"). The user can perform outer highlighting and inner highlighting on the first data record 4320 .

ステップ4920で、ユーザが初期強調表示を実施した後、ユーザインターフェイスデータモデル生成器は、ステップ4910でユーザによって行われた強調表示に対応する、データセット内の同じレコードおよび/または他のレコード内のデータ(例えば、データフラグメント)を自動的に強調表示することができる。 At step 4920, after the user has performed the initial highlighting, the user interface data model generator generates the Data (eg, data fragments) can be automatically highlighted.

ステップ4930では、正規表現を生成することができる。正規表現は、ステップ4910でユーザによって与えられる強調表示に基づいて、およびステップ4920でユーザインターフェイスデータモデル生成器によって実行される追加の強調表示に基づいて、生成される。 At step 4930, a regular expression may be generated. A regular expression is generated based on the highlighting provided by the user at step 4910 and based on additional highlighting performed by the user interface data model generator at step 4920 .

ユーザが強調表示結果に満足しない場合、ユーザは、追加の例を与えるために、追加のデータを強調表示することができる。したがって、ステップ4910,4920および4930は、ユーザがデータセット上の最後の強調表示に満足するまで、繰り返すことができる。あるいは、ユーザは、生成された正規表現(例えば、4832)を修正して、所望の強調表示を生成することができる。 If the user is not satisfied with the highlighted results, the user can highlight additional data to provide additional examples. Accordingly, steps 4910, 4920 and 4930 can be repeated until the user is satisfied with the final highlighting on the dataset. Alternatively, the user can modify the generated regular expression (eg, 4832) to produce the desired highlighting.

例示的な実施形態では、ネスト化された(自動外側)モードにおける複数の強調表示について、必要な最小の数の周辺スパンに対して検索が実行される。ユーザインターフェイスが、複数の強調表示を伴うネスト化された(自動外側)モードである場合、バックエンドアルゴリズムは、特別モードに入ることができる。特別モードの理由は、例当たり複数の強調表示が、例示ストリングが通常よりも長いことを意味する傾向があるからである。LCSアルゴリズムは指数関数的なランタイムを有するので、これは外側強調表示の全長で実行するには長くかかりすぎるであろう。特別モードでは、アルゴリズムは内側強調表示で始まり、満足のいくレゲックスが生成されるまで、内側強調表示のまわりで外側強調表示を徐々に成長させる。 In an exemplary embodiment, for multiple highlights in nested (auto-outer) mode, a search is performed against the minimum number of surrounding spans required. If the user interface is in nested (auto-outer) mode with multiple highlights, the backend algorithm can enter a special mode. The reason for the special mode is that multiple highlights per example tend to mean that the example string is longer than usual. Since the LCS algorithm has an exponential runtime, this would take too long to run the full length of outer highlighting. In a special mode, the algorithm starts with an inner highlight and gradually grows the outer highlight around the inner highlight until a satisfactory regex is produced.

特別モードを実行するための例示的なコードは、以下のコードの一部またはすべてを含むことができる: Exemplary code for executing special modes can include some or all of the following code:

Figure 2022538705000025
Figure 2022538705000025

Figure 2022538705000026
Figure 2022538705000026

多重強調表示により、ユーザは、コマンド(例えば、抽出する、分割する、削除する、難読化する、置換する、および行をフィルタリングする)のいずれでも適用することができるデータ(例えばデータフラグメント)を容易に選択することができる。 Multiple highlighting allows users to easily view data (e.g. data fragments) to which any of the commands (e.g. extract, split, delete, obfuscate, replace, and filter lines) can be applied. can be selected to

例単位複数強調表示の能力について、個々の強調表示は、全行の代わりにクリック可能であってもよい。場合によっては、チェックボックス(またはユーザインターフェイス内の他の技術)を用いて、例単位1強調表示モードと例単位複数強調表示モードとの間で切り換えてもよい。例えば、例につき複数の強調表示をサポートするモードでは、ユーザは、正規表現が生成され得る複数の異なる例を与えるために、単一のデータ例(例えば、スプレッドシートセル)内で複数の異なる強調表示された部分を選択し得る。例ごとの複数の強調表示において、陽性および陰性の両方の「例」が識別され得、1つの例のリストにおいてカラーコードとして示され得る。例えば、マルチ強調表示モードでは、ある強調表示をクリックすると、その1つのサブ例のみが陰性になる。例単位複数強調表示の機能が図42~図49に示されている。 For example per-multiple highlighting capabilities, individual highlights may be clickable instead of whole lines. In some cases, checkboxes (or other techniques within the user interface) may be used to switch between per-example single highlighting mode and per-example multiple highlighting mode. For example, in a mode that supports multiple highlighting per example, the user may allow multiple different highlighting within a single data example (e.g., spreadsheet cell) to provide multiple different examples for which a regular expression may be generated. The displayed portion can be selected. In multiple highlighting per example, both positive and negative "examples" can be identified and shown as color codes in one example list. For example, in multi-highlight mode, clicking on a highlight makes only that one sub-example negative. The functionality of example-by-multiple highlighting is illustrated in FIGS. 42-49.

この一連の例に示すように、ユーザは、外側の強調表示された領域、それに続いて内側の強調表示された領域を順次選択して、対応する正規表現を生成/更新する。さらに、これらの図に示されるように、ユーザは、単一のデータセル内で複数の異なる内側/外側強調表示例を指定することができ、生成された正規表現は、ユーザインターフェイスを介して強調表示された(または他の方法でユーザによって選択された)各新たな例で更新され得る。 As shown in this series of examples, the user sequentially selects the outer highlighted region followed by the inner highlighted region to generate/update the corresponding regular expression. Additionally, as shown in these figures, the user can specify multiple different inner/outer highlighting examples within a single data cell, and the generated regular expressions can be highlighted via the user interface. It may be updated with each new example displayed (or otherwise selected by the user).

いくつかの実施形態では、特別なマルチ強調表示ネスト化自動外側検索モードは、所定の数のスパン(例えば、10スパン)の直径に制限され得る。そのような場合、最後のdo-whileループに関する条件は、while (!result.isSuccess && !reachedMaximal && numLookAheadAndBehindSpans < 10)のようであり得る。 In some embodiments, the special multi-highlight nested auto-outer search mode may be limited to a predetermined number of spans (eg, 10 spans) in diameter. In such a case, the condition for the final do-while loop could be like while (!result.isSuccess && !reachedMaximal && numLookAheadAndBehindSpans < 10).

特定のコマンドを実現するときに、マルチ強調表示を用いてもよい。
B.コマンド
上述したように、ユーザインターフェイスは、様々な実施形態において抽出コマンドに加えて追加のタイプのコマンドをサポートしてもよい。ユーザインターフェイスデータモデル生成器の要素は、それらのコマンドを実現するよう構成され得る。
Multiple highlighting may be used when implementing a particular command.
B. Commands As noted above, the user interface may support additional types of commands in addition to extraction commands in various embodiments. Elements of the user interface data model generator can be configured to implement those commands.

図24は、いくつかの例示的実施形態による、正規表現生成サーバ2400を示す。正規表現生成サーバ2400は、図1に示した正規表現生成器サーバ111に対応する。正規表現生成サーバ2400は、複数のプロセッサおよびメモリを含むことができる。正規表現生成サーバ2400は、正規表現生成器2410およびユーザインターフェイスデータモデル生成器2420を含むことができる。正規表現生成器2410は、レゲックス生成器とも称され得る。正規表現生成器2410は、図1の正規表現生成器116に対応し得る。ユーザインターフェイスデータモデル生成器2420は、図1のユーザインターフェイスデータモデル生成器114に対応し得る。 FIG. 24 shows a regular expression generation server 2400, according to some example embodiments. A regular expression generation server 2400 corresponds to the regular expression generator server 111 shown in FIG. The regular expression generation server 2400 can include multiple processors and memory. Regular expression generation server 2400 can include regular expression generator 2410 and user interface data model generator 2420 . Regular expression generator 2410 may also be referred to as a Regex generator. Regular expression generator 2410 may correspond to regular expression generator 116 of FIG. User interface data model generator 2420 may correspond to user interface data model generator 114 of FIG.

正規表現生成器2420は、抽出する、分割する、削除する、難読化する、置換する、および行をフィルタリングする、を含むいくつかの異なるコマンドを実行することができる。したがって、正規表現生成器2420は、抽出データ生成器2411、分割データ生成器2412、削除データ生成器2413、難読化データ生成器2414、置換データ生成器2415、行フィルタリングデータ生成器2416を含むことができる。以下、正規表現作成サーバ2400の各構成要素についてより詳細に説明する。 The regular expression generator 2420 can perform several different commands including extract, split, delete, obfuscate, replace, and filter lines. Thus, regular expression generator 2420 can include extraction data generator 2411 , split data generator 2412 , removal data generator 2413 , obfuscation data generator 2414 , replacement data generator 2415 , and line filtering data generator 2416 . can. Each component of the regular expression creation server 2400 will be described in more detail below.

抽出、分割、削除、難読化、置換、および行フィルタリングコマンドが説明されるが、例示的な実施形態は、追加のコマンドを実行するよう構成され得る。また、正規表現生成器2410は、図24に示した以外のコマンド生成部を含むこともできる。 Although extract, split, delete, obfuscate, replace, and line filtering commands are described, exemplary embodiments may be configured to perform additional commands. Regular expression generator 2410 may also include command generators other than those shown in FIG.

1.抽出
上述したように、抽出コマンドにおいては、正規表現のパターンマッチが識別されてもよく、マッチするデータが、新たに作成された列に抽出されてもよい。抽出関数は、図14および図15に関して上で説明されている。
1. Extraction As described above, in an extraction command, a regular expression pattern match may be identified and the matching data extracted into a newly created column. The extraction function is described above with respect to FIGS. 14 and 15. FIG.

2.分割
図25A、図25B、および図26は、ユーザインターフェイスを介して実現される分割コマンドの例を示す。図25Aおよび図25Bは、いくつかの例示的実施形態による、分割コマンドを実現するためのユーザインターフェイス2500およびユーザインターフェイス2501を示す。図26は、いくつかの例示的実施形態による、データセット上の分割コマンドの結果を示す。
2. Split Figures 25A, 25B, and 26 show examples of split commands implemented via the user interface. Figures 25A and 25B show user interface 2500 and user interface 2501 for implementing a split command, according to some example embodiments. FIG. 26 shows the results of a split command on a dataset, according to some exemplary embodiments.

分割コマンドは、デリミタとして用いられる特定の正規表現の存在に基づいて、複数の異なる列の作成をもたらすことができる。例えば、コンマ(「,」)がマッチされるべきパターンとして与えられる場合、コンマは、抽出操作中にデリミタとして用いられる。単一のコンマを含む抽出されるべき各データは、コンマにおいて分割され、2つの異なる列(すなわち、コンマの前のデータおよびコンマの後のデータ)に抽出される。分割されるべきデータ項目が2つのコンマを含む場合、そのデータはコンマに基づいて3つの部分に分割され、3つの新たな列に抽出される。したがって、分割コマンドは、(マッチが単一の列に入れられるであろう)パターンマッチに基づく抽出ではなく、デリミタに基づく(1つまたは複数の新たな列への)抽出を実行することができる。 A split command can result in the creation of multiple different columns based on the presence of a particular regular expression used as a delimiter. For example, if a comma (",") is given as the pattern to be matched, the comma is used as the delimiter during the extraction operation. Each data to be extracted that contains a single comma is split at the comma and extracted into two different columns (ie, the data before the comma and the data after the comma). If the data item to be split contains two commas, the data is split into three parts based on the commas and extracted into three new columns. Thus, the split command can perform delimiter-based extraction (to one or more new columns) rather than pattern-match-based extraction (where matches would be put into a single column). .

他の例では、分割コマンドは、特定のタイプのコンテンツに対して、マッチされるべきパターン(またはデリミタ)における中括弧または大括弧、アスタリスク、「<」もしくは「>」またはハイフンおよびダッシュ文字を用いるなどして、実行されてもよい。追加の記号を、デリミタとして用いてもよい。 In other examples, the split command uses braces or brackets, asterisks, "<" or ">" or hyphen and dash characters in the pattern (or delimiter) to be matched for certain types of content. and so on. Additional symbols may be used as delimiters.

図25Aに示されるように、データセットがユーザインターフェイス2500上に表示される。データセットはスプレッドシートとすることができる。データセットは、電話番号を含む列2510を含むことができる。電話番号は、第1のハイフン2511および第2のハイフン2512を含むことができる。分割コマンドが電話番号の列2510上で実現される場合、電話番号は、ユーザによって所望のように分割され得る。 A dataset is displayed on a user interface 2500 as shown in FIG. 25A. A dataset can be a spreadsheet. The dataset can include a column 2510 containing phone numbers. A phone number can include a first hyphen 2511 and a second hyphen 2512 . If a split command is implemented on the phone number column 2510, the phone number can be split as desired by the user.

図27は、いくつかの例示的実施形態による、分割コマンドを実行するための方法2700のフローチャートを示す。図27の例では、データを分割するためのデリミタとしてハイフン文字が用いられる。 FIG. 27 shows a flowchart of a method 2700 for executing split commands, according to some example embodiments. In the example of FIG. 27, a hyphen character is used as a delimiter for dividing data.

ステップ2710において、ユーザは、「電話番号」列2510内において第1のレコード2520のハイフンを選択することができる。ハイフンは、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いてハイフンを強調表示することによって、選択され得る。図25Aに示される例では、ユーザは、第1のレコード2520内の第1のハイフン2511を強調表示している。 At step 2710 , the user can select the first record 2520 hyphen in the “phone number” column 2510 . A hyphen may be selected by the user highlighting the hyphen on the display of the device, for example with a mouse or gesture, when the user is on the interactive user interface. In the example shown in FIG. 25A, the user has highlighted the first hyphen 2511 within the first record 2520 .

ステップ2720において、ユーザが第1のレコード2520内の第1のハイフンを強調表示した後、ユーザインターフェイスデータモデル生成器は、データレコード(例えば、図25Aに示すようなレコード2~25)の各々について、ユーザによって行われた選択に対応する電話番号列内の第1のハイフンのすべてを自動的に強調表示することができる。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード2520に対してユーザにより行われた強調表示に基づいて、電話番号列の残りのレコード(例えば、2~25)に対してどのような強調表示をすべきかを判断することができる。図面では25個のレコードが示されているが、例示的な実施形態は、25個よりも多いかまたは少ないレコードに分割コマンドを適用することができる。さらに、データセットは、何千または数千のレコードなど、多数のレコードを含むことができる。正規表現は、ユーザによって行われた最初の強調表示に基づいて、どのような追加の強調表示を同じレコード内、または追加のレコード内で実行すべきかを判断することができる。 At step 2720, after the user highlights the first hyphen in the first record 2520, the user interface data model generator displays the , all of the first hyphens in the phone number string corresponding to the selection made by the user can be automatically highlighted. That is, based on the highlighting made by the user for the first record 2520, the user interface data model generator determines what highlighting for the remaining records (eg, 2-25) in the phone number column. It can decide whether to display. Although twenty-five records are shown in the figure, exemplary embodiments may apply the split command to more or less than twenty-five records. Moreover, a dataset can include a large number of records, such as thousands or thousands of records. A regular expression can determine what additional highlighting to perform in the same record or in additional records based on the initial highlighting made by the user.

ステップ2730では、強調表示が行われた後、強調表示に基づいて正規表現を生成することができる。図25Aは、ユーザによって実行された強調表示、および正規表現生成器によって実行された自動強調表示に基づいて生成される、生成されたレゲックス2532を示す。生成される正規表現は、ユーザによって行われる強調表示の変化に基づいて更新される。 At step 2730, after the highlighting is done, a regular expression can be generated based on the highlighting. FIG. 25A shows a generated regex 2532 generated based on the highlighting performed by the user and the automatic highlighting performed by the regular expression generator. The generated regular expression is updated based on the highlighting changes made by the user.

ステップ2740では、「例別レゲックス」ダイアログボックス2530が自動的に画面上に現れる。図25Aに示す例では、電話番号列2510のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス2530が現れるが、「例別レゲックス」ダイアログボックス2530は初期入力(例えば、ユーザによる第1のレコードの強調表示)後に現れることもできる。 At step 2740, the "Regex by Example" dialog box 2530 automatically appears on the screen. In the example shown in FIG. 25A, the "Regex by Example" dialog box 2530 appears after all the records (eg, records 1-25) in the phone number column 2510 have been highlighted, but the "Regex by Example" dialog box 2530 appears. Dialog box 2530 may also appear after initial input (eg, highlighting of the first record by the user).

図25Aには、指定された例2533が示されており、ユーザは、選択されたデータを容易に強調表示するかまたは選択されたデータに対して行われる強調表示を容易に修正できる。ユーザは、「電話番号」列2510のデータにおける強調表示を変更すること、指定された例2533における強調表示を変更すること、または生成されたレゲックス2532を修正することによって、強調表示を修正することができる。「電話番号」列2510に対してなされた変更は、生成される正規表現2532に反映される。 A specified example 2533 is shown in FIG. 25A to allow the user to easily highlight selected data or modify the highlighting made to the selected data. The user can modify the highlighting by changing the highlighting in the data in the "phone number" column 2510, changing the highlighting in the specified example 2533, or modifying the generated regex 2532. can be done. Changes made to the “phone number” column 2510 are reflected in the regular expression 2532 that is generated.

ある例示的な実施形態では、最小スパニングツリーを、強調表示上ではなく、例上で用いることができる。したがって、与えられる各例に対して複数の強調表示があり、強調表示が重複する場合、最長共通サブシーケンスアルゴリズムの単一のコピーのみが、各例に対して実行される必要がある。与えられる例に対する強調表示が重複しない場合、最長共通サブシーケンスアルゴリズムは、強調表示の各々について実行することができる。 In one exemplary embodiment, the minimum spanning tree can be used on examples rather than on highlights. Therefore, if there are multiple highlightings for each example given and the highlightings overlap, only a single copy of the longest common subsequence algorithm needs to be run for each example. If the highlights for a given example are non-overlapping, the longest common subsequence algorithm can be run for each of the highlights.

例示的な実施形態では、最長スパンリストが最小スパニングツリー(MST)頂点に対して選択され、最初にLCSキューに供給される。LCSキューは、最長共通サブシーケンスアルゴリズムが適用されるスパンを含む。複数の強調表示を表す1つの例がgraphLcs()に渡される配列に含まれている例あたりの複数の強調表示で、最も長いそのような例は、スパンの順序リストがLCSキューに渡されると判断する最小スパニングツリーのグラフにおける頂点となるように選択される。 In an exemplary embodiment, the longest span list is selected for the minimum spanning tree (MST) vertices and fed first to the LCS queue. The LCS queue contains spans for which the longest common subsequence algorithm is applied. One example representing multiple highlights is contained in the array passed to graphLcs(), with multiple highlights per example, the longest such example being an ordered list of spans passed to the LCS queue It is chosen to be the vertex in the graph of the minimum spanning tree to be determined.

ステップ2750において、「分割」コマンドの選択が受信される。例えば、ユーザは、例別レゲックスダイアログボックス2530上の「分割」ボタン2531を選択できる。例別レゲックスダイアログボックス2530に示すように、マルチ強調表示チェックボックス2534および強調表示モードドロップダウンリストは、分割が選択されると無効化される。 At step 2750, a selection of a "split" command is received. For example, the user can select the “Split” button 2531 on the example Regex dialog box 2530 . As shown in Regex By Example dialog box 2530, the multi-highlight checkbox 2534 and highlight mode drop-down list are disabled when split is selected.

例示的な実施形態では、チェックボックスは、ユーザが第2の強調表示を行うことに基づいてUIがチェックボックスを自動的にチェックすると、ユーザの注意を喚起するように、活性化(animated)されてもよい。ある例示的な実施形態は、ユーザがUIの他の場所で対話することによって引き起こされる状態の変化に基づいてチェックボックスを活性化する。チェックボックスは、サーバシステムが、画面上の他の場所におけるユーザ対話に基づいてチェックボックスにその状態を自動的に変化させた場合に、活性化される。 In an exemplary embodiment, the checkbox is animated to draw the user's attention when the UI automatically checks the checkbox based on the user performing a second highlight. may Certain exemplary embodiments activate checkboxes based on state changes caused by user interactions elsewhere in the UI. A checkbox is activated when the server system automatically causes the checkbox to change its state based on user interaction elsewhere on the screen.

「分割」コマンドの選択が受信された後、ステップ2760において、正規表現生成器2410の分割データ生成器2412は、強調表示されたデリミタに基づいて電話番号を自動的に分割することができる。図25Bに示される例は、ユーザが図25Aの「分割」コマンド2531を選択した後に生ずる。 After the "split" command selection is received, at step 2760, the split data generator 2412 of the regular expression generator 2410 can automatically split the phone number based on the highlighted delimiters. The example shown in Figure 25B occurs after the user selects the "Split" command 2531 in Figure 25A.

図25Bに示されるように、分割コマンドは、強調表示設定をマルチ強調表示に変更する。図25Aでは、分割コマンドの選択に先立って、マルチ強調表示モード2534は選択されていない。図25Bでは、分割コマンドの選択後、マルチ強調表示モード2534が選択される。いくつかの実施形態では、「分割」コマンドが選択されると、ユーザインターフェイスは、マルチ強調表示チェックボックスおよび強調表示モードドロップダウンリストを有効にすることができる。例えば、図25Bを参照すると、ユーザが「分割」コマンドをクリックすると、強調表示モードは自動的に単一レベルに変更され得、その後、マルチ強調表示テキストボックスが有効化され得る。 As shown in Figure 25B, the split command changes the highlight setting to multi-highlight. In FIG. 25A, the multi-highlight mode 2534 has not been selected prior to selecting the split command. In FIG. 25B, multiple highlight mode 2534 is selected after selection of the split command. In some embodiments, when the "Split" command is selected, the user interface can enable a multi-highlight checkbox and a highlight mode dropdown list. For example, referring to FIG. 25B, when the user clicks on the "split" command, the highlighting mode may automatically change to single level, and then the multi-highlighting textbox may be enabled.

ステップ2770では、分割コマンド結果を表示することができる。図26に示されるユーザインターフェイス2600に示されるように、電話番号列2510からの電話番号は、ここで3つの列2610,2620および2630に分割されている。列2610は、第1のハイフンの前に現れる電話番号の一部を含み、列2620は、第1のハイフンと第2のハイフンとの間に現れる電話番号の一部を含み、列2630は、第2のハイフンの後に現れる電話番号の一部を含む。デリミタとして機能するハイフンは2つあるため、電話番号は3つの列に分割される。一部の番号の場合、ある列は市外局番を市内局番とともに含み得、なぜならば、市外局番は第1のハイフンの前に現れるからである。電話番号について、その電話番号内の情報に基づいて、フィールドがポピュレートされることになる。電話番号が1つのハイフンのみを有する場合、その番号に対して2列の情報のみが現れる。 At step 2770, the split command results may be displayed. As shown in user interface 2600 shown in FIG. 26, the phone numbers from phone number column 2510 are now split into three columns 2610, 2620 and 2630. FIG. Column 2610 contains the portion of the telephone number that appears before the first hyphen, column 2620 contains the portion of the telephone number that occurs between the first and second hyphen, and column 2630 contains the portion of the telephone number that appears before the first hyphen. Contains the part of the phone number that appears after the second hyphen. Since there are two hyphens acting as delimiters, the phone number is split into three columns. For some numbers, a column may contain the area code with the local code because the area code appears before the first hyphen. For phone numbers, the fields will be populated based on the information in the phone number. If the phone number has only one hyphen, only two columns of information will appear for that number.

3つの追加の列は、図26に示されるように、スプレッドシートビュー内に生成される。電話番号が分割されているので、ユーザは所望の情報をより容易に識別することができる。例えば、ユーザは、データレコード内の市外局番をより容易に識別することができる。また、ユーザは、列2610,2620および2630の各々に対して追加処理を行うことができる。したがって、ユーザはより容易にデータを利用することができる。例えば、ユーザは顧客の一次市外局番を識別することができる。 Three additional columns are generated in the spreadsheet view as shown in FIG. Because the phone number is split, the user can more easily identify the desired information. For example, users can more easily identify area codes in data records. Additionally, the user can perform additional actions on each of columns 2610, 2620 and 2630. FIG. Therefore, the user can use the data more easily. For example, the user may identify the customer's primary area code.

分割コマンドが実行されると、実行された分割コマンド(例えば、電話列分割)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 When a split command is executed, the executed split command (eg, phone string split) can be added to the transform script for the data set. A transformation script indicates commands that are applied to columns of data. Transformation scripts can be used to apply the same commands to different data sets.

したがって、例示的な実施形態は、データセット内のデータを分割するための迅速かつ効率的なユーザインターフェイスを提供する。さらに、正規表現生成器は、ユーザによって望まれる結果を生成する可能性がより高い設定を識別するように構成することができる。 Exemplary embodiments thus provide a quick and efficient user interface for partitioning data within a dataset. Additionally, the regular expression generator can be configured to identify settings that are more likely to produce the results desired by the user.

フロー図は特定のステップで説明されるが、ステップの順序は変更することができる。例えば、ユーザにより実行される初期強調表示に基づいて正規表現を生成することができる。 Although the flow diagrams are illustrated with specific steps, the order of the steps can be changed. For example, a regular expression can be generated based on the initial highlighting performed by the user.

3.削除
図28は、いくつかの例示的実施形態による、削除コマンドを実現するためのユーザインターフェイス2800を示す。図29は、いくつかの例示的実施形態による、データセット上に削除コマンドの結果を表示するユーザインターフェイス2900を示す。削除コマンドにおいては、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、スプレッドシートまたは他のデータビューからパターンとマッチするデータを削除してもよい。削除機能は、データを空のストリングで置換する(例えば、削除コマンドは、生成されたレゲックスを3つのキャプチャグループに変換することによって実現することができる)。
3. Delete FIG. 28 shows a user interface 2800 for implementing a delete command, according to some example embodiments. FIG. 29 shows a user interface 2900 displaying the results of a delete command on a dataset, according to some example embodiments. In the Delete command, the user highlights (or otherwise selects) an example text, generates a regular expression that corresponds to the pattern, and then retrieves data from a spreadsheet or other data view that matches the pattern. May be deleted. The delete function replaces the data with an empty string (eg the delete command can be implemented by converting the generated regex into three capturing groups).

図28に示されるように、データセットがユーザインターフェイス2800に表示される。データセットは、ストリートアドレスを含む列2810を含むことができる。図28に示す例では、ユーザはアドレスからストリート番号2811を削除したい。削除コマンドがレコード2820の「street_address」の列2810で実施される場合、ストリートアドレス情報は、ユーザによって所望されるように削除されることができる。図28において、ユーザは、スプレッドシートの「ストリートアドレス」列内のストリート番号を識別するためにいくつかの陽性例を選択している。これらの例は、指定された例2833として現れる。次いで、ユーザは「削除」ボタンをクリックして、削除操作を開始する。図29は、ストリート番号が削除された結果のスプレッドシートを示す。したがって、削除コマンドは本質的に(空のストリング)と置換される。これは、「置換」コマンドに関して以下で論じるように、生成されたレゲックスを3つのキャプチャグループに変換することによって実現され得る。 The dataset is displayed in a user interface 2800 as shown in FIG. The dataset may include columns 2810 containing street addresses. In the example shown in Figure 28, the user wants to remove the street number 2811 from the address. If a delete command is implemented in the "street_address" column 2810 of record 2820, the street address information can be deleted as desired by the user. In FIG. 28, the user has selected some positive examples to identify the street number in the "Street Address" column of the spreadsheet. These examples appear as designated examples 2833 . The user then clicks the "delete" button to initiate the delete operation. FIG. 29 shows the resulting spreadsheet with the street numbers removed. So the delete command is essentially replaced with (empty string). This can be accomplished by converting the generated regex into three capturing groups, as discussed below with respect to the "replace" command.

図30は、いくつかの例示的な実施形態による、削除コマンドを実行するための方法3000のフローチャートを示す。 FIG. 30 depicts a flowchart of a method 3000 for executing a delete command, according to some example embodiments.

ステップ3010において、ユーザは、削除のためにアドレス情報の一部を選択することができる。図28に示す例では、第1レコード2820について、アドレス情報のストリート番号部分2811が選択されている。アドレス情報のストリート番号部分2811は、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いてストリート番号部分を強調表示することによって、選択され得る。 At step 3010, the user can select a portion of the address information for deletion. In the example shown in FIG. 28, for the first record 2820, the street number portion 2811 of the address information is selected. The street number portion 2811 of the address information may be selected by the user on the device's display by highlighting the street number portion, for example with a mouse or gesture, when the user is on the interactive user interface.

ステップ3020において、ユーザが第1のレコード2820内のストリート番号部分2811を強調表示した後、ユーザインターフェイスデータモデル生成器は、データレコード(例えば、図28に示すレコード2~25)の各々について、「street_address」列2810内のストリート番号部分のすべてを自動的に強調表示することができる。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード2820に対して実行される強調表示に基づいて、「street_address」列2810内の残りのレコード(例えば、2~25)に対してどのような強調表示が実行されるべきかを判断することができる。図面では25個のレコードが示されているが、例示的な実施形態は、25個よりも多いかまたは少ないレコードに削除コマンドを適用することができる。正規表現は、ユーザによる最初の強調表示に基づいて、どのような追加の強調表示をすべきかを判断することができる。 At step 3020, after the user has highlighted the street number portion 2811 in the first record 2820, the user interface data model generator displays, for each of the data records (eg, records 2-25 shown in FIG. 28), " All of the street number portions within the "street_address" column 2810 can be automatically highlighted. That is, based on the highlighting performed on the first record 2820, the user interface data model generator will determine what the remaining records (eg, 2-25) in the “street_address” column 2810 are It can be determined whether highlighting should be performed. Although twenty-five records are shown in the figure, illustrative embodiments may apply the delete command to more or less than twenty-five records. A regular expression can determine what additional highlighting to do based on the initial highlighting by the user.

ステップ3030では、正規表現が生成される。図28には、生成された正規表現2832が示されている。生成された正規表現により、ユーザは、どのデータを選択するかを容易に強調表示することができる。削除コマンドの場合、生成された正規表現により、ユーザは、どのデータを削除するかを容易に強調表示することができる。生成された正規表現は、ユーザおよび正規表現生成器によって行われる強調表示に対応する。ユーザは、「street_address」列2810のデータにおける強調表示を変更することによって、または正規表現2832における強調表示を変更することによって、強調表示を修正することができる。「street_address」列2810に対する変更は、生成される正規表現2832に反映される。生成される正規表現は、ユーザによって行われる強調表示の変更に基づいて更新される。 At step 3030, a regular expression is generated. A generated regular expression 2832 is shown in FIG. The generated regular expressions allow the user to easily highlight which data to select. For the delete command, the generated regular expression allows the user to easily highlight which data to delete. The generated regular expression corresponds to the highlighting done by the user and the regular expression generator. The user can modify the highlighting by changing the highlighting in the data in the "street_address" column 2810 or by changing the highlighting in the regular expression 2832. Changes to the 'street_address' column 2810 are reflected in the generated regular expression 2832 . The generated regular expression is updated based on the highlighting changes made by the user.

ステップ3040では、「street_address」列2810のすべてのストリート番号に対して強調表示を行った後、「例別レゲックス」ダイアログボックス2830を画面上に自動的に表示することができる。図28に示す例では、「street_address」列2810のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス2830が現れるが、「例別レゲックス」ダイアログボックス2830は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。指定された例2833は、ユーザによって与えられる例を識別する。 At step 3040, after all street numbers in the "street_address" column 2810 have been highlighted, the "Regex by Example" dialog box 2830 can be automatically displayed on the screen. In the example shown in FIG. 28, the "Regex by Example" dialog box 2830 appears after all the records (eg, records 1-25) in the "street_address" column 2810 have been highlighted, but the "Regex by Example" dialog box 2830 appears. dialog box 2830 can also appear after initial entry (eg, highlighting the first record). Specified example 2833 identifies an example provided by the user.

ステップ3050では、削除コマンドの選択を受け付けることができる。例えば、ユーザは、「例別レゲックス」ダイアログボックス2830において、「削除」ボタン2831を選択することができる。 At step 3050, selection of a delete command may be accepted. For example, the user can select the “Delete” button 2831 in the “Regex by Example” dialog box 2830 .

削除コマンドの選択を受け付けた後、ステップ3060において、正規表現生成器2410の削除データ生成器2413は、強調表示に基づいてストリート番号を自動的に削除することができる。図28に示す例では、「street_address」レコードのすべてが強調表示を含んでいるため、図28に示すレコードの各々に対して削除コマンドが適用される。 After receiving the delete command selection, at step 3060, the delete data generator 2413 of the regular expression generator 2410 can automatically delete the street number based on the highlighting. In the example shown in FIG. 28, all of the "street_address" records contain highlighting, so the delete command is applied to each of the records shown in FIG.

ステップ3070において、削除結果を表示することができる。図29に表示されるユーザインターフェイス2900に示されるように、「street address」列2810のストリートアドレスからのストリート番号は除去されている。ストリート番号は、適所で削除される。 At step 3070, the deletion results can be displayed. As shown in the user interface 2900 displayed in Figure 29, the street number from the street address in the "street address" column 2810 has been removed. Street numbers are removed in place.

削除コマンドが実行された後、実行された削除コマンド(例えば、ストリートアドレス列削除)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 After the delete command is executed, the executed delete command (eg, delete street address column) can be added to the transformation script for the dataset. A transformation script indicates commands that are applied to columns of data. Transformation scripts can be used to apply the same commands to different data sets.

したがって、例示的な実施形態は、データセット内のデータを削除するための迅速かつ効率的なユーザインターフェイスを提供する。 Exemplary embodiments thus provide a quick and efficient user interface for deleting data in a dataset.

4.難読化
図31は、いくつかの例示的実施形態による、難読化コマンドを実現するためのユーザインターフェイス3100を示す。図32は、いくつかの例示的実施形態による、データセット上に難読化コマンドの結果を示すユーザインターフェイス3200を示す。
4. Obfuscation FIG. 31 illustrates a user interface 3100 for implementing obfuscation commands, according to some example embodiments. FIG. 32 illustrates a user interface 3200 showing results of obfuscation commands on a dataset, according to some example embodiments.

難読化コマンドでは、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、スプレッドシートまたは他のデータビューからパターンとマッチするデータを難読化(例えば、削除するのではなく曖昧化)してもよい。データは、レコード内のデータのすべてが見えないように難読化され得る。例えば、ユーザは、セキュリティまたはプライバシーの理由から情報を難読化することを望む場合がある。 The obfuscate command allows the user to highlight (or otherwise select) an example text, generate a regular expression that corresponds to the pattern, and then retrieve data from a spreadsheet or other data view that matches the pattern. May be obfuscated (e.g., obfuscated rather than deleted). Data can be obfuscated so that all of the data in the record is not visible. For example, a user may wish to obfuscate information for security or privacy reasons.

図31において、ユーザは、スプレッドシートの「ssn」列3110内の中央の2桁3112を選択している。次に、ユーザは「難読化」ボタンをクリックして難読化操作を開始する。図32は、「ssn」列全体の中央の2桁を2つのポンド符号に置き換えた結果のスプレッドシートを示す。 In FIG. 31, the user has selected the middle two digits 3112 in the "ssn" column 3110 of the spreadsheet. The user then clicks the "Obfuscate" button to initiate the obfuscation operation. Figure 32 shows the resulting spreadsheet after replacing the middle two digits of the entire "ssn" column with two pound signs.

図31に示されるように、データセットがユーザインターフェイス3100に表示される。データセットは、例えば社会保障番号に向けられた列3110を含む。難読化コマンドを示すために社会保障番号が用いられているが、データの列内のデータのいずれでも、ユーザによって望まれるように難読化され得る。例えば、ユーザは、クレジットカード情報または銀行口座情報など、任意の種類の取り扱いに注意を要する情報を難読化することを望む場合がある。 The dataset is displayed in a user interface 3100 as shown in FIG. The dataset includes, for example, a column 3110 directed to social security numbers. Although a social security number is used to indicate obfuscation commands, any of the data within the columns of data can be obfuscated as desired by the user. For example, a user may wish to obfuscate any kind of sensitive information, such as credit card information or bank account information.

社会保障番号は、第1のフィールド3111、第2のフィールド3112、および第3のフィールド3113に分けることができる。第1のフィールド3111は、第1のダッシュの前にあり得、第2のフィールド3112は、ダッシュ間にあり得、第3のフィールド3113は、社会保障番号の第2のダッシュの後にあり得る。図31に示される例では、ユーザは、社会保障番号のすべてが見えないように、社会保障番号の第2のフィールド3112(例えば、第1のダッシュと第2のダッシュとの間の数字)を難読化すること望む。第2のフィールドが難読化されているが、ユーザは社会保障番号内のフィールドのいずれかまたはすべてを難読化することを選択することができる。 The social security number can be divided into first field 3111 , second field 3112 and third field 3113 . A first field 3111 may precede the first dash, a second field 3112 may lie between the dashes, and a third field 3113 may follow the second dash of the social security number. In the example shown in FIG. 31, the user has edited the second field 3112 of the social security number (eg, the digits between the first and second dashes) so that all of the social security number is not visible. I would like to obfuscate. Although the second field is obfuscated, the user can choose to obfuscate any or all of the fields within the social security number.

図33は、いくつかの例示的実施形態による、難読化コマンドを実行するための方法3300のフローチャートを示す。 FIG. 33 shows a flowchart of a method 3300 for executing obfuscated commands, according to some example embodiments.

ステップ3310において、社会保障番号列3110内の第2のフィールド3112の選択が受け付けられる。選択されたフィールド3112は、第1のレコード3120について選択される。第2のフィールド3112は、ユーザが対話型ユーザインターフェイス上にいる場合、デバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いることによって、選択され得る。ユーザによって選択された第2のフィールドは、第1の色で強調表示され得る。ユーザによってなされた選択は、ダイアログボックス3130内の指定された例3133として与えられる。 At step 3310, selection of the second field 3112 in the Social Security Number column 3110 is accepted. Selected fields 3112 are selected for the first record 3120 . A second field 3112 may be selected by using, for example, a mouse or gestures on the device's display when the user is on the interactive user interface. A second field selected by the user may be highlighted with a first color. Selections made by the user are provided as named examples 3133 in dialog box 3130 .

ステップ3320では、社会保障番号列内の社会保障番号のすべてを、ステップ3320において実行される強調表示に対応するよう強調することができる。すなわち、列3110の社会保障番号内のすべての第2のフィールドは、第1の色で強調表示され、列3110の社会保障番号内のすべての第1のフィールド3111および第3のフィールド3113は、第2の色で強調表示されることになる。フィールドは、ユーザが修正されるフィールドと修正されないフィールドを容易に区別できるように、異なる色で強調表示される。 At step 3320 , all of the social security numbers in the social security number column can be highlighted to correspond to the highlighting performed at step 3320 . That is, all second fields within the social security numbers in column 3110 are highlighted in a first color, and all first and third fields 3111 and 3113 within the social security numbers in column 3110 are It will be highlighted in the second color. Fields are highlighted in different colors so that the user can easily distinguish between modified and unmodified fields.

ユーザインターフェイスデータモデル生成器は、すべてのレコード(例えば、2~25)を、第1のレコード3120に対してユーザによって実行された強調表示に対応するように、強調表示することができる。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード3120に対して実行された強調表示に基づいて、社会保障番号列内の残りのレコード(例えば2~25)に対してどのような強調表示が実行されるべきかを判断することができる。図面では25個のレコードが示されているが、例示的な実施形態は、25個よりも多いかまたは少ないレコードに難読化コマンドを適用することができる。 The user interface data model generator can highlight all records (eg, 2-25) to correspond to the highlighting performed by the user on the first record 3120 . That is, based on the highlighting performed for the first record 3120, the user interface data model generator determines what highlighting for the remaining records (eg, 2-25) in the Social Security Number column. should be executed. Although 25 records are shown in the figure, exemplary embodiments may apply obfuscation commands to more or less than 25 records.

ステップ3030では、正規表現を生成することができる。図31には、生成された正規表現3132が例別ダイアログボックス3130に示されている。生成された正規表現により、ユーザは、どのデータを難読化すべきかを容易に強調することができる。ユーザは、「ssn」列3110のデータにおける強調表示を変更することによって、または生成された正規表現3132における強調表示を変更することによって、強調表示を修正することができる。「ssn」列3110への変更は、生成される正規表現3132に反映される。すなわち、ユーザが行ったデータセットに対する強調表示の変更に基づいて、生成される正規表現が更新される。 At step 3030, a regular expression may be generated. A generated regular expression 3132 is shown in an example dialog box 3130 in FIG. The generated regular expressions allow the user to easily highlight which data should be obfuscated. The user can modify the highlighting by changing the highlighting in the data in the "ssn" column 3110 or by changing the highlighting in the generated regular expression 3132. Changes to the 'ssn' column 3110 are reflected in the generated regular expression 3132 . That is, the generated regular expression is updated based on the highlighting changes made by the user to the data set.

ステップ3340において、社会保障番号に対して強調表示が行われた後、「例別レゲックス」ダイアログボックス3130が画面上に自動的に現れることができる。図31に示す例では、社会保障番号列3110のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス3130が現れるが、「例別レゲックス」ダイアログボックス3130は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。「例別レゲックス」ダイアログボックス3130は、ユーザにより入力される指定された例3133を含む。また、「例別レゲックス」ダイアログボックス3130は、生成された正規表現3132を含む。 At step 3340, after the social security number has been highlighted, a "Regex by Example" dialog box 3130 may automatically appear on the screen. In the example shown in FIG. 31, the "Regex by Example" dialog box 3130 appears after all the records (eg, records 1-25) in the Social Security Number column 3110 have been highlighted, but the "Regex by Example" dialog box 3130 appears. dialog box 3130 can also appear after initial entry (eg, highlighting the first record). The "Regex by Example" dialog box 3130 includes the specified example 3133 entered by the user. The “Regex by Example” dialog box 3130 also includes a generated regular expression 3132 .

ステップ3350において、「難読化」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3130において、「難読化」ボタン3131を選択することができる。図31に示すように、ユーザは、難読化ボタン3131を選択することができる。 At step 3350, selection of the "obfuscate" command is accepted. For example, the user can select the “Obfuscate” button 3131 in the “Regex by Example” dialog box 3130 . As shown in FIG. 31, the user can select the Obfuscate button 3131.

ステップ3360において、難読化コマンドが受信された後、正規表現生成サーバ2400の難読化生成器2414は、「ssn」列3110内の社会保障番号の第2のフィールドのすべてを自動的に難読化することができる。 At step 3360, after the obfuscation command is received, the obfuscation generator 2414 of the regular expression generation server 2400 automatically obfuscates all of the second field of the social security number in the "ssn" column 3110. be able to.

ステップ3370では、難読化結果を表示することができる。図32は、いくつかの例示的実施形態による、データセット上に難読化コマンドの結果を表示するユーザインターフェイス3200を示す。図32に示すように、ユーザによって選択された第2のフィールド3112は、難読化されるべき強調表示されたフィールドの代わりに「##」に置き換えられる。したがって、社会保障列3110内の社会保障番号の第2のフィールド3112は、すべて、「##」に置換されている。すなわち、すべての社会保障番号に対する第2のフィールド3112が難読化されている。 At step 3370, the obfuscation results can be displayed. FIG. 32 shows a user interface 3200 displaying results of obfuscation commands on a dataset, according to some example embodiments. As shown in Figure 32, the second field 3112 selected by the user is replaced with "##" instead of the highlighted field to be obfuscated. Therefore, the second field 3112 of the social security number in the social security column 3110 has all been replaced with "##". That is, the second field 3112 for all social security numbers is obfuscated.

難読化コマンドが実行された後、実行された難読化コマンド(例えば、obfuscate_column_ssn)は、データセットのための変換スクリプト3230に追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 After the obfuscation command is executed, the executed obfuscation command (eg, obfuscate_column_ssn) can be added to the transformation script 3230 for the dataset. A transformation script indicates commands that are applied to columns of data. Transformation scripts can be used to apply the same commands to different data sets.

したがって、例示的な実施形態は、データセット内のデータを難読化するための迅速かつ効率的なユーザインターフェイスを提供し、ユーザ情報のプライバシーを維持することができる。 Accordingly, example embodiments can provide a quick and efficient user interface for obfuscating data in a dataset and maintain the privacy of user information.

5.置換
いくつかの例示的実施形態に従い、図34は、置換コマンドを実現するためのユーザインターフェイス3400を示し、図35は、置換コマンドを実現するためのユーザインターフェイス3500を示す。置換コマンドにおいては、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、パターンにマッチするテキストを他の選択されたテキストと置換することができる。
5. Substitutions FIG. 34 illustrates a user interface 3400 for implementing replacement commands, and FIG. 35 illustrates a user interface 3500 for implementing replacement commands, according to some exemplary embodiments. In the Replace command, the user highlights (or otherwise selects) an example text to generate a regular expression that corresponds to the pattern, and then replaces the text that matches the pattern with other selected text. can do.

置換コマンドは、ダイアログ内に例の前後を示す2列テーブルを動的に表示することを含む。置換表現におけるキャプチャグループのコンテンツを利用するために、ユーザはJava(登録商標)およびJavascriptレゲックスAPIからの標準的なレゲックス置換構文である$1を用いることができる。 The replace command involves dynamically displaying a two-column table of before and after examples within the dialog. To utilize the content of a capturing group in a substitution expression, users can use the standard Regex substitution syntax $1 from the Java® and Javascript Regex APIs.

図37は、いくつかの例示的な実施形態による、置換コマンドを実行するための方法3700のフローチャートを示す。 FIG. 37 depicts a flowchart of a method 3700 for executing replacement commands, according to some example embodiments.

ステップ3710において、ユーザは、「street_address」列2810内で、ユーザが他のデータで置換することを望むフィールドを選択することができる。図34に示す例において、ユーザは、ストリートアドレスの「Drive」を「Dr.」に置換することを望む。図34に示すように、ユーザは、データセットの第5のレコード3420から「Drive」を選択することができる。置換されるべきデータは、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いて置換されるべきデータを強調表示することによって、選択され得る。 At step 3710, the user can select the field within the "street_address" column 2810 that the user wishes to replace with other data. In the example shown in FIG. 34, the user wishes to replace the street address "Drive" with "Dr.". As shown in Figure 34, the user can select "Drive" from the fifth record 3420 of the dataset. The data to be replaced may be selected by the user, when on the interactive user interface, by highlighting the data to be replaced, for example with a mouse or gestures on the display of the device.

ステップ3720において、ユーザが、第5のレコードにおいて置換されるべきデータ(例えば、「Drive」)を強調表示した後、ユーザインターフェイスデータモデル生成器は、第5のレコード3420において実行された強調表示に対応する、残りのレコード内のすべてのフィールドを自動的に強調表示することができる。ユーザインターフェイスデータモデル生成器は、「Drive」を含むストリートアドレスを自動的に強調表示することができる。図34に示すように、レコード7,13,16,18,および20には「Drive」が含まれているため、レコード7,13,16,18,および20において、「Drive」が自動的にユーザインターフェイスデータモデル生成部によって強調表示される。「Drive」は、レコード5,7,13,16,18,および20において第1の色で強調表示され得る。「Drive」を含むストリートアドレスの残りは、第1の色とは異なる第2の色で強調表示され得る。したがって、置換されるべき部分を容易に識別することができる。 At step 3720, after the user highlights the data to be replaced in the fifth record (e.g., “Drive”), the user interface data model generator changes the highlighting performed in the fifth record 3420 to All corresponding fields in the rest of the record can be automatically highlighted. The user interface data model generator can automatically highlight street addresses containing "Drive". As shown in FIG. 34, records 7, 13, 16, 18, and 20 contain "Drive", so in records 7, 13, 16, 18, and 20, "Drive" is automatically Highlighted by the User Interface Data Model Generator. "Drive" may be highlighted in the first color in records 5, 7, 13, 16, 18, and 20; The rest of the street address containing "Drive" can be highlighted in a second color different from the first color. Therefore, the portion to be replaced can be easily identified.

ステップ3730において、正規表現3432が生成され得る。図35に示すように、3つの部分からなる生成された正規表現3532が示されている。3つの部分からなる生成された正規表現により、ユーザは、データの「Drive」部分、「Drive」よりも前の部分、または「Drive」よりも後の部分を容易に置換することができる。この例では、ユーザは、データの「Drive」部分を「Dr」と置き換え、ユーザは、ポップアップ「例別レゲックス」ダイアログボックス3530のプレビュースプレッドシートで結果を直ちに見ることができる。 At step 3730, a regular expression 3432 may be generated. As shown in FIG. 35, a generated regular expression 3532 of three parts is shown. The three-part generated regular expression allows the user to easily replace the 'Drive' part of the data, the part before the 'Drive', or the part after the 'Drive'. In this example, the user replaces the "Drive" portion of the data with "Dr" and the user can immediately see the results in the preview spreadsheet in the pop-up "Regex by Example" dialog box 3530.

図34において、ユーザは、スプレッドシートの「street_address」列から十分な数の例3433(陽性および陰性)を選択して、「Drive」で終わるアドレスに対応する正規表現を生成している。アドレス3434は陽性例であり、アドレス3435は陰性例である。 In Figure 34, the user has selected a sufficient number of examples 3433 (positive and negative) from the "street_address" column of the spreadsheet to generate a regular expression corresponding to addresses ending in "Drive". Address 3434 is a positive example and address 3435 is a negative example.

ステップ3740では、すべてのレコードに対して強調表示が行われた後、「例別レゲックス」ダイアログボックス3430が画面上に自動的に現れる。図34に示す例では、「例別レゲックス」ダイアログボックス3430は、置換されるべきデータを含むすべてのレコードに対して強調表示が行われた後に現れるが、「例別レゲックス」ダイアログボックス3430は、初期入力(例えば、第5のレコードにおける「Drive」の強調表示)の後に現れることもできる。「例別レゲックス」ダイアログボックス3430は、指定された例3433と、生成された正規表現3432とを含むことができる。アドレス3434は陽性例であり、アドレス3435は陰性例である。 At step 3740, after all records have been highlighted, the "Regex by Example" dialog box 3430 automatically appears on the screen. In the example shown in Figure 34, the "Regex by Example" dialog box 3430 appears after all records containing data to be replaced have been highlighted, but the "Regex by Example" dialog box 3430 It can also appear after the initial entry (eg highlighting of "Drive" in the fifth record). The “regex by example” dialog box 3430 can include a specified example 3433 and a generated regular expression 3432 . Address 3434 is a positive example and address 3435 is a negative example.

ステップ3750において、「置換」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3430上の「置換」ボタン3431を選択して、置換コマンドを開始することができる。 At step 3750, selection of the "replace" command is accepted. For example, the user can select a "Replace" button 3431 on the "Regex by Example" dialog box 3430 to initiate a replace command.

ステップ3760では、パネル3538および「~と置換」フィールド3537を表示して、どの情報が置換されているかを判断することにおいてユーザが支援することができる。図35に示されるように、パネル3538内で、ユーザは、初期アドレス、およびそのアドレスが置換されたときにどのように現れるかを見ることができる。例えば、アドレス内の「Drive」という語は、要素3539によって示されるように、アドレス内に「Dr.」として現れる。パネル3538は、置換コマンドが適用された場合に、データがどのように現れるかに関するプレビューをユーザに提供することにおいてユーザを支援することができる。 At step 3760, panel 3538 and "replace with" field 3537 may be displayed to assist the user in determining what information is being replaced. As shown in FIG. 35, within panel 3538, the user can see the initial address and how it will appear when replaced. For example, the word "Drive" in the address appears as "Dr." Panel 3538 can assist the user in providing the user with a preview of how the data will appear if the replace command is applied.

図35に示されるように、レゲックス3532は、三重キャプチャグループに変換される。生成されたレゲックスは「^(.*?)(D[a-z]+)()$」である。したがって、ユーザは、強調表示前(^(.*?))、強調表示上((D[a-z]+))、強調表示後(())にどのようなデータが出現するかを容易に見ることができる。図35に示す例では、強調表示後はデータが現れない(())。強調表示上のデータは、ユーザによって選択されるデータである。この例では、強調表示上のデータは、ユーザが置換のために選択したデータである「Drive」である。 As shown in FIG. 35, Regex 3532 is transformed into a triple capturing group. The generated regex is "^(.*?)(D[a-z]+)()$". So the user can easily see what data appears before highlighting (^(.*?)), on highlighting ((D[a-z]+)), and after highlighting (()). be able to. In the example shown in FIG. 35, no data appears after highlighting (()). The data on the highlight is the data selected by the user. In this example, the data on the highlight is "Drive" which is the data the user has selected for replacement.

ユーザはまた、選択された語が何と置き換えられるかを識別できる。「~と置換」フィールド3537は、選択された語(例えば「Drive」)が置換されるべき語(例えば、「Dr」)を識別する。ユーザは、「~と置換」フィールド3537において置換語を修正することができる。「~と置換」フィールド3537においてユーザによって選択された置換語は、強調表示されたレコードに適用される。ユーザが置換に同意すれば、ユーザは作成ボタン3536を選択し、置換データ生成器2415は置換を行うことができる。 The user can also identify what the selected word will be replaced with. A "replace with" field 3537 identifies the word (eg, "Dr") that the selected word (eg, "Drive") should be replaced with. The user can amend the replacement word in the “replace with” field 3537 . The replacement word selected by the user in the "replace with" field 3537 is applied to the highlighted record. If the user agrees with the replacement, the user selects the create button 3536 and the replacement data generator 2415 can make the replacement.

上に示されるように、置換コマンドはまた、ダイアログ内に、例の前後を示す2列テーブルを動的に表示することを含み得る(例えば、ポップアップ「例別レゲックス」ダイアログボックスのプレビュースプレッドシート)。置換表現におけるキャプチャグループのコンテンツを利用するために、ユーザはJavaおよびJavascriptレゲックスAPIからの標準的なレゲックス置換構文である$1を用いることができる。さらに、ユーザが置換コマンドを選択し、ユーザがキャプチャグループを生成するモード(すなわち、ネスト化-自動-外側)にある場合、ダイアログに表示される生成されたレゲックスは、合計3つ、すなわち強調表示の前、強調表示上、および強調表示の後のための追加の2つのキャプチャグループを得る。次いで、ユーザは、置換表現内においてこれらを$1、$2および$3として言及することができる。さらに、キャプチャグループがない場合、システムは、生成されたレゲックス全体をキャプチャグループにラップすることができ、ユーザは、$1を用いて元のテキストを参照することができる。 As indicated above, the replace command may also include dynamically displaying a two-column table within the dialog showing the before and after examples (e.g., the preview spreadsheet in the pop-up "Regex by Example" dialog box). . To utilize the content of a capturing group in a substitution expression, users can use the standard Regex substitution syntax $1 from the Java and Javascript Regex APIs. Additionally, if the user selects the replace command and the user is in a mode that generates capture groups (i.e. nested-auto-outer), there are a total of three generated regex displayed in the dialog, i.e. highlighted We get two additional capture groups: before the highlight, above the highlight, and after the highlight. The user can then refer to these as $1, $2 and $3 within the replacement expression. Additionally, if there is no capturing group, the system can wrap the entire generated regex into a capturing group, and the user can refer to the original text using $1.

例示的な実施形態で開示されるように、強調表示モードは、ネスト化自動、ネスト化手動、および単一レベルを含むことができる。ネスト化自動は、ネスト化(自動外側)としても知られる。ネスト化手動は、ネスト化(完全制御)としても知られる。 As disclosed in the exemplary embodiment, highlighting modes can include nested automatic, nested manual, and single level. Nested auto is also known as nested (auto outer). Nested manual is also known as nested (full control).

ステップ3770では、置換を行うことができる。「作成」ボタン3536をクリックし変更を確定した後、データが置換される。 At step 3770, substitutions may be made. After confirming the changes by clicking the "Create" button 3536, the data is replaced.

ステップ3780では、置換結果を表示することができる。図36は、いくつかの例示的実施形態による、置換コマンドの結果をデータセットに表示するユーザインターフェイス3600を示す。図36に示されるユーザインターフェイス3600に示されるように、「Drive」を含むレコードは、今、「Dr.」と置換される。これにより、「street_address」列2810における「Drive」を含むレコードは、「Dr.」と置換される。 At step 3780, the replacement results can be displayed. FIG. 36 shows a user interface 3600 displaying the results of a replace command on a dataset, according to some example embodiments. As shown in the user interface 3600 shown in Figure 36, the record containing "Drive" is now replaced with "Dr.". As a result, records containing "Drive" in the "street_address" column 2810 are replaced with "Dr.".

置換コマンドが実行された後、実行された置換コマンド(例えば、ストリートアドレス列置換)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 After the replacement commands are executed, the performed replacement commands (eg, street address string replacement) can be added to the transformation script for the data set. A transformation script indicates commands that are applied to columns of data. Transformation scripts can be used to apply the same commands to different data sets.

したがって、例示的な実施形態は、データセット内のデータを置換するための迅速かつ効率的なユーザインターフェイスを提供する。 Exemplary embodiments thus provide a quick and efficient user interface for replacing data in a dataset.

6.行のフィルタリング
図38および図39は、いくつかの例示的実施形態による、行フィルタリングコマンドを実現するためのユーザインターフェイス3800および3900を示す。図40は、いくつかの例示的実施形態による、データセット上に行フィルタリングコマンドの結果を表示するユーザインターフェイス4000を示す。
6. Filtering Rows FIGS. 38 and 39 illustrate user interfaces 3800 and 3900 for implementing row filtering commands, according to some example embodiments. FIG. 40 illustrates a user interface 4000 displaying results of row filtering commands on a dataset, according to some example embodiments.

フィルタリング操作において、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、データをフィルタリングして、パターンとマッチするデータを含む(または除外する)ようにすることができる。「行フィルタリング」操作の例を図38、図39、図40および図41に示す。 In a filtering operation, the user highlights (or otherwise selects) an example text to generate a regular expression that corresponds to the pattern, and then filters the data to include data that matches the pattern (or excluded). Examples of "row filtering" operations are shown in FIGS.

図41は、いくつかの例示的な実施形態による、行フィルタリングコマンドを実行するための方法4100のフローチャートを示す。図41に示される例では、ユーザは、ストリートアドレスにおいて「Avenue」を有するレコードを識別するようにデータセット内のレコードをフィルタリングすることを望む。 FIG. 41 depicts a flowchart of a method 4100 for executing row filtering commands, according to some example embodiments. In the example shown in Figure 41, the user wishes to filter the records in the dataset to identify records that have "Avenue" in the street address.

ステップ4110において、ユーザは、レコードをフィルタリングするために用いられるデータを選択することができる。図38に示す例では、ユーザは、「street address」列2810から「Avenue」を選択している。データは、ユーザがフィルタリングに用いられるデータを強調表示することによって、選択することができる。例えば、ユーザが対話型ユーザインターフェイス上にいる場合、データは、マウスを用いて、またはデバイスのディスプレイ上でジェスチャーを介して、選択することができる。 At step 4110, the user can select the data that will be used to filter the records. In the example shown in FIG. 38, the user has selected 'Avenue' from the 'street address' column 2810 . Data can be selected by the user by highlighting the data to be used for filtering. For example, when the user is on an interactive user interface, data can be selected with a mouse or via gestures on the device's display.

ステップ4120において、ユーザがフィルタリングに用いられるデータを強調表示した後、ユーザインターフェイスデータモデル生成器は、他のレコード内の対応するデータを自動的に強調表示することができる。例えば、ユーザインターフェイスデータモデル生成器は、レコード8、13、および19において「Avenue」という語を強調表示し得る。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード3820に対して実行される強調表示に基づいて、「street_address」列2810の残りのレコード(例えば、2~25)に対してどのような強調表示が実行されるべきかを判断することができる。 At step 4120, after the user highlights data to be used for filtering, the user interface data model generator can automatically highlight corresponding data in other records. For example, the user interface data model generator may highlight the word "Avenue" in records 8, 13, and 19. That is, based on the highlighting performed for the first record 3820, the user interface data model generator determines what highlighting for the remaining records (eg, 2-25) in the "street_address" column 2810. It can be determined whether display should be performed.

ステップ4130では、ユーザによって選択された強調表示に基づいて正規表現を生成することができる。図39は、生成された正規表現を含むダイアログボックス3930を示す。 At step 4130, a regular expression may be generated based on the highlighting selected by the user. Figure 39 shows a dialog box 3930 containing the generated regular expression.

図39には、生成された正規表現3932が示されており、ユーザは、フィルタリングの基礎として用いられるデータを容易に識別することができる。図39では、3つの例がユーザによって強調表示され、指定された例3933に表示されている。したがって、指定された例3933には、3つのアドレスが現れる。ユーザは、スプレッドシートの「street_address」列から十分な数の例3933(陽性3934および陰性3935)を選択して、「Avenue」で終わるアドレスに対応する正規表現を生成している。3つの例が示されているが、ユーザは、ユーザによって望まれる結果に基づいて1つまたは複数の例を用いることができる。 FIG. 39 shows the generated regular expression 3932 so that the user can easily identify the data to be used as the basis for filtering. In FIG. 39, three examples are highlighted by the user and displayed in designated example 3933 . Thus, in the specified example 3933, three addresses appear. The user has selected enough examples 3933 (positive 3934 and negative 3935) from the "street_address" column of the spreadsheet to generate a regular expression corresponding to addresses ending in "Avenue". Three examples are shown, but the user can use one or more examples based on the results desired by the user.

陽性例および陰性例は、異なる色で、または陽性例および陰性例がダイアログボックス3930内において、およびユーザインターフェイス上に表示されるデータセット内において、異なるように表示される、任意の方法で、表示され得る。図39に示す指定された例3933では、「street address」列2810から陰性例として、「street」を含む2つのアドレスがユーザによって選択される。すなわち、それらは、ユーザがレコードに出現することを望まないデータの例である。しかしながら、追加の例がユーザによって与えられる場合、フィルタリングに適用される、より正確なレゲックス表現を生成することができる。 Positive and negative examples are displayed in different colors or in any manner in which positive and negative examples are displayed differently within dialog box 3930 and within data sets displayed on the user interface. can be In the designated example 3933 shown in FIG. 39, two addresses containing "street" are selected by the user from the "street address" column 2810 as negative examples. That is, they are examples of data that the user does not want to appear in the record. However, if additional examples are given by the user, a more accurate regex representation to be applied to the filtering can be generated.

ユーザは、「street_address」列2810内のデータにおける強調表示を変更することによって、または正規表現3932における強調表示を変更することによって、強調表示を修正することができる。「street_address」列2810に対する変更は、生成される正規表現3932に反映される。他の例では、ユーザは、同様の技法を用いて、(保持されるべきではなく)フィルタリング除去されるべきパターンに対応する正規表現を定義してもよい。 The user can modify the highlighting by changing the highlighting in the data in the "street_address" column 2810 or by changing the highlighting in the regular expression 3932. Changes to the 'street_address' column 2810 are reflected in the generated regular expression 3932 . In another example, a user may use similar techniques to define regular expressions corresponding to patterns that should be filtered out (rather than retained).

ステップ4140では、強調表示が行われた後、「例別レゲックス」ダイアログボックス3930が自動的に画面上に現れる。図39に示す例では、「street_address」列2810のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス3930が現れるが、「例別レゲックス」ダイアログボックス3930は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。 At step 4140, after the highlighting is done, the "Regex by Example" dialog box 3930 automatically appears on the screen. In the example shown in FIG. 39, the “Regex by Example” dialog box 3930 appears after all the records (eg, records 1-25) in the “street_address” column 2810 have been highlighted, but the “Regex by Example” dialog box 3930 appears. dialog box 3930 can also appear after initial entry (eg, highlighting the first record).

ステップ4150において、「行フィルタリング」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3930において、「行フィルタリング」ボタン3931を選択することができる。ユーザは、ユーザインターフェイス内の「行フィルタリング」ボタン3931をクリックして、図38に示されるように、すべての他のタイプのアドレスをフィルタリング除去して「Avenue」アドレスのみを残すフィルタオプションを開始することができる。 At step 4150, selection of the "filter rows" command is accepted. For example, the user can select the “Filter Rows” button 3931 in the “Regex by Example” dialog box 3930 . The user clicks the "Filter Rows" button 3931 in the user interface to initiate a filter option that filters out all other types of addresses leaving only "Avenue" addresses, as shown in FIG. be able to.

ステップ4160では、行フィルタリングコマンドに関する確定が受け付けられる。具体的には、例3933によって識別されるレコードを保持する(保持ボタン3937)か、例3933によって識別されるレコードを削除する(削除ボタン3938)かの選択を受け付ける。「保持」ボタン3934または「削除」ボタン3935を選択した後、ユーザは、作成ボタン3936を選択してフィルタリングを開始することができる。 At step 4160, a confirmation regarding the row filtering command is received. Specifically, it accepts a selection of whether to retain the record identified by example 3933 (hold button 3937) or delete the record identified by example 3933 (delete button 3938). After selecting the "Keep" button 3934 or the "Delete" button 3935, the user can select the Create button 3936 to initiate filtering.

ステップ4170において、正規表現生成器2410の行フィルタリングデータ生成器2416は、ユーザによって入力されたフィルタリング基準に従ってレコードを自動的にフィルタリングすることができる。 At step 4170, the row filtering data generator 2416 of the regular expression generator 2410 can automatically filter the records according to the filtering criteria entered by the user.

ステップ4180では、行フィルタリングの結果を表示する。図40に示されるユーザインターフェイス4000に示されるように、レコードは、アドレスに「Avenue」を有するレコードのみが示されるようにフィルタリングされている。この例では、スプレッドシートは25を超えるレコードを含む。説明のため、「street_address」に「Avenue」を有する最初の25個のレコードが示されている。 At step 4180, the results of row filtering are displayed. As shown in the user interface 4000 shown in FIG. 40, the records have been filtered to show only records with "Avenue" in the address. In this example, the spreadsheet contains over 25 records. For illustration, the first 25 records with "Avenue" in "street_address" are shown.

行フィルタリングコマンドが実行されると、実行された行フィルタリングコマンド(たとえば、ストリートアドレス列行フィルタリング)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 When a row filtering command is executed, the executed row filtering command (eg, street address column row filtering) can be added to the transform script for the dataset. A transformation script indicates commands that are applied to columns of data. Transformation scripts can be used to apply the same commands to different data sets.

したがって、例示的な実施形態は、データセット中のデータの行をフィルタリングするための迅速かつ効率的なユーザインターフェイスを提供する。 Exemplary embodiments thus provide a quick and efficient user interface for filtering rows of data in a dataset.

VI.陰性例のコンテキスト
例示的な実施形態では、ネスト化手動における陰性例に対して、陽性例に対応するコンテキストについて検索を実行することができる。
VI. Negative Example Context In an exemplary embodiment, for a negative example in a nested manual, a search can be performed for the context corresponding to the positive example.

ユーザインターフェイスがネスト化手動モードにある場合、「Windows NT 6.1」の外側強調表示および「6.1」の内側強調表示を有する例が受信され得る。例えばユーザによって与えられる初期例に応答して、UIは「Windows NT 6.0」を強調表示するかもしれない。UIは、正規表現生成器を介して、「Windows NT 6.0」を強調表示し得、なぜならば、「Windows NT 6.0」は、例として最初に与えられた「Windows NT 6.1」とのマッチであると判断されるからである。次いで、ユーザは、「Windows NT 6.0」を選択して、「Windows NT 6.0」が「Windows NT 6.1」との所望のマッチではないことを示してもよい。すなわち、ユーザは、「Windows NT 6.1」を選択することにより、陰性例を与えることができる。ユーザが「Windows NT 6.0」をクリックして陰性例を作成する場合、UIは、その陰性例として「6.0」だけを送信するかもしれない。したがって、例示的な実施形態によれば、UIは、LCSを実行する前にマッチ「Windows NT」コンテキストを検索することができる。例示的な実施形態は、与えられる陰性例に基づいてコンテキストを検索する。 When the user interface is in nested manual mode, an example with an outer highlight of "Windows NT 6.1" and an inner highlight of "6.1" may be received. For example, the UI may highlight "Windows NT 6.0" in response to an initial example provided by the user. The UI, via the regular expression generator, could highlight "Windows NT 6.0" because "Windows NT 6.0" would match "Windows NT 6.1" given first as an example. for it will be judged. The user may then select "Windows NT 6.0" to indicate that "Windows NT 6.0" is not the desired match for "Windows NT 6.1". That is, the user can give negative examples by selecting "Windows NT 6.1". If the user clicks on "Windows NT 6.0" to create a negative example, the UI may only send "6.0" as the negative example. Thus, according to an exemplary embodiment, the UI can search for a match "Windows NT" context before executing the LCS. An exemplary embodiment searches for context based on the given negative examples.

図50は、いくつかの例示的な実施形態による、陰性例を与えるための方法5000のフローチャートを示す。 FIG. 50 shows a flowchart of a method 5000 for providing negative examples, according to some example embodiments.

ステップ5010において、初期選択を受け付けることができる。初期選択に基づいて正規表現が生成される。 At step 5010, an initial selection may be accepted. A regular expression is generated based on the initial selection.

例えば、ユーザは、「Windows NT 6.1」の外側強調表示および「Windows NT 6.1」の「6.1」の内側強調表示を選択することができる。外側強調表示および内側強調表示は、データを強調表示することにより作成することができる。外側強調表示の場合、ユーザは「Windows NT 6.1」を強調表示することができ、内側強調表示の場合、ユーザは既に強調表示された「Windows NT 6.1」の「6.1」を強調表示することができる。外側強調表示はアプリケーション名に対応し、内側強調表示はバージョン番号に対応する。外側強調表示は、内側強調表示とは異なる色で現れることができる。強調表示は、ユーザが対話型ユーザインターフェイス上にいる場合、デバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いることによって、実行することができる。 For example, the user can select "Windows NT 6.1" outer highlighting and "Windows NT 6.1" "6.1" inner highlighting. Outer highlights and inner highlights can be created by highlighting data. For outer highlighting, the user can highlight "Windows NT 6.1", and for inner highlighting, the user can highlight "6.1" in the already highlighted "Windows NT 6.1". . The outer highlighting corresponds to the application name and the inner highlighting to the version number. The outer highlighting can appear in a different color than the inner highlighting. Highlighting can be performed by, for example, using a mouse or gestures on the device's display when the user is on the interactive user interface.

ステップ5020において、ユーザが所望のデータフラグメントを強調表示(例えば、内側および外側強調表示)した後、ユーザインターフェイスデータモデル生成器は、同じレコードまたは残りのレコード内の対応するデータを自動的に強調表示することができる。例えば、ユーザインターフェイスデータモデル生成器は、レコード内の「6.1」のすべてのインスタンスを強調表示することができる。しかしながら、正規表現生成器は、データセット中のレコードから「Windows NT 6.0」のすべてのインスタンスを強調することもできる。したがって、結果において高い精度を保証するために、ユーザは陰性例を与えることができる。 At step 5020, after the user highlights the desired data fragment (e.g. inner and outer highlighting), the user interface data model generator automatically highlights the corresponding data in the same record or the rest of the records. can do. For example, the user interface data model generator can highlight all instances of "6.1" within a record. However, the regular expression generator can also highlight all instances of "Windows NT 6.0" from the records in the dataset. Therefore, the user can provide negative examples to ensure high precision in the results.

ステップ5030において、ユーザは陰性例を与えることができる。ユーザは、UIによって自動的に強調表示されたアプリケーションおよびバージョン番号のすべてを望むわけではないため、陰性例を与えてもよい。例えば、ユーザは、陰性例を与えるために「Windows NT 6.0」を選択してもよい。次いで、UIは「6.0」のバージョン番号を含むすべてのレコードを識別し得る。しかしながら、これは「6.0」バージョン番号を含む「Windows NT」以外のアプリケーションを識別する結果となり得る。 At step 5030, the user can provide negative examples. Negative examples may be provided because the user does not want all applications and version numbers automatically highlighted by the UI. For example, the user may select "Windows NT 6.0" to give negative examples. The UI can then identify all records that contain a version number of "6.0". However, this can result in identifying applications other than "Windows NT" with a "6.0" version number.

ステップ5040において、UIは、陰性例からコンテキストを判断する。「6.0」のバージョン番号を含むすべてのバージョン番号を強調表示する代わりに、UIは、ユーザによって与えられた例からコンテキストを判断する。すなわち、UIは、データレコードからバージョン番号「6.0」を識別するだけでなく、陰性例を含むレコードを識別するときに、レコードからアプリケーション名「Windows NT」を識別する。したがって、UIは、陰性例を含むレコードを識別するときに単に「6.0」を含むレコードを検索する代わりに、陰性例を含むレコードを識別するときに「Windows NT 6.0」を検索する。 At step 5040, the UI determines the context from the negative examples. Instead of highlighting all version numbers, including the "6.0" version number, the UI determines the context from the example given by the user. That is, the UI not only identifies the version number "6.0" from the data records, but also identifies the application name "Windows NT" from the records when identifying records containing negative examples. Therefore, instead of simply searching for records containing "6.0" when identifying records containing negative examples, the UI will search for "Windows NT 6.0" when identifying records containing negative examples.

陰性例からコンテキストを判断することは、図51に関して以下でより詳細に説明される。 Determining context from negative examples is described in more detail below with respect to FIG.

ステップ5050において、データセット上の強調表示は、識別されたコンテキストに従って更新される。UIは、「6.0」だけではなく「Windows NT 6.0」含む語を強調し、それによって陰性例をより正確にする。 At step 5050, the highlighting on the dataset is updated according to the identified context. The UI highlights words containing "Windows NT 6.0" instead of just "6.0", thereby making negative examples more accurate.

生成される正規表現は、陰性例から識別されるコンテキストに基づいて更新され得る。
したがって、例示的な実施形態は、陰性例を与える、より正確な方法を提供する。コンテキストは、1つまたは複数の正規表現コードの異なるセットによって共有される最長共通サブシーケンスを判断するようLCSアルゴリズムを実行する前に判断される。与えられる例からコンテキストを判断することによって、より正確な正規表現を生成することができる。
The generated regular expression can be updated based on the context identified from the negative examples.
Thus, exemplary embodiments provide a more accurate method of giving negative examples. Context is determined prior to running the LCS algorithm to determine the longest common subsequence shared by different sets of one or more regular expression codes. By judging the context from the examples given, more precise regular expressions can be generated.

図51は、いくつかの例示的な実施形態による、陰性例からコンテキストを判断するための方法5100のフローチャートを示す。図51は、図50のステップ5040をより詳細に説明している。 FIG. 51 shows a flowchart of a method 5100 for determining context from negative examples, according to some example embodiments. FIG. 51 describes step 5040 of FIG. 50 in more detail.

ステップ5110では、陰性例が与えられた後、複数の強調表示があるかどうか、およびそれらの複数の強調表示がネスト化されているかどうか(内側+外側強調表示)が判断される。図51に示されるように、陰性例のコンテキストは、陰性例が与えられる(例えば、図50のステップ5030)のでなければ、判断されない。 In step 5110, given a negative example, it is determined whether there are multiple highlights and whether those multiple highlights are nested (inner + outer highlighting). As shown in FIG. 51, the context of a negative example is not determined unless a negative example is provided (eg, step 5030 of FIG. 50).

ステップ5120において、コンテキストが、陰性例の左側のデータから取得される。具体的には、コンテキストは、陰性の強調表示が埋め込まれている場所の左側のデータから得られる。陰性の強調表示の埋め込まれた位置は、コンテキストを取得する前に判断され得る。このステップを実行するためのコードは、val eLookBehindStart = r.s.slice(0, r.highlightSpans.min).foldRight(es.slice(0, highlightSpanRange.start).reverse)((sElem,esLookBehind) => esLookBehind.dropWhile(_.cc == sElem.cc)).length.を含むことができる。 At step 5120, context is obtained from the data to the left of the negative example. Specifically, context is derived from the data to the left of where the negative highlighting is embedded. The embedded location of the negative highlighting can be determined prior to obtaining the context. The code to perform this step is val eLookBehindStart = r.s.slice(0, r.highlightSpans.min).foldRight(es.slice(0, highlightSpanRange.start).reverse)((sElem,esLookBehind) => esLookBehind. Can include dropWhile(_.cc == sElem.cc)).length.

ある例示的実施形態においては、最も遠い左のスパンが用いられる。eLookBehindStartは、左側歩行から(陰性の強調表示の左縁から)最も左のスパンのスパン番号を得る。 In one exemplary embodiment, the furthest left span is used. eLookBehindStart gets the span number of the leftmost span (from the left edge of negative highlighting) from the left walk.

ステップ5120は、反復プロセスであり得る。例えば、フィルタリングは、陰性の強調表示が埋め込まれる場所の左側の各スパンについて実行され得る。データセットのフラグメントの強調表示は、陰性例のスパンとマッチしないフラグメントの各スパンについて除去され得る。すべての反復において、考慮中のスパンのリストは短くされることになる。 Step 5120 may be an iterative process. For example, filtering may be performed for each span to the left of where negative highlighting is embedded. Fragment highlighting in the data set can be removed for each span of fragments that do not match the span of the negative example. At every iteration, the list of spans under consideration will be shortened.

ステップ5130において、陰性例の右側のデータからコンテキストが取得される。具体的には、陰性の強調表示が埋め込まれている場所の右側のデータからコンテキストを取得する。本ステップに対するコードは、val eLookAheadEnd = r.s.slice(r.highlightSpans.max+1, r.s.length).foldLeft(es.slice(highlightSpanRange.end, es.length))((esLookAhead,sElem) => esLookAhead.dropWhile(_.cc == sElem.cc)).lengthを含むことができる。 At step 5130, context is obtained from the data to the right of the negative example. Specifically, it takes context from the data to the right of where the negative highlighting is embedded. The code for this step is val eLookAheadEnd = r.s.slice(r.highlightSpans.max+1, r.s.length).foldLeft(es.slice(highlightSpanRange.end, es.length))((esLookAhead,sElem) => esLookAhead.dropWhile (_.cc == sElem.cc)).length can be included.

ある例示的実施形態においては、最も遠い右のスパンが用いられる。eLookAheadEndは、右側歩行から(陰性の強調表示の右縁から)最も右のスパンのスパン番号を得る。 In one exemplary embodiment, the furthest right span is used. eLookAheadEnd gets the span number of the rightmost span (from the right edge of negative highlighting) from the right walk.

ステップ5130は、反復プロセスであり得る。例えば、フィルタリングは、陰性の強調表示が埋め込まれる場所の右側のフラグメントの各スパンに対して実行され得る。データセットのフラグメントの強調表示は、陰性例のスパンとマッチしないフラグメントごとに除去され得る。すべての反復において、考慮中のスパンのリストは短くされることになる。 Step 5130 may be an iterative process. For example, filtering can be performed on each span of the fragment to the right of where the negative highlighting is embedded. Fragment highlighting of the dataset can be removed for each fragment that does not match the span of the negative example. At every iteration, the list of spans under consideration will be shortened.

ステップ5140では、フラグメントのフィルタリングが実行される。陰性例の左側および右側のコンテキスト(たとえば、ステップ5120および5130で識別されるコンテキスト)に対応しない強調表示されたフラグメントが除去される。 At step 5140, fragment filtering is performed. Highlighted fragments that do not correspond to the left and right contexts of negative examples (eg, the contexts identified in steps 5120 and 5130) are removed.

コンテキストは、陰性例の左側および右側で用いられるが、例えば、左側コンテキストデータのみまたは右側コンテキストデータのみが存在する場合、左側または右側コンテキストのみが、陰性例についてコンテキストを識別するために用いられてもよい。また、図51で説明した例では、左側コンテキストを右側コンテキストの前に識別しているが、右側コンテキストを左側コンテキストの前に識別してもよい。さらに、上記の例は、陰性例に関してコンテキストを判断することに関して説明されているが、陽性例に関してコンテキストを判断することもできる。 Context is used on the left and right sides of negative examples, but for example, if only left context data or only right context data are present, only left or right context may be used to identify context for negative examples. good. Also, although the left context is identified before the right context in the example described in FIG. 51, the right context may be identified before the left context. Further, although the above examples are described in terms of determining context with respect to negative examples, it is also possible to determine context with respect to positive examples.

ネスト化手動モードにおいて陰性例に対応するコンテキストを検索するための例示的なコードは、以下のコードの一部または全部を含むことができる: Exemplary code for retrieving context corresponding to negative examples in nested manual mode can include some or all of the following code:

Figure 2022538705000027
Figure 2022538705000027

Figure 2022538705000028
Figure 2022538705000028

VII.スパン上で最長共通サブシーケンスアルゴリズムを用いた正規表現生成
本明細書で説明されるさらなる態様は、1つまたは複数のデータ入力キャラクタシーケンスからのLCSアルゴリズムに基づく正規表現の生成に関するが、正規表現生成器110は、例のいくつかのみに存在するキャラクタを取り扱うこともできる。いくつかの入力例においてのみ存在するキャラクタを取り扱うために、正規表現コードの最小発生数および最大発生数の両方が追跡されるスパンが定義され得る。たとえば、「9pm」および「9 pm」のキャラクタシーケンス入力については、数字と「pm」テキストとの間に任意選択の空白が存在する。そのような場合、所与の入力例のすべてに一定のスパン(たとえば「9」と「pm」との間の単一の空白)が存在しないかもしれない場合、最小発生数はゼロに設定されてもよい。次いで、これらの最小数および最大数は、正規表現マルチプリシティ構文にマッピングされ得る。最長共通サブシーケンス(LCS)アルゴリズムを、すべての入力例に現れない「任意選択の」スパン(たとえばゼロの最小長さ)を含む、入力例から導出されたキャラクタのスパン上で実行してもよい。以下で説明するように、連続するスパンは、LCSアルゴリズムの実行中にマージされてもよい。そのような場合において、一緒に担持される追加の任意選択のスパンが連続して出現することに終わるとき、LCSアルゴリズムは、それらの任意選択のスパン上でも同様に再帰的に実行されてもよい。すなわち、LCSアルゴリズムの実行は、その性質上、再帰的であるが、これらの場合、LCSアルゴリズム全体を、再帰的に実行してもよい(たとえば、再帰的LCSアルゴリズムを再帰的に実行する)。他の技術的利点の中でもとりわけ、これは、より短く、よりクリーンで、より可読性のある正規表現生成を可能にし得る。たとえば、(am| am)(すなわち、amの前に任意選択の空白を有する)は、LCSアルゴリズムを再帰的に実行せずに生成されるかもしれず、一方、LCSアルゴリズムを再帰的に実行すると、正規表現は、より短く、よりクリーンな( ?am)として生成される結果となり得る。
VII. Regular Expression Generation Using Longest Common Subsequence Algorithm Over Span A further aspect described herein relates to the generation of a regular expression based on the LCS algorithm from one or more data input character sequences, wherein: Instrument 110 can also handle characters that are present in only some of the examples. To handle characters that are only present in some input examples, spans can be defined in which both the minimum and maximum number of occurrences of the regular expression code are tracked. For example, for the "9pm" and "9 pm" character sequence inputs, there is an optional space between the digits and the "pm" text. In such cases, the minimum number of occurrences is set to zero if there may not be a constant span (e.g. a single space between '9' and 'pm') in all of the given input examples. may These minimum and maximum numbers can then be mapped to a regular expression multiplicity syntax. A Longest Common Subsequence (LCS) algorithm may be run on spans of characters derived from input examples, including "optional" spans (e.g. minimum length of zero) that do not appear in all input examples. . Consecutive spans may be merged during execution of the LCS algorithm, as described below. In such cases, when additional optional spans carried together result in consecutive occurrences, the LCS algorithm may be recursively performed on those optional spans as well. . That is, although the execution of the LCS algorithm is recursive in nature, in these cases the entire LCS algorithm may be executed recursively (eg, the recursive LCS algorithm is executed recursively). Among other technical advantages, this may enable shorter, cleaner, and more readable regular expression generation. For example, (am | am) (i.e., with an optional whitespace before am) might be produced without recursively running the LCS algorithm, whereas recursively running the LCS algorithm yields Regular expressions can result in shorter, cleaner ( ?am) being produced.

図18は、本明細書で説明する1つまたは複数の実施形態による、最長共通サブシーケンス(LCS)アルゴリズムを使用して、任意選択のスパンを含む正規表現を生成するための処理1800を示すフローチャートである。ステップ1801において、正規表現生成器110は、陽性の正規表現例に対応する1つまたは複数のキャラクタシーケンスを入力データとして受け取ってもよい。ステップ1802において、正規表現生成器110は、キャラクタシーケンスを正規表現コードに変換してもよい。したがって、ステップ1801およびステップ1802は、上述の、先の対応する例と同様でも同一でもよい。次いで、ステップ1802において、正規表現コードは、スパンデータ構造(またはスパン)にさらに変換され得る。上述したように、各スパンは、キャラクタクラスコード(たとえばレゲックスコード)および繰り返しカウント範囲(たとえば最小カウントおよび/または最大カウント)を記憶するデータ構造を含むことができる。ステップ1804において、正規表現生成器110は、LCSアルゴリズムを実行して、アルゴリズムへの入力としてスパンのセットを提供することができる。この例におけるLCSアルゴリズムの出力は、LCSアルゴリズムの出力内の任意選択のスパンに対応する、ゼロに等しい最小繰り返しカウント範囲を有する少なくとも1つのスパンを含むスパンの出力セットを含むことができる。最後に、ステップ1805において、正規表現生成器110は、任意選択のスパンを含むLCSアルゴリズムの出力の出力に基づいて正規表現を生成することができる。 FIG. 18 is a flowchart illustrating a process 1800 for generating regular expressions with optional spans using the longest common subsequence (LCS) algorithm, according to one or more embodiments described herein. is. At step 1801, regular expression generator 110 may receive as input data one or more character sequences corresponding to positive regular expression examples. At step 1802, regular expression generator 110 may convert the character sequence into a regular expression code. Accordingly, steps 1801 and 1802 may be similar or identical to the previous corresponding examples described above. Then, at step 1802, the regular expression code may be further transformed into a span data structure (or span). As noted above, each span may include a data structure that stores a character class code (eg, Regex code) and repeat count range (eg, minimum count and/or maximum count). At step 1804, regular expression generator 110 may run the LCS algorithm to provide the set of spans as input to the algorithm. The output of the LCS algorithm in this example may include an output set of spans including at least one span with a minimum repeat count range equal to zero corresponding to an optional span in the output of the LCS algorithm. Finally, at step 1805, regular expression generator 110 may generate a regular expression based on the output of the LCS algorithm's output, including the optional span.

いくつかの実施形態では、判読性を改善し、かつ適切なレベルの制限を達成するために、正規表現生成器110は、単一スパン交代を用いてもよい。説明のため、LCSアルゴリズムがステップ1804で実行された後、その出力(すなわち、正規表現への最終的な変換前の中間出力)は、最小および最大繰り返しカウントを各々が有するスパンの連なりとすることができる。スパンのリストから正規表現への単純な直接変換は、(例えば、疑問符「?」修飾子コードを用いて)オプションとして印される複数の正規表現コードをもたらし得る。対照的に、場合によっては、交代を含む正規表現を生成することが望ましい場合があり、これは、括弧で閉じられた垂直方向のバーで区切られた代替物として表現され得る(https://www.regular-expressions.info/altemation.htmlを参照のこと)。例えば、時間に関するスパンの正規表現への直接的な変換は、 In some embodiments, the regular expression generator 110 may use single span alternations to improve readability and achieve an appropriate level of restriction. For illustration purposes, after the LCS algorithm has been executed in step 1804, its output (i.e., the intermediate output before final conversion to a regular expression) is a sequence of spans each having a minimum and maximum iteration count. can be done. A simple direct conversion from a list of spans to a regular expression can result in multiple regular expression codes marked as optional (eg, using question mark '?' modifier codes). In contrast, in some cases it may be desirable to generate a regular expression containing alternations, which can be expressed as vertical bar-separated alternatives enclosed in brackets (https:// (see www.regular-expressions.info/altemation.html). For example, a direct conversion of a span over time to a regular expression is

Figure 2022538705000029
Figure 2022538705000029

であり得る。しかしながら、この例では、正規表現生成器110は、その正規表現を、より判読性のある can be However, in this example, the regular expression generator 110 converts the regular expression into a more readable

Figure 2022538705000030
Figure 2022538705000030

に変換するよう構成され得る。その変換を実行するために、正規表現生成器110は、スパンの下にある元のストリングフラグメントを追跡し続けてもよく、すべての元のストリングフラグメントが少なくとも2つの所与の陽性例に現れる場合、それらの元のストリングフラグメントのリストが、(例えば、複数の任意選択の正規表現コードではなく、)垂直バーで区切られた代替物として出力されるべきである、と判断してもよい。 can be configured to convert to To perform that transformation, the regular expression generator 110 may keep track of the original string fragments that underlie the span, and if all original string fragments appear in at least two given positive examples, , that a list of their original string fragments should be output as alternatives separated by vertical bars (e.g., rather than multiple optional regular expression codes).

図19は、最長共通サブシーケンス(LCS)アルゴリズムを用いた正規表現の生成を示す例示的な図であり、生成された正規表現は、任意選択のスパンを含む。この例では、2つの入力データキャラクタシーケンスは、「8am」および「9 pm」である。入力データキャラクタシーケンスは、上述したように、まず正規表現コードに変換され(ステップ1802)、次にスパンに変換される(ステップ1803)。スパンは、LCSアルゴリズムへの入力として提供され得(ステップ1804)、LCS出力は、任意選択のスパンZ <0, 1>を含み、任意選択の単一の空白が数字および2文字のテキストシーケンスであり得ることを示す。すなわち、この例における上付き表記は、先行するコード(たとえばZ=空白)に適用される2つの数字、最小繰り返しカウント範囲(たとえば0)および最大繰り返しカウント範囲(たとえば1)を含み得る。最後に、正規表現は、LCSアルゴリズムの出力スパンに基づいて生成されてもよく、任意選択のスパンは、対応する正規表現コード「pZ*」に変換されてもよい。 FIG. 19 is an exemplary diagram showing the generation of a regular expression using the longest common subsequence (LCS) algorithm, the generated regular expression including an optional span. In this example, the two input data character sequences are "8am" and "9 pm". The input data character sequence is first converted to regular expression code (step 1802) and then to spans (step 1803), as described above. A span may be provided as an input to the LCS algorithm (step 1804), and the LCS output includes an optional span Z <0, 1> , an optional single space between numbers and two-letter text sequences. Show what is possible. That is, the superscript notation in this example may include two numbers, a minimum repeat count range (eg, 0) and a maximum repeat count range (eg, 1), applied to the preceding code (eg, Z=blank). Finally, a regular expression may be generated based on the output span of the LCS algorithm, and an optional span may be converted to the corresponding regular expression code "pZ * ".

いくつかの実施形態では、LCSアルゴリズムの実行中の正規表現生成器110による任意選択の空白の描出および使用は、性能および可読性に関してさらなる技術的利点を提供し得る。たとえば、正規表現を生成するとき、場合によっては、すべての所与の例の間で共通するキャラクタと、それらの例のうちのいくつかにおいてのみ存在するキャラクタとの両方を扱うことができることが望ましい。 In some embodiments, the optional rendering and use of whitespace by the regular expression generator 110 during execution of the LCS algorithm may provide additional technical advantages in terms of performance and readability. For example, when generating regular expressions, it is sometimes desirable to be able to handle both characters that are common among all given examples and characters that are present only in some of those examples. .

ある実施形態では、各スパンデータ構造について、カテゴリコードの最小発生数およびカテゴリコードの最大発生数の両方が追跡され得る。所与の例の1つまたは複数においてスパンが全く存在しない場合、最小はゼロに設定される。別の例として、綴りで示された月を扱うための正規表現を生成するために、最小数および最大数を、次いで、中括弧を伴う正規表現マルチプリシティ構文(たとえば[A-Za-z]{3,9})にマッピングしてもよい。 In some embodiments, both the minimum number of occurrences of category codes and the maximum number of occurrences of category codes may be tracked for each span data structure. If there are no spans at all in one or more of the given examples, the minimum is set to zero. As another example, to generate a regular expression for dealing with spelled months, use the minimum and maximum numbers, then the regular expression multiplicity syntax with curly braces (e.g. [A-Za-z ]{3,9}).

いくつかの実施形態では、正規表現生成器110は、各スパンについて最小発生数および最大発生数を追跡してもよいが、追加の実施詳細を処理してもよい。たとえば、任意選択のスパンを取り扱うこととキャラクタのスパン上でLCSを実行することとの組み合わせの結果として、正規表現生成器110は、LCSアルゴリズムの実行を通して、連続的なスパンを検出し、マージするように構成され得る。加えて、一緒に担持されている任意の追加の任意選択のスパンが、時々、連続的に現れ、LCSアルゴリズムがそれら上でも同様に再帰的に実行されることが望ましい場合がある。たとえば、場合によっては、正規表現生成器110は、任意選択のシーケンス要素と必要なシーケンス要素(たとえばスパン)との間のより少ない遷移を好む(または重み付けする)よう、LCSアルゴリズムを修正および/または拡張する。たとえば、任意選択のスパンを一緒にグループ化することは、正規表現内で使用されなければならないグループ化括弧の数を最小にすることができ、したがって、生成された正規表現の人間の可読性を改善することができる。場合によっては、結果として生じる長さが、任意選択のスパンを考慮した後でさえ等しい場合、正規表現生成器110は、任意選択のスパンと必要なスパンとの間の遷移がより少ない代替物に対する選好を示してもよい。たとえば、場合によっては、ある標準LCSアルゴリズムは、その判断点でより長いシーケンスの選択を好むように実現され得る。しかしながら、選択肢が等しい長さのものである判断点では、構成選好が正規表現生成器110にプログラムされてもよい。1つのそのような構成選好は、たとえば、(任意選択のスパンが考慮されると)より短いシーケンスを好むことであり得る。したがって、この構成内のカスタマイズされたLCSは、(必要なスパンの)より長いシーケンスおよび(必要なスパンおよび任意選択のスパンの合計の)より短いシーケンスを同時に最適化することができる。 In some embodiments, regular expression generator 110 may track the minimum and maximum number of occurrences for each span, but may handle additional implementation details. For example, as a result of the combination of handling optional spans and performing LCS on spans of characters, regular expression generator 110 detects and merges consecutive spans through execution of the LCS algorithm. can be configured as In addition, any additional optional spans that are carried together may occasionally appear consecutively, and it may be desirable to recursively run the LCS algorithm on them as well. For example, in some cases, regular expression generator 110 modifies the LCS algorithm to favor (or weight) fewer transitions between optional and required sequence elements (e.g., spans) and/or Expand. For example, grouping optional spans together can minimize the number of grouping parentheses that must be used within the regular expression, thus improving human readability of the generated regular expression. can do. In some cases, if the resulting lengths are equal even after considering the optional span, the regular expression generator 110 chooses an alternative with fewer transitions between the optional span and the required span. You may indicate your preference. For example, in some cases a standard LCS algorithm may be implemented to prefer the selection of longer sequences at its decision points. However, at decision points where the alternatives are of equal length, configuration preferences may be programmed into regular expression generator 110 . One such configuration preference may be, for example, favoring shorter sequences (when optional spans are considered). Thus, the customized LCS within this configuration can simultaneously optimize longer sequences (of desired span) and shorter sequences (of desired span plus optional span).

いくつかの実施形態では、正規表現生成器110によるLCSアルゴリズムの実現例は、より短い出力を選択するよう構成され得る。上述のように、LCSアルゴリズムは、一般に、最長共通サブシーケンスを見つけるために用いられ得る。スパンを用いる正規表現の生成のために、LCSアルゴリズムを用いて、必要なシーケンス要素(本発明者らの場合、必要なスパン)の最長シーケンスを識別することができる。しかしながら、任意選択のスパンを含む実施形態では、LCSアルゴリズムは、共通シーケンス要素(例えばスパン)の数を最大化するという元の目標を、任意選択のスパンの数も同時に最小化しながら、保持するよう構成されてもよい。すなわち、元のLCSアルゴリズムにおいて、(共通シーケンス要素の数を最大化する観点から、)第1の例のストリングからシーケンス要素(例えばスパン)を消費するか、または第2の例のストリングからシーケンス要素を消費するかに関して、任意の選択を行うことができる。そのような場合、正規表現生成器110は、任意選択のスパンも考慮されると、より短い全体的な正規表現長をもたらすものを選択することができるLCSアルゴリズムの修正バージョンを実現してもよい。最終結果における正規表現が短いほど、判読性が向上する。 In some embodiments, the implementation of the LCS algorithm by regular expression generator 110 may be configured to select shorter outputs. As mentioned above, the LCS algorithm can generally be used to find the longest common subsequence. For generation of regular expressions with spans, the LCS algorithm can be used to identify the longest sequence of required sequence elements (in our case the required span). However, in embodiments involving optional spans, the LCS algorithm is designed to retain the original goal of maximizing the number of common sequence elements (e.g., spans) while simultaneously minimizing the number of optional spans. may be configured. That is, in the original LCS algorithm, either consume sequence elements (e.g. spans) from the first example string or Any choice can be made as to whether to consume In such cases, the regex generator 110 may implement a modified version of the LCS algorithm that can choose the one that results in a shorter overall regex length when the optional span is also considered. . The shorter the regular expression in the final result, the better the readability.

さらに、いくつかの実施形態では、正規表現生成器110によるLCSアルゴリズムの実現は、より多くの数の必要なスパンを好むよう構成され得る。すなわち、選択権を与えられると、規則表現生成部110は、人間の判読性を向上させるために、より少ない任意選択のスパンを伴うLCS出力を選択してもよい。 Additionally, in some embodiments, the implementation of the LCS algorithm by regular expression generator 110 may be configured to prefer a larger number of required spans. That is, given the choice, rule expression generator 110 may select LCS output with fewer optional spans to improve human readability.

いくつかの実施形態では、生成された正規表現は、任意選択のスパンで正規表現を開始するのではなく、必要なスパン(これは、人間の読者に対する精神的拠り所としても働き得る)で開始する場合、より可読性があり得る。したがって、場合によっては、結果として得られる選択肢が等しい数の遷移を有する場合、より早期の非任意選択のスパンを有する選択肢が選択され得る。加えて、正規表現生成器110によって実行されるLCSアルゴリズムは、いくつかの実施形態では、正規表現内においてすべての空白(空白に対応する任意選択のスパンを含む)を右にプッシュするように構成されてもよい。すべての空白を右にプッシュすることによって、空白のスパンが一緒にマージされ得る機会が増大する可能性があり、これは、結果として生じる正規表現を単純化し、かつ可読性を改善し得る。このように、LCSアルゴリズムの実行中に、サブストリングの2つのセットが同じLCSを有すると判断された場合、サブストリングの2つのセットのうちの1つのセットを恣意的に選択する代わりに、可読性の改善を容易にするセットを選択してもよい。さらに、いくつかの実施形態では、LCSアルゴリズムは、可読性を改善するために、より多くの数の必要なスパンおよび/またはより少ない数の任意選択のスパンを好むように構成されてもよい。 In some embodiments, the generated regular expression does not start the regular expression at an optional span, but at a required span (which can also serve as a mental anchor for human readers). can be more readable. Thus, in some cases, if the resulting alternatives have an equal number of transitions, the alternative with the earlier non-optional span may be selected. Additionally, the LCS algorithm performed by the regular expression generator 110 is configured in some embodiments to push all whitespace (including optional spans corresponding to whitespace) to the right within the regular expression. may be Pushing all whitespace to the right can increase the chances that spans of whitespace can be merged together, which can simplify the resulting regular expression and improve readability. Thus, if during the execution of the LCS algorithm it is determined that two sets of substrings have the same LCS, instead of arbitrarily choosing one of the two sets of substrings, readability A set may be selected that facilitates the improvement of Additionally, in some embodiments, the LCS algorithm may be configured to prefer a higher number of required spans and/or a lower number of optional spans to improve readability.

上述したように、場合によっては、陰性例は、任意選択のスパンに基づいてもよい。たとえば、ユーザは、「ab」および「a2b」の陽性例ならびに「a3b」の陰性例を提供してもよい。この場合、ある例示的な実現例は失敗し得、なぜならば、それは、必要とされるスパンのみに基づいて区別しようとし得、「2」の桁は任意選択のスパンにあるからである。そのような場合、ユーザは、失敗に対して警告されることができ、生成された正規表現を手動で修復するために、および/または陰性例の一部を除去するために、ユーザインターフェイスを介して選択肢を提供されることができる。 As noted above, in some cases negative examples may be based on an optional span. For example, a user may provide 'ab' and 'a2b' positive examples and 'a3b' negative examples. In this case, an exemplary implementation may fail because it may attempt to discriminate based only on the required span and the digit "2" is in the optional span. In such cases, the user can be warned of the failure, and via the user interface to manually repair the generated regular expression and/or remove some of the negative examples. can be offered a choice.

いくつかの実施形態では、RESTサービスから戻って来るJSONの一部として返されるisSuccessが存在し得る。いくつかの実施形態では、生成されたレゲックスは、isSuccess=偽のとき、異なる色(たとえば赤色)となってもよい。 In some embodiments, there may be isSuccess returned as part of the JSON coming back from the REST service. In some embodiments, the generated regex may be a different color (eg, red) when isSuccess=false.

上述したように、正規表現生成器110は、場合によっては、単一スパン交代を用いることができる。さらに、いくつかの実施形態では、正規表現生成器110は、マルチスパン交代を実行するよう構成され得る。すなわち、時として、行内のいくつかのスパンは、 As mentioned above, the regular expression generator 110 can use single span alternations in some cases. Further, in some embodiments, regular expression generator 110 may be configured to perform multi-span alternation. That is, sometimes some spans in a row are

Figure 2022538705000031
Figure 2022538705000031

として表される日付のような交代を形成し得る。これらを検出するために、正規表現生成器110は、まず、LCSアルゴリズムの出力からのどのスパンが、所与の入力された陽性例のすべてにおいて実際に用いられるかを発見してもよい。これらの共通のスパンは、最初のスパンの前のファントムスパンおよび最後のスパンの後のファントムスパンとともに、アンカーポイントを構成し得る。連続するアンカーポイントのすべての対(少なくとも1つの非アンカースパンも間に有する)の間には、渡らなければならない「ブリッジ」がある。次いで、ブリッジごとに、正規表現生成器110は、(a)入力された陽性例ごとにブリッジスパンによってカバーされるストリングフラグメントを判断し、(b)本明細書で説明される技法を用いて各ストリングフラグメントを正規表現に変換し、次いで、(c)上記から重複を除去し、それらを正規表現交代構文に入れてもよい。 can form an alternation such as the date represented as . To detect these, the regular expression generator 110 may first discover which spans from the output of the LCS algorithm are actually used in all given input positive examples. These common spans, together with the phantom span before the first span and the phantom span after the last span, may constitute the anchor point. Between every pair of consecutive anchor points (which also have at least one non-anchor span in between) there is a "bridge" that must be crossed. Then, for each bridge, the regular expression generator 110 (a) determines the string fragments covered by the bridge span for each input positive example; The string fragments may be converted to regular expressions, then (c) remove duplicates from the above and put them into regular expression alternation syntax.

任意の順序で出現する交代内の代替物の代わりに、それらをアルファベット順にソートすることもできる。より決定論的な出力を有することによって、生成されたレゲックスは、ユーザがタイピングする各キャラクタとともにレゲックスがリアルタイムで生成される場合のタイピングの最中など、入力される例におけるわずかな変化に対しては、あまり変化しないかもしれない。さらに、いくつかの進歩したレゲックスインタプリタは、交代に遭遇すると、greedy定量化子が存在するかどうかに応じて、greedy対非greedy戦略を明示的に用いることができる。しかしながら、標準JavaおよびJavascriptAPIに見られるものなど、他のレゲックスインタプリタは、交代内の代替物を、単に、それらが現れる順序で試行してもよい。この共通して見出された弱点を補償するために、レゲックス生成は、最初に、交代内における、より長い代替物を出力してもよい。また、いかなる結びつきも断つために、アルファベット順を二次ソート基準として用いてもよい。 Instead of the alternatives in alternation appearing in arbitrary order, they can also be sorted alphabetically. By having a more deterministic output, the generated regex is more sensitive to small changes in the input example, such as during typing when the regex is generated in real-time with each character the user types. may not change much. In addition, some advanced Regex interpreters can explicitly use greedy versus non-greedy strategies when encountering alternations, depending on whether a greedy quantifier is present. However, other Regex interpreters, such as those found in standard Java and Javascript APIs, may simply try alternatives within an alternation in the order in which they appear. To compensate for this commonly found weakness, Regex generation may output longer alternatives within the alternation first. Alphabetical order may also be used as a secondary sorting criterion to break any ties.

いくつかの実施形態では、正規表現生成器は、少数の陽性例において現れるスパンを非greedyワイルドカード.*?まで隠す(collapse)ように構成することができる。すなわち、入力例が少しばかり饒舌になる場合がある。正規表現生成器は、各すべての単語およびそれらの特定の単語長にマッチしようとするよりも、スパンの数および元のフラグメントコンテンツにおける有意な分散を検出する場合に、ワイルドカード.*?を用いてもよい。いくつかの実施形態では、スパンが、ワイルドカード.*?にそのように隠すことなどに加わるために考慮されるためには、スパンは、以下の3つの条件のうちの1つを満たさなければならない。(1)スパンは、(厳密に)入力された例の総数の3分の1未満に関与してもよく、(2)スパンはSPACE(空白)スパンであり、(3)スパンに対する元のテキストフラグメントのすべてが希にしか発生せず、解に「一意の句読点」が存在する。「希に」とは、(厳密に)例の数の3分の2未満を意味し得る。「一意の句読点」とは、解のどこかにSYMBOL(記号)もしくはPUNCTUATION(句読点)スパンが存在すること、または解は、テキストの始まりに^で位置指定されるか、もしくはテキストの終わりに$で位置指定されることを意味する。 In some embodiments, the regular expression generator can be configured to collapse spans that appear in a small number of positive examples to non-greedy wildcards .*?. That is, the example input may be a little more verbose. The regex generator uses the wildcard .*? when detecting significant variance in the number of spans and original fragment content, rather than trying to match every word and their specific word length. may In some embodiments, a span must meet one of the following three conditions in order for it to be considered for participation in wildcard .*? such hiding, etc. not. (1) the span may (exactly) contribute to less than one-third of the total number of examples entered, (2) the span is a SPACE span, and (3) the original text for the span All of the fragments occur infrequently and have "unique punctuation" in the solution. "Rarely" can mean (strictly) less than two-thirds of the number of instances. "Unique punctuation" means the presence of a SYMBOL or PUNCTUATION span anywhere in the solution, or the solution is located with a ^ at the beginning of the text or a $ at the end of the text. means to be positioned by

場合によっては、eolワイルドカードが、強調表示の内側の隠されたワイルドカードに接するのを防いでもよい。すなわち、^または$が用いられる場合、ワイルドカードは反対側の終わりに現れることを想起されたい。例えば、^([A-Z]+).*?は、最初の単語とマッチする。ワイルドカードの無差別に隠すことは、レゲックスインタプリタにマッチさせる基準点となる具体的なものを何も与えないであろう、^(.*?).*?のような何かに終わる場合がある。これを解決するために、^が用いられ、キャプチャグループ内の最後のスパンが、ワイルドカード.*?にまで隠すことの一部である場合には、ワイルドカードに接する陰性キャラクタクラスに用いられるように、行の終わりワイルドカードが発せられる前の出力に、キャプチャグループの後の1つの追加のスパンが用いられる。同様に、$が用いられ、キャプチャグループ内の最初のスパンが、ワイルドカードにまで隠すことの一部である場合には、キャプチャグループの前の1つの追加のスパンが明示的に出力に用いられる。 In some cases, eol wildcards may be prevented from touching hidden wildcards inside highlighting. Recall that if ^ or $ are used, the wildcard appears at the opposite end. For example, ^([A-Z]+).*? matches the first word. Indiscriminate hiding of wildcards would not give the Regex interpreter anything concrete to match against, if you end up with something like ^(.*?).*? There is To solve this, ^ is used so that if the last span in the capturing group is part of hiding up to the wildcard .*?, it will be used for the negative character class bordering the wildcard. , one additional span after the capturing group is used in the output before the end-of-line wildcard is emitted. Similarly, if $ is used and the first span in the capturing group is part of hiding up to the wildcard, then one additional span before the capturing group is explicitly used in the output. .

いくつかの実施形態では、記号および句読点は、例えば、強調表示エンドポイントが2つの句読点符号の間に来ることを可能にするようスパン可能ではもはやない場合がある。そのような例では、各句読点符号および各記号は、それ自体のPUNCTUATIONまたはSYMBOLスパンを取り上げ得る。他の場合では、「A.,S」は、3つのスパン、(元フラグメントAを伴う)LETTER、元フラグメント(.,)を伴うPUNCTUATION、および(元フラグメントSを伴う)LETTERをもたらすかもしれない。しかしながら、これらの実施形態では、4つのスパンが存在してもよい。この例では、コンマがコンマ分離リストにおけるデリミタとして機能する場合、特に、例ごとに複数のユーザ強調表示が存在する場合、役立ち得る。この例では、ドット(期間)は、余剰であり得、コンマと同じスパンにあるべきではない。 In some embodiments, symbols and punctuation marks may no longer be spannable, eg, to allow a highlighting endpoint to come between two punctuation marks. In such examples, each punctuation mark and each symbol may take up its own PUNCTUATION or SYMBOL span. In other cases, "A.,S" may result in three spans, LETTER (with original fragment A), PUNCTUATION with original fragment (.,), and LETTER (with original fragment S). . However, in these embodiments there may be four spans. In this example, it can be helpful if the comma acts as a delimiter in the comma-separated list, especially if there are multiple user highlights per example. In this example, the dots (periods) may be redundant and should not be in the same span as the commas.

さらに、タイプALPHANUMERICのスパンの場合、正規表現生成器は、いくつの文字スパンおよび数字スパンが置き換えられたかを追跡することができる。全体的な解における内側強調表示の始まりおよび終わりを判断するなど、アルゴリズムの多くの局面は、スパンインデックスによって位置の追跡を維持するので、複数のLETTERスパンおよびNUMBERスパンを単一のALPHANUMERICスパンと置換すると、これらのインデックスおよび位置は捨て去られる。したがって、置換前インデックスから置換後インデックスへのマッピングを維持することが必要となり得る。さらに、これらは、例ごとに追跡される必要があり、なぜならば、概して、各例が(例の100%に表されないスパンについて任意選択のスパンを含む)全体解からのすべてのインデックスを含むわけではないからである。クラスメンバnumPreSubstitutedSpansが、Spanクラスに追加され、タイプおよびデフォルト値は以下のとおりである:
numPreSubstitutedSpans:Map[ID,Int]=orig.flatMap(_.fromExamples).distinct.map((_,1)).toMap
いくつかの実施形態では、一般に利用可能なレゲックスAPIを用いて、キャプチャグループの終了オフセットを見つけることができる。たとえば、いくつかのユーザインターフェイスにおいて実現され得る置換コマンドに関連して説明されるように、ネスト化自動外側モードで置換コマンドを用いる場合、正規のキャプチャグループの後に追加のキャプチャグループが(全部で3つに対して、前のものと同様に)生成され得る。ユーザインターフェイスは、この置換を実行することができ、上記と同様に、ユーザインターフェイスにおいて完全なパーサを実現する必要を避けるために、キャプチャグループの右括弧を見つけるための技法を採用することができる。これは、キャプチャグループの左括弧を見つけることよりも複雑であり得、なぜならば、キャプチャグループの右括弧(<stufff>)を非キャプチャグループの右括弧(?:<stuff>)から区別する容易な方法がないためである。左括弧を区別することは、場合によっては、ルックアヘアッドを用いて?:を探すことにより、可能であり得る。いくつかの実施形態では、検索において、正規表現とマッチすることが知られている何かの例を必要とする技法が採用されてもよい。一緒に連結されたキャプチャされたグループを元の例のテキストと比較することによって、正規表現がキャプチャグループで隙間なく完全にカバーされていることが確認されてもよい。この技法のためのコードを以下に示す:
Additionally, for spans of type ALPHANUMERIC, the regular expression generator can keep track of how many character and number spans have been replaced. Replace multiple LETTER and NUMBER spans with a single ALPHANUMERIC span, since many aspects of the algorithm, such as determining the start and end of inner highlighting in the overall solution, keep track of position by span indices. These indices and positions are then discarded. Therefore, it may be necessary to maintain a mapping from pre-substitution indices to post-substitution indices. Moreover, these need to be tracked on an example-by-example basis, because generally each example contains all indices from the global solution (including optional spans for spans not represented in 100% of the examples). because it is not. A class member numPreSubstitutedSpans has been added to the Span class with the following types and default values:
numPreSubstitutedSpans:Map[ID,Int]=orig.flatMap(_.fromExamples).distinct.map((_,1)).toMap
In some embodiments, a commonly available Regex API can be used to find the end offset of a capture group. For example, when using substitution commands in nested auto-outer mode, as described in connection with substitution commands that may be implemented in some user interfaces, additional capturing groups follow the regular capturing groups (three in all). for one, like the previous one). The user interface can perform this substitution, and similarly employ techniques for finding the closing parenthesis of capturing groups to avoid having to implement a full parser in the user interface. This can be more complicated than finding the left parenthesis of a capturing group, because there is no easy Because there is no way. Distinguishing the left parenthesis may be possible in some cases by looking for ?: using a lookahead ad. In some embodiments, the search may employ techniques that require examples of something known to match a regular expression. By comparing the captured groups concatenated together with the original example text, it may be verified that the regular expression is completely covered by the capturing groups without gaps. The code for this technique is shown below:

Figure 2022538705000032
Figure 2022538705000032

VIII.コンビナトリック最長共通サブシーケンスアルゴリズムを用いた正規表現生成
本明細書で説明されるさらなる態様は、正規表現生成器110によって実行されるLCSアルゴリズムが複数回実行されて、「正しい」正規表現(たとえば、すべての所与の陽性例と適切にマッチし、すべての所与の陰性例を適切に除外する正規表現)を生成し得る、および/または最も望ましいもしくは最適な正規表現が選択され得る複数の正しい正規表現を生成し得るコンビナトリック探索に関する。たとえば、コンビナトリック探索中、全LCSアルゴリズムおよび正規表現生成処理は、テキスト処理方向の異なる組み合わせ/置換、異なる位置指定、およびLCSアルゴリズムの他の異なる特性を含めて、複数回実行されてもよい。
VIII. Regular Expression Generation Using the Combinatoric Longest Common Subsequence Algorithm A further aspect described herein is that the LCS algorithm performed by the regular expression generator 110 is run multiple times to produce a "correct" regular expression (e.g., A regular expression that properly matches every given positive example and properly excludes every given negative example), and/or from which the most desirable or optimal regular expression can be selected. It relates to combinatorial search that can generate regular expressions. For example, during combinatoric search, the entire LCS algorithm and regular expression generation process may be run multiple times, including different combinations/permutations of text processing directions, different positioning, and other different properties of the LCS algorithm.

図20は、最長共通サブシーケンス(LCS)アルゴリズムのコンビナトリックな実行に基づいて正規表現を生成するための処理2000を示すフローチャートである。ステップ2001において、正規表現生成器110は、陽性例に対応する入力データキャラクタシーケンスを受け取り得る。ステップ2002において、正規表現生成器110は、LCSアルゴリズムのための実行技法のさまざまな異なる組み合わせに対して反復することができる。この例に示されるように、ステップ2002の各反復の間に、正規表現生成器110は、以下のLCSアルゴリズム実行パラメータ(または特性)、すなわち位置指定子(すなわち、位置指定なし、行の始まりで位置指定、行の終わりで位置指定)、処理方向(すなわち、右から左の順序、左から右の順序)、空白プッシュ(すなわち、空白プッシュを行うかまたは行わない)、およびスパンを隠す(collapse)(すなわち、スパンを隠すことを行うかまたは行わない)、の異なる組み合わせを選択し得る。ステップ2003において、LCSアルゴリズムは、入力データキャラクタシーケンスにおいて(または、入力キャラクタシーケンスが最初に変換された場合には正規表現コードにおいて)実行され、LCSアルゴリズムは、ステップ2002において選択されたパラメータ/特性に基づいて構成される。ステップ2004において、LCSアルゴリズムの出力は、正規表現生成器110によって格納されてもよく、アルゴリズムによってLCSが成功裡に識別されたか否か、および対応する正規表現の長さなどのデータを含み得る。ステップ2005において、処理は、LCSアルゴリズムがコンビナトリック探索のパラメータ/特性のすべての可能な組み合わせで実行されるまで、反復してもよい。最後に、ステップ2006において、LCSの1つからの特定の出力が、最適出力(たとえば、成功および正規表現長に基づく)として選択され、正規表現が、選択されたLCSアルゴリズム出力に基づいて生成され得る。 FIG. 20 is a flowchart illustrating a process 2000 for generating regular expressions based on combinatorial execution of the longest common subsequence (LCS) algorithm. At step 2001, the regular expression generator 110 may receive an input data character sequence corresponding to positive examples. At step 2002, the regular expression generator 110 may iterate over various different combinations of execution techniques for the LCS algorithm. As shown in this example, during each iteration of step 2002, regular expression generator 110 generates the following LCS algorithm execution parameters (or properties): position specifier (i.e. no position specifier, at start of line positioning, positioning at the end of a line), processing direction (i.e., right-to-left order, left-to-right order), whitespace-pushing (i.e., whitespace-pushing or not), and hiding spans (collapse ) (ie, span hiding or not), can be selected. In step 2003, the LCS algorithm is run on the input data character sequence (or on the regular expression code if the input character sequence was first transformed) and the LCS algorithm is applied to the parameters/characteristics selected in step 2002. constructed based on In step 2004, the output of the LCS algorithm may be stored by the regular expression generator 110 and may include data such as whether the LCS was successfully identified by the algorithm and the length of the corresponding regular expression. In step 2005, the process may iterate until the LCS algorithm has been run with all possible combinations of combinatorial search parameters/properties. Finally, at step 2006, a particular output from one of the LCSs is selected as the optimal output (eg, based on success and regular expression length) and a regular expression is generated based on the selected LCS algorithm output. obtain.

さまざまな実施形態において、図20を参照して上述したもののようなコンビナトリック探索は、パラメータ/特性のさまざまな異なる組み合わせに対して実行されてもよい。たとえば、幾つかの実施形態では、LCSアルゴリズムは、正規表現をテキストの始まりに位置指定するためにカレット記号^を使用し、および/または正規表現をテキストの終わりに位置指定するためにドル記号$を使用してもよい。場合によっては、そのような位置指定は、より短い正規表現を生成する結果となり得る。位置指定子は、ユーザがストリングの始まりおよび/または終わりに特定のパターンを発見することを望む場合に特に有用であり得る。たとえば、ユーザは始まりに製品名を望む場合がある。LCSアルゴリズムを、製品名を記述するさまざまな数の単語と混同するのを避けるために、下の画像に示されるように、カレットを使用して、レゲックスをストリングの始まりに位置指定することができる。 In various embodiments, combinatorial searches such as those described above with reference to FIG. 20 may be performed for a variety of different combinations of parameters/characteristics. For example, in some embodiments, the LCS algorithm uses the caret symbol ^ to locate the regular expression to the beginning of the text and/or the dollar symbol $ to locate the regular expression to the end of the text. may be used. In some cases, such positioning can result in the generation of shorter regular expressions. A locator can be particularly useful when a user wishes to find a particular pattern at the beginning and/or end of a string. For example, the user may want the product name at the beginning. To avoid confusing the LCS algorithm with the varying number of words describing the product name, the caret can be used to position Regex to the beginning of the string, as shown in the image below. .

さらに、いくつかの実施形態では、LCSアルゴリズムは、順方向または逆方向のいずれかである入力データを用いて実行され得る(または同様に、LCSアルゴリズムは、通常の順序で入力データを受け取り、次いでアルゴリズムを実行する前に順序を逆にするように構成されてもよい)。したがって、いくつかの実施形態では、入力キャラクタシーケンスまたはコードのペアに対して実行され得るLCSアルゴリズムのコンビナトリック探索は、以下のようであってもよい。 Further, in some embodiments, the LCS algorithm may be run with input data that is either forward or backward (or similarly, the LCS algorithm receives input data in normal order and then may be configured to reverse the order before running the algorithm). Thus, in some embodiments, a combinatorial search of LCS algorithms that may be performed on input character sequences or code pairs may be as follows.

1.通常(右から左へ)の順序、開始または終了に対して位置指定しない
2.通常(右から左へ)の順序、カレット^を使用して行の始まりに対して位置指定する
3.通常(右から左へ)の順序、ドル$を使用して行の終わりに対して位置指定する
4.逆(左から右へ)の順序、始まりまたは終わりに対して位置指定しない
5.逆(左から右へ)の順序、カレット^を使用して行の始まりに対して位置指定する
6.逆(左から右へ)の順序で、ドル$を使用して行の終わりに対して位置指定する
この例では、LCSの6つの実行のうち、最も短い結果の正規表現が選択されてもよい(ステップ2006)。
1. 1. Normal (right to left) order, no positioning to start or end. 3. In normal (right-to-left) order, position relative to the beginning of the line using the caret ^. 4. Position to end of line using normal (right to left) order, dollar $. 4. Reverse (left to right) order, no positioning to beginning or end. 5. In reverse (left to right) order, use caret ^ to position to start of line. In this example using dollar $ to position to the end of the line in reverse (left to right) order, of the 6 runs of LCS, the shortest resulting regular expression may be selected. (Step 2006).

幾つかの実施形態では、LCSアルゴリズムのコンビナトリック探索は、greedy量指定子「?」および非greedy量指定子「??」に対して反復してもよい。たとえば、デフォルトでは、任意選択のスパンが存在する場合、1つの疑問符が発せられ、たとえば、任意選択のミドルイニシャルを有するファーストネームおよびラストネームについては In some embodiments, the combinatorial search of the LCS algorithm may iterate over the greedy quantifier '?' and the non-greedy quantifier '??'. For example, by default, one question mark is emitted if an optional span is present, e.g., for first and last names with optional middle initials

Figure 2022538705000033
Figure 2022538705000033

である。greedy量指定子を使用する場合に満足のいく正規表現が見つからない場合には、コンビナトリック探索は、すべての疑問符量指定子を二重疑問符量指定子(たとえば is. If no satisfying regular expression is found when using greedy quantifiers, combinatoric search replaces all question mark quantifiers with double question mark quantifiers (e.g.

Figure 2022538705000034
Figure 2022538705000034

に置き換えることを試みることができる。二重疑問符は、非greedy量指定子に対応し、それは、マッチを見つけるために、下流の正規表現マッチャーにバックトラッキングモードに入るように命令することができる。 You can try to replace it with A double question mark corresponds to a non-greedy quantifier, which can instruct downstream regular expression matchers to enter backtracking mode in order to find a match.

加えて、いくつかの実施形態では、LCSアルゴリズムのコンビナトリック探索は、右側の空白を好むかどうかに対して反復することもできる。たとえば、上記のように、空白を右にプッシュするいくつかの実施形態において、たとえば、LCSアルゴリズムが、他の態様であれば等しい選択肢の恣意的な選択に直面する場合、空白スパンがともにマージされ、全体のスパンの数がより少なくなる結果となることを期待して、ある戦略が使用されてもよい。この特徴は、別の選択肢をコンビナトリック探索に追加し、すなわち、空白を右にプッシュするか、または判断を任意のままにする従来のLCSアプローチに従って実行するかのいずれかにするようにする。 Additionally, in some embodiments, the combinatorial search of the LCS algorithm may also iterate on whether to favor whitespace on the right. For example, as noted above, in some embodiments that push whitespace to the right, whitespace spans are merged together if, for example, the LCS algorithm faces an arbitrary choice of otherwise equal alternatives. , a strategy may be used in hopes of resulting in a lower number of overall spans. This feature adds another option to the combinatoric search, namely to either push blanks to the right or to run according to the conventional LCS approach which leaves the decision arbitrary.

さらに、いくつかの実施形態では、LCSアルゴリズムのコンビナトリック探索はまた、元のストリング上でLCSを実行することによって、すべての例で共通のリテラルに対する走査/非走査に対して反復してもよい。そのような実施形態では、LCSアルゴリズムは、共通単語を識別し、整列するように構成され得る。本明細書で使用される場合、「共通単語」は、すべての陽性例において現れる単語を指し得る。いったん共通単語が識別されると、そのスパンタイプは、LETTERからWORDに変換されてもよく、次いで、LCSアルゴリズムを介する後続の実行は、それに自然に整列してもよい。 Additionally, in some embodiments, the combinatorial search of the LCS algorithm may also iterate for scan/non-scan for literals common to all examples by performing LCS on the original string. . In such embodiments, the LCS algorithm may be configured to identify and align common words. As used herein, "common words" may refer to words that appear in all positive examples. Once a common word is identified, its span type may be converted from LETTER to WORD, and subsequent runs through the LCS algorithm may then naturally align with it.

したがって、以下の例においては、コンビナトリック探索は、完全なLCSアルゴリズムが実行される96回に達するように、いくつかのパラメータ/特性に対して反復してもよい。この例において反復されるべきさまざまなパラメータ/特性は以下のとおりである:
・位置指定子(3)(値=^, $, またはどちらもない)
・空白をプッシュ(2)(値=YesまたはNo)
・低濃度スパンのワイルドカードへの合体(2)(値=YesまたはNo)
・Greedy量指定子?(2)(値=YesまたはNo)
・LCSアルゴリズムの共通トークン上での整列(2)(値=YesまたはNo)
Therefore, in the example below, the combinatoric search may iterate over several parameters/characteristics to reach 96 times the full LCS algorithm is run. The various parameters/properties to be repeated in this example are:
Locator (3) (value = ^, $, or neither)
・Push blank (2) (value = Yes or No)
Coalescence of low cardinality spans into wildcards (2) (value = Yes or No)
・Greedy quantifier? (2) (value = Yes or No)
Alignment (2) on common tokens of the LCS algorithm (value = Yes or No)

Figure 2022538705000035
Figure 2022538705000035

上述したように、この例では、完全なLCSアルゴリズムは96回(たとえば3*2*2*2*2*2=96)実行される。 As mentioned above, in this example the full LCS algorithm is run 96 times (eg 3*2*2*2*2*2=96).

しかしながら、他の実施形態では、正規表現生成器110は、性能向上を提供してもよく、それによって、上記のリストのうちの最初の3つの特性のみ(位置指定子、空白のプッシュ、および低濃度スパンのワイルドカードへの合体)が、コンビナトリック探索に加わってもよい。これは、遙かにより少ない数の完全なLCSアルゴリズムが実行されることになる結果となり得る(たとえば3*2*2=12回)。そのような実施形態では、上記リストの最後の3つの特性(Greedy量指定子、LCSアルゴリズムの共通トークン上での整列、ならびに However, in other embodiments, the regular expression generator 110 may provide performance enhancements whereby only the first three properties of the above list (locator, push whitespace, and low Coalescence of cardinality spans into wildcards) may participate in the combinatoric search. This can result in a much smaller number of complete LCS algorithms being executed (eg 3*2*2=12 times). In such an embodiment, the last three properties in the above list (Greedy quantifier, alignment on common tokens of the LCS algorithm, and

Figure 2022538705000036
Figure 2022538705000036

)は、コンビナトリック探索に加わらないが、これらの特性は、最後に、個々におよび逐次、テストされ得る。そのような実施形態においては技術的利点が実現され得、なぜならば、探索空白をこのように分割することは、それでも、満足のいく正規表現が、性能において約8倍の高速化を伴って、見いだされる結果となり得るからである。 ) do not participate in the combinatoric search, but these properties can be tested individually and sequentially at the end. A technical advantage may be realized in such an embodiment, because splitting the search space in this way still yields a satisfactory regular expression, This is because it can be the result that is found.

説明すると、コンビナトリック探索の以下の例は、前の例よりも性能上の利点を提供し得る。この例では、コンビナトリック探索は、反復されるべき以下のパラメータ/特性に基づいて実行され得る:
・位置指定(3):BEGINNING_OF_LINE_MODE(行の始まりモード), END_OF_LINE_MODE(行の終わりモード), NO_EOL_MODE(行の終わりなしモード)
・順序/方向(2):右から左(通常)LCS対左から右(逆)LCS
・プッシュ(2):LCSアルゴリズム内で空白を右にプッシュしようとするか否か
・ワイルドカードに圧縮(2):時々発生するにすぎないスパンの長いシーケンスをワイルドカード.*?に圧縮しようとするか否か
この例におけるコンビナトリックは、完全なアルゴリズムを3*2*2*2=24回実行する結果となり得る。次いで、正規表現生成器110は、LCSアルゴリズムの24個の結果のうち最良のものを取り得、ここで、「最良」とは、(a)LCSアルゴリズムが成功したこと、および(b)最短正規表現が生成されたこと、を意味し得る。次いで、正規表現生成器110は、以下の3つの追加のタスクを実行することができる。
1.空白、句読点、または記号によって途切れない文字および数字のシーケンスを、
To illustrate, the following example of combinatoric search may offer performance advantages over the previous example. In this example, a combinatoric search can be performed based on the following parameters/properties to be iterated:
・Position specification (3): BEGINNING_OF_LINE_MODE (beginning of line mode), END_OF_LINE_MODE (end of line mode), NO_EOL_MODE (no end of line mode)
order/direction (2): right-to-left (normal) LCS vs. left-to-right (reverse) LCS
Push (2): Whether or not to try to push spaces to the right in the LCS algorithm Compress to wildcards (2): Try to compress long sequences of spans that occur only occasionally to wildcards . * ? Do or not The combinatorics in this example can result in running the complete algorithm 3*2*2*2=24 times. The regular expression generator 110 may then take the best of the 24 results of the LCS algorithm, where "best" means (a) the LCS algorithm was successful and (b) the shortest regular expression was generated. The regular expression generator 110 can then perform the following three additional tasks.
1. A sequence of letters and numbers uninterrupted by spaces, punctuation, or symbols

Figure 2022538705000037
Figure 2022538705000037

の生成されたレゲックスに対応する、ALPHANUMERICと呼ばれる新たなスパンタイプまで圧縮することを試みる。これは、クリックストリームログからのIPv6アドレスに見られる16進数に対して有用であり得る。
2.greedy量指定子?の代わりに非greedy量指定子??を使用することを試みる。
3.リテラル上で整列を試みる。
Attempts to compress up to a new span type called ALPHANUMERIC, corresponding to the generated regex of . This can be useful for hex numbers found in IPv6 addresses from clickstream logs.
2. Try to use the non-greedy quantifier ?? instead of the greedy quantifier ?.
3. Try to align on literals.

A.スパン強調表示整列
陽性例または陰性例は、複数の強調表示を含むことができる。与えられる各例は、複数の強調表示(例えば、外側強調表示および内側強調表示)を含むことができる。したがって、例示的な実施形態は、複数の例が各々それら自体の強調表示を有する場合に、効率的かつ正確な処理のための方法を提供する。
A. Span Highlighting Alignment A positive or negative example can contain multiple highlights. Each example given can include multiple highlights (eg, an outer highlight and an inner highlight). Accordingly, exemplary embodiments provide a method for efficient and accurate processing when multiple examples each have their own highlighting.

各例は、強調表示前、強調表示上、強調表示後に分解される。完全なアルゴリズムが各セット上で実行され、各セットは、強調表示前、強調表示上、および強調表示後を含む。複数の例上のユーザ強調表示は、与えられる例の間に大きなばらつき度があってもサポートされ、強調表示の失敗が回避されることになる。 Each example is decomposed before highlighting, on highlighting, and after highlighting. The full algorithm is run on each set, each set including pre-highlight, on-highlight, and post-highlight. User highlighting on multiple examples will be supported even if there is a large degree of variability between the examples given, avoiding highlighting failures.

図52は、いくつかの例示的実施形態による、スパン強調表示整列に基づいて正規表現を生成するための図5200を示す。 FIG. 52 shows a diagram 5200 for generating regular expressions based on span highlight alignment, according to some example embodiments.

図52は、2つのデータ例「Jane Doe」5210および「David Williams Jr.」5220に対する強調表示整列の実行を示す。図52に示すように、各エントリの姓(例えば、DoeおよびWilliams)が強調表示されている。例えば、ユーザは、第1のレコードにおいて例として「Doe」を選択し、別のデータレコードにおいて例として「Williams」を選択してもよい。説明を容易にするために、2つの例を示す。しかしながら、複数のデータ例に対して、強調表示整列を実行することができる。 FIG. 52 shows the execution of highlight alignment for two data examples “Jane Doe” 5210 and “David Williams Jr.” 5220 . As shown in Figure 52, the last name of each entry (eg, Doe and Williams) is highlighted. For example, a user may select "Doe" as an example in a first record and "Williams" as an example in another data record. Two examples are given for ease of explanation. However, highlight alignment can be performed for multiple data instances.

図52に示す例では、レゲックスは、部分(例えば、3部分)で生成される。データレコードのデータセル内の情報に応じて、より多い部分またはより少ない部分があり得る。レゲックスは、「強調表示前」フラグメント、「強調表示上」フラグメント、および「強調表示後」フラグメントのすべてについて生成することができる。第1のレゲックス5231は「強調表示前」フラグメントに対して生成され、第2のレゲックス5232は「強調表示上」フラグメントに対して生成され、第3のレゲックス5233は「強調表示後」フラグメントに対して生成される。 In the example shown in FIG. 52, the Regex is generated in parts (eg, three parts). There may be more or fewer portions depending on the information in the data cells of the data record. Regex can be generated for all "before highlight", "on highlight", and "after highlight" fragments. A first regex 5231 is generated for the "before-highlight" fragment, a second regex 5232 is generated for the "above-highlight" fragment, and a third regex 5233 is generated for the "after-highlight" fragment. generated by

生成されたレグックスのスパン(すなわち、最終レゲックス生成前の中間結果)は、一緒に連結される。部分(例えば、強調表示前フラグメント、強調表示上フラグメント、および強調表示後フラグメント)についての生成されたレゲックスのスパンは、一緒に連結される。 Spans of generated regex (ie, intermediate results before final regex generation) are concatenated together. The generated Regex spans for the portions (eg, pre-highlight, over-highlight, and post-highlight fragments) are concatenated together.

図53は、いくつかの例示的実施形態による、スパン強調表示整列を実行するための方法5300のフローチャートを示す。図53のステップは、図1および図24に示す正規表現生成器のような正規表現生成器によって実行され得る。 FIG. 53 shows a flowchart of a method 5300 for performing span highlight alignment, according to some example embodiments. The steps of FIG. 53 may be performed by a regular expression generator such as the regular expression generators shown in FIGS.

ステップ5310において、初期強調表示選択を受け付けることができる。例えば、ユーザは、データの列内の第1のレコードからテキストフラグメントを選択することができる。図52に示す例では、ユーザは名前列において姓5210「Doe」を強調表示している。選択されたフラグメントは、「強調表示上」フラグメントとして識別することができる。選択されたフラグメントの前のフラグメントは、「強調表示前」フラグメントとして識別することができる。選択されたフラグメントの後のフラグメントは、「強調表示後」フラグメントとして識別することができる。 At step 5310, an initial highlight selection can be accepted. For example, a user can select a text fragment from the first record in the column of data. In the example shown in Figure 52, the user has highlighted last name 5210 "Doe" in the name column. The selected fragment can be identified as the "highlighted" fragment. Fragments preceding the selected fragment can be identified as "pre-highlight" fragments. Fragments after the selected fragment can be identified as "after-highlight" fragments.

ステップ5320で、第2の強調表示選択を受け付けることができる。例えば、ユーザは、最初の強調表示選択と同じデータ列(例えば、名前列)内の第2のレコードからテキストフラグメントを選択することができる。図52に示す例では、名前列における姓5220「Williams」が強調表示されている。図52に示す第2の例では、ユーザは、ある姓も強調表示している。選択されたフラグメントは「強調表示上」フラグメントとして識別することができる。選択されたフラグメントの前のフラグメントは、「強調表示前」フラグメントとして識別することができる。選択されたフラグメントの後のフラグメントは、「強調表示後」フラグメントとして識別することができる。ユーザは、複数の例を与えることを望む場合があり、したがって、ユーザは、追加の強調表示された選択を与えてもよい。しかしながら、与えられる例は、明確に整列しなくてもよい。 At step 5320, a second highlight selection can be accepted. For example, the user can select a text fragment from a second record within the same data column (eg, name column) as the first highlight selection. In the example shown in Figure 52, the last name 5220 "Williams" in the name column is highlighted. In the second example shown in Figure 52, the user has also highlighted a surname. The selected fragment can be identified as the "highlighted" fragment. Fragments preceding the selected fragment can be identified as "pre-highlight" fragments. Fragments after the selected fragment can be identified as "after-highlight" fragments. A user may wish to provide multiple examples, so the user may provide additional highlighted selections. However, the examples given may not line up explicitly.

ステップ5330では、フラグメントの整列が実行される。強調表示の前に生ずるフラグメントは一緒に整列され、強調表示後に生ずるフラグメントは一緒に整列され、強調表示後のフラグメントは一緒に整列される。したがって、図52に示す例では、「Jane」を含むフラグメント5211および「David」を含むフラグメント5221は、強調表示されたフラグメントの前に生ずるため、整列される。フラグメント5210「Doe」およびフラグメント5220「Williams」は、強調表示上で生ずるので、一緒に整列される。キャラクタを含まないフラグメント5215、およびフラグメント5222は、強調表示後に生ずるので整列される。 At step 5330, fragment alignment is performed. Fragments occurring before highlighting are aligned together, fragments occurring after highlighting are aligned together, and fragments occurring after highlighting are aligned together. Thus, in the example shown in Figure 52, fragment 5211 containing "Jane" and fragment 5221 containing "David" are aligned because they occur before the highlighted fragment. Fragment 5210 "Doe" and fragment 5220 "Williams" are aligned together because they occur on the highlight. Fragments 5215 and 5222, which do not contain characters, are aligned as they occur after highlighting.

ステップ5340において、「強調表示前」フラグメントのためのレゲックスが生成される。例えば、第1のレゲックス5231が生成され得る。第1のレゲックス5231は、強調表示されたフラグメントの前のデータに基づいて、レゲックス生成器によって生成され得る。 At step 5340, a regex for the "before highlight" fragment is generated. For example, a first Regex 5231 can be created. A first regex 5231 may be generated by a regex generator based on the previous data of the highlighted fragment.

ステップ5350において、「強調表示上」フラグメントのためのレゲックスが生成される。例えば、第2のレゲックス5231が生成され得る。第2のレゲックス5232は、強調表示されたフラグメント内のデータに基づいて、レゲックス生成器によって生成され得る。 At step 5350, a regex for the "highlighted" fragment is generated. For example, a second Regex 5231 can be created. A second regex 5232 may be generated by the regex generator based on the data in the highlighted fragment.

ステップ5360において、「強調表示後」フラグメントのためのレゲックスが生成される。例えば、第3のレゲックス5231が生成され得る。第3のレゲックス5233は、強調表示されたフラグメントの後のデータに基づいて、レゲックス生成器によって生成され得る。 At step 5360, a regex for the "after-highlight" fragment is generated. For example, a third Regex 5231 can be created. A third Regex 5233 may be generated by the Regex generator based on the data after the highlighted fragment.

図53に示すように、3つの部分5231,5232,5233においてレゲックスが生成される。「強調表示前」フラグメントに対して第1のレゲックス5231が生成され、「強調表示上」フラグメントに対して第2のレゲックス5232が生成され、次いで、「強調表示後」フラグメントに対して第3のレゲックス4233が生成される。第1、第2、および第3のレゲックスを生成する順序を説明したが、レゲックスを生成する順序は様々であり得る。さらに、3つの部分について説明しているが、データ例の、3つよりも多い部分について、強調表示を行ってもよい。 Regex is generated in three portions 5231, 5232, 5233 as shown in FIG. A first regex 5231 is generated for the "before highlight" fragment, a second regex 5232 is generated for the "on highlight" fragment, and then a third regex 5232 for the "after highlight" fragment. Regex 4233 is generated. Although the order of generating the first, second, and third regexes has been described, the order of generating the regexes can vary. Further, although three portions are described, more than three portions of the example data may be highlighted.

ステップ5370では、3つのレゲックスに対するスパンが連結される。すなわち、結果として生じる3つのレグックスを一緒に連結する代わりに、スパン(すなわち、最終レゲックス生成前の中間結果)が一緒に連結される。 At step 5370, the spans for the three regexes are concatenated. That is, instead of concatenating the three resulting regexes together, spans (ie, intermediate results before final regex generation) are concatenated together.

ステップ5380において、連結された3つのスパンについて最長共通サブシーケンスが判断される。LCSは、強調表示前スパン、強調表示上スパン、および強調表示後スパン上でLCSアルゴリズムを実行した出力について、判断され得る。 At step 5380, the longest common subsequence for the three concatenated spans is determined. LCS may be determined for the output of running the LCS algorithm on the pre-highlight span, the above-highlight span, and the post-highlight span.

したがって、例示的な実施形態は、最長共通サブシーケンスが、同様に位置するデータに基づいて判断されるので、最長共通サブシーケンスを判断する、より正確な方法を提供する。 Accordingly, the exemplary embodiment provides a more accurate method of determining the longest common subsequence, as the longest common subsequence is determined based on similarly located data.

ある例示的な実施形態は、英数字スパンも与える。内側強調表示の開始および終了を判断すること、スパンインデックスによって位置の追跡を維持すること、および複数の文字スパンおよび数字スパンを単一の英数字スパンに置換することにより、インデックスおよび位置を捨て去るすることができる。したがって、例示的な実施形態は、置換前インデックスから置換後インデックスへのマッピングを与える。英数字スパンのインデックスを1つまたは複数の数字および1つまたは複数の文字のインデックスに関連付けるマッピングが生成される。 Certain exemplary embodiments also provide alphanumeric spans. Determining the start and end of inner highlighting, keeping track of position by span index, and discarding index and position by replacing multiple character and numeric spans with a single alphanumeric span be able to. Accordingly, the exemplary embodiment provides a mapping from pre-substitution indices to post-substitution indices. A mapping is generated that associates indices of alphanumeric spans with indices of one or more digits and one or more letters.

さらに、各例は全体解からのインデックスのすべてを含むわけではない場合があるので、マッピングは例ごとに追跡される。多数の予め置換されたスパンを識別することができる。 Furthermore, the mapping is tracked on an example-by-example basis since each example may not contain all of the indices from the global solution. A number of pre-permuted spans can be identified.

図54は、いくつかの例示的実施形態による、スパンを追跡する方法5400のフローチャートを示す。具体的には、例示的な実施形態は、ある英数字スパンのうちのいくつの文字スパンおよびいくつの数字スパンが置換されるかを判断するための方法を提供する。 FIG. 54 shows a flowchart of a method 5400 of tracking spans, according to some example embodiments. Specifically, exemplary embodiments provide a method for determining how many character spans and number spans of an alphanumeric span are to be replaced.

ステップ5410では、1つまたは複数の文字スパンおよび1つまたは複数の数字スパンが、単一の英数字スパンで置換される。例えば、HTML16進数カラーコードは、文字スパンおよび数字スパンのような3つの異なるスパンの代わりに、単一の英数字スパンに置換することができる。<span style="color:#FF030A">BUY NOW!</span>のようなHTML16進数カラーコードでは、3つの異なるスパン(例えば、文字スパン、数字スパン、および別の文字スパン)の代わりに単一の英数字スパンFF030Aが用いられる。 At step 5410, one or more character spans and one or more numeric spans are replaced with a single alphanumeric span. For example, an HTML hexadecimal color code can be replaced with a single alphanumeric span instead of three different spans, such as a letter span and a numeric span. An HTML hexadecimal color code such as <span style="color:#FF030A">BUY NOW!</span> replaces three different spans (e.g., a character span, a number span, and another character span) with a single One alphanumeric span FF030A is used.

いくつかのデータフラグメント例は、16進数「桁」A~Fを含むことができる。この16進数桁は、hexコード内のどこにでも出現することができる。したがって、英数字スパンを用いて、そのようなデータフラグメント例についてのマッチを容易に識別することができる。 Some example data fragments may include hexadecimal "digits" AF. This hex digit can appear anywhere in the hex code. Thus, alphanumeric spans can be used to easily identify matches for such example data fragments.

ステップ5420では、1つまたは複数の文字スパンおよび1つまたは複数の数字スパンを置き換えた英数字スパンを含むデータフラグメント例が識別される。 At step 5420, example data fragments are identified that include alphanumeric spans that replace one or more character spans and one or more numeric spans.

ステップ5430では、データフラグメント例について置換前インデックスおよび置換後インデックスを識別するマッピングが生成される。各データフラグメント例に対してマッピングが生成される。 At step 5430, a mapping is generated that identifies the pre-replacement index and the post-replacement index for the example data fragment. A mapping is generated for each example data fragment.

ステップ5440では、多数の予め置換されたスパンを識別することができる。
図55は、いくつかの例示的実施形態による、句読点スパンおよび記号スパンを表示するユーザインターフェイス5500を示す。図55に示すように、ユーザは、指定された例5533を与えている。ユーザによって指定された例は、例5534および5535を含む。レゲックス5532は、指定された例5533に基づいて生成される。
At step 5440, a number of pre-permuted spans may be identified.
FIG. 55 shows a user interface 5500 displaying punctuation spans and symbol spans, according to some example embodiments. As shown in FIG. 55, the user has provided a specified example 5533 . User-specified examples include examples 5534 and 5535 . Regex 5532 is generated based on specified example 5533 .

図55に示すように、記号および句読点は、強調表示エンドポイントが2つの句読点符号の間に来ることができるようスパン可能ではもはやない。 As shown in FIG. 55, the symbols and punctuation marks are no longer spanable so that the highlight endpoint can come between two punctuation marks.

各句読点符号および各記号は、それ自体の句読点スパンまたは記号スパンを有することができる。例えば、「A.,S」を含む例は、4つのスパン「A」「.」「,」および「S」を含むであろう。 Each punctuation mark and each symbol can have its own punctuation span or symbol span. For example, an example containing "A.,S" would contain four spans "A" "." "," and "S".

例示的な実施形態は、改善されたレゲックス生成美観を与える。具体的には、フラグメントは、それらを生じさせた例と関連付けることができる。フラグメントは、それらのフラグメントを生じさせた例に戻って関連付けられる。ある例示的な実施形態においては、フラグメントを生じさせた例は、例番号のリストに追加され得る。 Exemplary embodiments provide improved Regex production aesthetics. Specifically, fragments can be associated with the example that gave rise to them. Fragments are associated back to the instance that spawned them. In an exemplary embodiment, the example that gave rise to the fragment can be added to a list of example numbers.

さらに、ある例示的な実施形態は、フラグメントを、それを生じさせた例と関連付ける、さらにより詳細な方法を提供する。例は、単にスパンオブジェクト全体としてではなく、特定のテキストフラグメントに結び付けることができる。このようにして、ユーザは、例番号のリストにおいて例番号を見るだけの代わりに、例それ自体を見ることができるので、ユーザは、どの例がフラグメントに結び付けられているかをより容易に判断することができる。 Additionally, certain exemplary embodiments provide an even more detailed method of associating a fragment with the example that spawned it. Examples can be tied to specific text fragments rather than just span objects as a whole. In this way, instead of just looking at the example number in a list of example numbers, the user can see the example itself, making it easier for the user to determine which example is associated with the fragment. be able to.

例えば、以下の2つの入力例、すなわち例1:「a#s#」および例2:「a#」に関して、解スパンは、[(LETTER, [("a",[1,2])]), (SYMBOL, [("#",[1,2])]), (LETTER, ["s",[1]]), (SYMBOL, ["#",[1]])]を含むことができる。個々のフラグメントごとに利用可能な例番号を有することによって、アルゴリズムは、特定の例を処理するときに強調表示の開始および/または終了を(またはコンテキストを確立するよう強調表示を超えて)検索する際に、前後(左または右)に歩くことができる。各例は、スパンに分解することができ、それらスパンの、それ自体のスパンのセットへのLCSマージが実行される。 For example, for the following two example inputs, Example 1: "a#s#" and Example 2: "a#", the solution span is [(LETTER, [("a",[1,2])]) , (SYMBOL, [("#",[1,2])]), (LETTER, ["s",[1]]), (SYMBOL, ["#",[1]])] can be done. By having an example number available for each individual fragment, the algorithm searches for the start and/or end of highlighting (or beyond highlighting to establish context) when processing a particular example. can walk back and forth (left or right) when Each example can be decomposed into spans and an LCS merge of those spans into its own set of spans is performed.

別の2つの入力例、すなわち、例1:「8pm」および例2:「9am」に関して、解スパンは、[(NUMBER, [("8",[1]),("9",[2])]), (LETTER, [("pm",[1]),("am",[2])]), (PUNCTUATION, [(".",[1,2])])]を含むことができる。したがって、フラグメントは、それを生じさせた特定の例に関連付けられる。 For two other example inputs, namely Example 1: "8pm" and Example 2: "9am", the solution span is [(NUMBER, [("8",[1]),("9",[2 ])]), (LETTER, [("pm",[1]),("am",[2])]), (PUNCTUATION, [(".",[1,2])])] can contain. A fragment is therefore associated with the particular instance that generated it.

別の例では、レゲックス生成美観は、スパンは同じ組の例に由来しなければマージされないことを含み得る。マッチングを容易にするために、ある例示的な実施形態では、スパンは同じ組の例に由来しなければマージされなくてもよい。 In another example, a Regex generated aesthetic may include that spans must come from the same set of examples to be merged. To facilitate matching, in certain exemplary embodiments spans may not be merged unless they come from the same set of examples.

したがって、本発明の実施形態は、正確な正規表現を生成するための様々なメカニズムを提供する。正規表現をデータに適用して、ユーザが望むデータ結果を得ることができる。ユーザは、広範囲の検索やデータ操作を行うことなく、より容易かつ効率的に所望の情報を得ることができる。 Accordingly, embodiments of the present invention provide various mechanisms for generating accurate regular expressions. Regular expressions can be applied to data to get the data results desired by the user. Users can more easily and efficiently obtain desired information without extensive searching or data manipulation.

IX.ハードウェア概要
図21は、ある実施形態を実現するための分散型システム2100の簡略図を示す。図示される実施形態において、分散型システム2100は、1つ以上の通信ネットワーク2110を介してサーバ2112に結合された1つ以上のクライアントコンピューティングデバイス2102、2104、2106、および2108を含む。クライアントコンピューティングデバイス2102、2104、2106、および2108は、1つ以上のアプリケーションを実行するように構成され得る。
IX. Hardware Overview FIG. 21 shows a simplified diagram of a distributed system 2100 for implementing certain embodiments. In the illustrated embodiment, distributed system 2100 includes one or more client computing devices 2102 , 2104 , 2106 , and 2108 coupled to server 2112 via one or more communications networks 2110 . Client computing devices 2102, 2104, 2106, and 2108 may be configured to run one or more applications.

さまざまな実施形態において、サーバ2112は、本開示に記載される正規表現の自動化された生成を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、特定の実施形態では、サーバ2112は、クライアントデバイスから送信されたユーザ入力データを受信することができ、ユーザ入力データは、クライアントデバイスで表示されたユーザインターフェイスを介して、クライアントデバイスによって受信される。次いで、サーバ2112は、ユーザ入力データを、ユーザインターフェイスを介して表示するためにクライアントデバイスに送信される正規表現に変換することができる。 In various embodiments, server 2112 may be adapted to run one or more services or software applications that enable automated generation of regular expressions described in this disclosure. For example, in certain embodiments, the server 2112 can receive user input data transmitted from a client device, which is received by the client device via a user interface displayed at the client device. be. Server 2112 can then convert the user input data into regular expressions that are sent to the client device for display via the user interface.

特定の実施形態では、サーバ2112はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの実施形態では、これらのサービスは、クライアントコンピューティングデバイス2102、2104、2106および/または2108のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデルのようなウェブベースのサービスまたはクラウドサービスとして提供され得る。クライアントコンピューティングデバイス2102、2104、2106および/または2108を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ2112とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。 In particular embodiments, server 2112 may also provide other services or software applications, which may include non-virtual and virtual environments. In some embodiments, these services are web-based, such as a Software as a Service (SaaS) model, to users of client computing devices 2102, 2104, 2106 and/or 2108. It can be provided as a service or cloud service. A user operating a client computing device 2102, 2104, 2106 and/or 2108 may utilize one or more client applications to interact with the server 2112 to take advantage of the services provided by these components.

図21に示される構成では、サーバ2112は、サーバ2112によって実行される機能を実現する1つ以上のコンポーネント2118、2120および2122を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム2100とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図21に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。 In the configuration shown in FIG. 21, server 2112 may include one or more components 2118 , 2120 and 2122 that implement the functions performed by server 2112 . These components may include software components that may be executed by one or more processors, hardware components, or combinations thereof. It should be appreciated that a wide variety of system configurations are possible that may differ from distributed system 2100 . Accordingly, the embodiment shown in FIG. 21 is an example of a distributed system for implementing an embodiment system and is not intended to be limiting.

ユーザは、クライアントコンピューティングデバイス2102、2104、2106および/または2108を用いて、1つまたは複数のアプリケーションを実行し、それは、本開示の教示に従って正規表現を生成してもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図21は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。 A user may use a client computing device 2102, 2104, 2106 and/or 2108 to run one or more applications, which may generate regular expressions according to the teachings of this disclosure. A client device may provide an interface that allows a user of the client device to interact with the client device. The client device may also output information to the user through this interface. Although FIG. 21 shows only four client computing devices, any number of client computing devices may be supported.

クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用してもよい。 Client devices can be various types of computing devices, such as portable handheld devices, general purpose computers such as personal computers and laptops, workstation computers, wearable devices, gaming systems, thin clients, various messaging devices, sensors or other sensing devices. can include a coding system. These computing devices run various types and versions of software applications and operating systems (e.g., Microsoft Windows®, Apple Macintosh®, UNIX or UNIX-like operating systems, Linux® Or Linux-based operating systems, for example, various mobile operating systems (for example, Microsoft Windows Mobile (registered trademark), iOS (registered trademark), Windows Phone (registered trademark), Android (registered trademark), BlackBerry (registered trademark), Palm OS ( Google Chrome® OS), including Google Chrome® OS). Portable handheld devices may include cellular phones, smart phones (eg, iPhones), tablets (eg, iPads), personal digital assistants (PDAs), and the like. Wearable devices may include Google Glass(R) head-mounted displays and other devices. Gaming systems include various handheld gaming devices, Internet-enabled gaming devices (e.g., Microsoft Xbox gaming consoles with and without Kinect gesture input devices, Sony PlayStation systems, Nintendo ) may include various game systems provided by ). A client device may be capable of executing a wide variety of applications, such as various Internet-related applications, communication applications (e.g., email applications, short message service (SMS) applications), and may use various communication protocols. .

ネットワーク2110は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク2110は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)802.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。 Network 2110 may be any type of network known to those skilled in the art capable of supporting data communication using any of a variety of available protocols, such as TCP/ Including but not limited to IP (Transmission Control Protocol/Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk®, and the like. Solely by way of example, network 2110 can be a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet. , public switched telephone network (PSTN), infrared networks, wireless networks (e.g., wireless networks operating under any of the Institute of Electrical and Electronics Engineers (IEEE) 802.11 protocol suites, Bluetooth and/or any other wireless protocols), and/or any combination of these and/or other networks.

サーバ2112は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ2112は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルプールなどである。各種実施形態において、サーバ2112を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させてもよい。 Server 2112 may be one or more general purpose computers, dedicated server computers (examples include PC (personal computer) servers, UNIX servers, midrange servers, mainframe computers, rackmount servers, etc.), server farms , server clusters, or any other suitable configuration and/or combination. Server 2112 may include one or more virtual machines running virtual operating systems, or other computing architectures involving virtualization. For example, one or more flexible pools of logical storage that can be virtualized to maintain virtual storage for servers. In various embodiments, server 2112 may be adapted to run one or more services or software applications that provide the functionality described in the above disclosure.

サーバ2112内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ2112は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。 A computing system within server 2112 may run one or more operating systems, including any of the operating systems described above, as well as commercially available server operating systems. Server 2112 may also be used for various other server applications including HTTP (Hypertext Transfer Protocol) servers, FTP (File Transfer Protocol) servers, CGI (Common Gateway Interface) servers, JAVA servers, database servers, etc. and/or middle-tier applications. Exemplary database servers include, but are not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM® (International Business Machines), and the like. .

いくつかの実現例において、サーバ2112は、クライアントコンピューティングデバイス2102、2104、2106および2108のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ2112は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス2102、2104、2106および2108の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。 In some implementations, server 2112 may include one or more applications for parsing and consolidating data feeds and/or event updates received from users of client computing devices 2102, 2104, 2106 and 2108. . As an example, data feeds and/or event updates can be real-time related to sensor data applications, financial stock exchanges, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, etc. may include, but are not limited to, Twitter feeds, Facebook updates or real-time updates received from one or more third party sources and continuous data streams, which may include events of not. Server 2112 may also include one or more applications for displaying data feeds and/or real-time events via one or more display devices of client computing devices 2102 , 2104 , 2106 and 2108 .

分散型システム2100はまた、1つ以上のデータリポジトリ2114、2116を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ2114、2116のうちの1つ以上を用いて、システムにより生成された正規表現とマッチする新たなデータの列のような情報を格納することができる。データリポジトリ2114、2116は、さまざまな場所に存在し得る。たとえば、サーバ2112が使用するデータリポジトリは、サーバ2112のローカル位置にあってもよく、またはサーバ2112から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ2112と通信する。データリポジトリ2114、2116は、異なる種類であってもよい。特定の実施形態において、サーバ2112が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。 Distributed system 2100 may also include one or more data repositories 2114,2116. In certain embodiments, these data repositories can be used to store data and other information. For example, one or more of the data repositories 2114, 2116 can be used to store information such as new data strings that match system-generated regular expressions. Data repositories 2114, 2116 may exist in various locations. For example, the data repositories used by server 2112 may be local to server 2112 or remote from server 2112 and communicate with server 2112 via network-based or dedicated connections. . Data repositories 2114, 2116 may be of different types. In particular embodiments, the data repository used by server 2112 may be a database, eg, a relational database such as those provided by Oracle Corporation® and other manufacturers. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved to and from the database in response to commands in SQL format.

特定の実施形態では、データリポジトリ2114、2116のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。 In particular embodiments, one or more of data repositories 2114, 2116 may be used by applications to store application data. Data repositories used by applications may be of various types, for example, key-value store repositories, object store repositories, or general-purpose storage repositories supported by file systems.

特定の実施形態において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図22は、特定の例に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。図22に示される例において、クラウドインフラストラクチャシステム2202は、ユーザが1つ以上のクライアントコンピューティングデバイス2204、2206および2208を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2202は、サーバ2112に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム2202内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成され得る。 In certain embodiments, functionality described in this disclosure may be provided as a service via a cloud environment. FIG. 22 is a simplified block diagram of a cloud-based system environment in which various services may be provided as cloud services, in accordance with certain examples. In the example shown in FIG. 22, cloud infrastructure system 2202 may provide one or more cloud services that users may request using one or more client computing devices 2204, 2206 and 2208. Cloud infrastructure system 2202 may include one or more computers and/or servers, which may include those described above with respect to server 2112 . The computers in cloud infrastructure system 2202 may be organized as general purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and/or combination.

ネットワーク2210は、クライアント2204、2206、および2208と、クラウドインフラストラクチャシステム2202との間におけるデータの通信および交換を容易にし得る。ネットワーク2210は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク2210は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。 Network 2210 may facilitate communication and exchange of data between clients 2204 , 2206 , and 2208 and cloud infrastructure system 2202 . Network 2210 may include one or more networks. The networks may be of the same type or of different types. Network 2210 may support one or more communication protocols, including wired and/or wireless protocols, to facilitate communication.

図22に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム2202が、図22に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、図22は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされ得る。 The example shown in FIG. 22 is only one example of a cloud infrastructure system and is not intended to be limiting. Note that in some other examples, cloud infrastructure system 2202 may have more or fewer components than those shown in FIG. 22, may combine two or more components, or , may have different configurations or arrangements of components. For example, although FIG. 22 shows three client computing devices, in alternate embodiments any number of client computing devices may be supported.

クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム2202)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。 The term cloud service is generally used to refer to a service made available to users on demand by a service provider's system (eg, cloud infrastructure system 2202) over a communication network such as the Internet. Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premises servers and systems. The cloud service provider's system is managed by the cloud service provider. As such, Customer may utilize cloud services offered by cloud service providers without purchasing separate licenses, support, or hardware and software resources for the services. For example, a cloud service provider's system may host an application and a user may order and use the application on demand over the Internet without purchasing infrastructure resources to run the application. Cloud services are designed to provide easy and scalable access to applications, resources and services. Several providers offer cloud services. For example, several cloud services such as middleware services, database services, Java cloud services, etc. are provided by Oracle Corporation of Redwood Shores, California.

特定の実施形態において、クラウドインフラストラクチャシステム2202は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム2202は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。 In certain embodiments, the cloud infrastructure system 2202 can be implemented in various models such as software as a service (SaaS), platform as a service (PaaS), infrastructure as a service (IaaS) models, including hybrid service models. A model may be used to provide one or more cloud services. Cloud infrastructure system 2202 may include a suite of applications, middleware, databases, and other resources that enable provisioning of various cloud services.

SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム2202がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。 The SaaS model allows applications or software to be delivered to customers as a service over a communication network, such as the Internet, without the customer having to purchase the hardware or software for the underlying application. For example, a SaaS model may be used to allow customers to access on-demand applications hosted by cloud infrastructure system 2202 . Examples of SaaS services provided by Oracle Corporation(R) include services for human resource/capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, social applications, etc.

IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。 The IaaS model is commonly used to provide flexible computing and storage capabilities by offering infrastructure resources (eg, servers, storage, hardware and networking resources) as cloud services to customers. Various IaaS services are provided by Oracle Corporation (registered trademark).

PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。 The PaaS model is commonly used to provide platform and environmental resources as a service that allow customers to develop, run, and manage applications and services without having to procure, build, or manage environmental resources. be done. Examples of PaaS services provided by Oracle Corporation (registered trademark) include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), data management cloud services, various application development solution services, and the like.

クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム2202が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム2202は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。クラウドインフラストラクチャシステム2202を、1つまたは複数のクラウドサービスを提供するように構成してもよい。 Cloud services are generally provided in an on-demand, self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services provided by cloud infrastructure system 2202 via a subscription order. Cloud infrastructure system 2202 then performs processing to provide the services requested in the customer's subscription order. Cloud infrastructure system 2202 may be configured to provide one or more cloud services.

クラウドインフラストラクチャシステム2202は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム2202は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。プライベートクラウドモデルでは、クラウドインフラストラクチャシステム2202がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム2202および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。 Cloud infrastructure system 2202 may provide cloud services via various deployment models. In the public cloud model, cloud infrastructure system 2202 may be owned by a third party cloud service provider and cloud services are provided to general public customers. This customer may be an individual or a business. In a private cloud model, cloud infrastructure system 2202 may function within an organization (eg, within a corporate organization) and services are provided to customers within this organization. For example, the customers may be various departments of the company, such as the human resources department, the payroll department, or individuals within the company. In a community cloud model, the cloud infrastructure system 2202 and the services provided may be shared by various organizations within the relevant community. Various other models may be used, such as hybrid models of the above models.

クライアントコンピューティングデバイス2204、2206、および2208は、異なるタイプであってもよく(たとえば図21に示されるデバイス2102、2104、2106および2108)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム2202が提供するサービスを要求することなど、クラウドインフラストラクチャシステム2202とのやり取りを行い得る。 Client computing devices 2204, 2206, and 2208 may be of different types (eg, devices 2102, 2104, 2106, and 2108 shown in FIG. 21) and may be capable of operating one or more client applications. . A user may interact with cloud infrastructure system 2202 , such as requesting a service provided by cloud infrastructure system 2202 , by using a client device.

いくつかの実施形態において、クラウドインフラストラクチャシステム2202が、管理関連サービスを提供するために実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、処理することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、自動化された態様で正規表現を決定するために、ビッグデータ解析がクラウドインフラストラクチャシステム2202によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。 In some embodiments, the processing performed by cloud infrastructure system 2202 to provide management-related services may include big data analytics. This analysis may involve using, analyzing, and processing large data sets to detect and visualize various trends, behaviors, relationships, etc. within this data. This analysis may be performed by one or more processors, possibly by processing the data in parallel, performing simulations using the data, or the like. For example, big data analysis may be performed by cloud infrastructure system 2202 to determine regular expressions in an automated manner. The data used for this analysis may be structured data (e.g. data stored in a database or structured according to a structured model) and/or unstructured data (e.g. data blobs (binary large object: Binary Large Objects)).

図22の例に示されるように、クラウドインフラストラクチャシステム2202は、クラウドインフラストラクチャシステム2202が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース2230を含み得る。インフラストラクチャリソース2230は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。 As shown in the example of FIG. 22, cloud infrastructure system 2202 may include infrastructure resources 2230 that are utilized to facilitate provisioning of various cloud services provided by cloud infrastructure system 2202 . Infrastructure resources 2230 may include, for example, processing resources, storage or memory resources, networking resources, and the like.

特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム2202が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の実施形態において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。 In particular embodiments, resources are defined as sets of resources or resource modules (such as resource modules) to facilitate efficient provisioning of these resources to support various cloud services provided by cloud infrastructure system 2202 to different customers. (also referred to as a "pod"). Each resource module or pod may contain a pre-integrated and optimized combination of one or more types of resources. In certain embodiments, different pods may be pre-provisioned for different types of cloud services. For example, a first podset may be provisioned for a database service, and a second podset may be provisioned for a Java service, etc., which may contain a different combination of resources than the pods in the first podset. good too. For some services, resources allocated for provisioning these services may be shared between services.

クラウドインフラストラクチャシステム2202自体が、クラウドインフラストラクチャシステム2202の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム2202によるサービスのプロビジョニングを容易にするサービス2232を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。 The cloud infrastructure system 2202 itself may internally use services 2232 that are shared by different components of the cloud infrastructure system 2202 and that facilitate provisioning of services by the cloud infrastructure system 2202 . These internal shared services include Security Identity Services, Integration Services, Enterprise Repository Services, Enterprise Manager Services, Virus Scanning and Whitelisting Services, High Availability, Backup Recovery Services, Cloud Support Enabling Services, Email Services, and Notifications. services, file transfer services, etc., but are not limited to these.

クラウドインフラストラクチャシステム2202は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。図22に示されるように、サブシステムは、クラウドインフラストラクチャシステム2202のユーザまたは顧客がクラウドインフラストラクチャシステム2202とやり取りすることを可能にするユーザインターフェイスサブシステム2212を含み得る。ユーザインターフェイスサブシステム2212は、ウェブインターフェイス2214、クラウドインフラストラクチャシステム2202が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス2216、およびその他のインターフェイス2218などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム2202がインターフェイス2214、2216、および2218のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求2234)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム2202が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム2202が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム2202によって提供される正規表現の自動生成関連サービスの申し込み注文を出すことができる。 Cloud infrastructure system 2202 may include multiple subsystems. These subsystems can be implemented in software or hardware, or a combination thereof. As shown in FIG. 22, subsystems may include a user interface subsystem 2212 that allows users or customers of cloud infrastructure system 2202 to interact with cloud infrastructure system 2202 . The user interface subsystem 2212 includes a variety of different interfaces, such as a web interface 2214, an online store interface 2216 where cloud services provided by the cloud infrastructure system 2202 are advertised and available for consumer purchase, and other interfaces 2218. obtain. For example, a customer may use a client device to request (service request 2234) one or more services that cloud infrastructure system 2202 provides using one or more of interfaces 2214, 2216, and 2218. good. For example, a customer may access an online store, browse cloud services provided by cloud infrastructure system 2202, and order a subscription for one or more services offered by cloud infrastructure system 2202 that the customer wishes to subscribe to. can do This service request may include information identifying the customer and one or more services that the customer wishes to offer. For example, a customer may place a subscription order for automatic regular expression generation related services provided by cloud infrastructure system 2202 .

図22に示される例のような特定の実施形態において、クラウドインフラストラクチャシステム2202は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)2220を含み得る。この処理の一部として、OMS2220は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。 In certain embodiments, such as the example shown in FIG. 22, cloud infrastructure system 2202 may include an order management subsystem (OMS) 2220 configured to process new orders. As part of this process, OMS 2220 creates an account for the customer if not already created and provides billing and/or account information that will be used to bill the customer for providing the requested service to the customer. is received from the customer, the customer information is verified, after verification, the order is reserved for the customer, and the order is prepared for provisioning by coordinating various workflows.

適切に妥当性確認がなされると、OMS2220は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)2224を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS2224を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。 Once properly validated, OMS 2220 may invoke order provisioning subsystem (OPS) 2224 configured to provision resources for this order, including processing, memory, and networking resources. Provisioning may include allocating resources for an order and configuring resources to facilitate services requested by customer orders. The manner in which resources are provisioned for an order and the types of resources provisioned may depend on the type of cloud service ordered by the customer. For example, according to one workflow, OPS 2224 may be configured to determine the particular cloud service being requested and identify the number of pods that would have been pre-configured for this particular cloud service. . The number of pods allocated for an order may depend on the size/quantity/level/extent of service requested. For example, the number of pods to allocate may be determined based on the number of users the service should support, the time period for which the service is requested, and the like. The assigned pods may then be customized to the specific customer requesting them to provide the requested service.

クラウドインフラストラクチャシステム2202は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知2244を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の実施形態では、正規表現の自動生成関連サービスを要求する顧客に対して、応答は、実行されるとユーザインターフェイスの表示を引き起こす命令を含み得る。 Cloud infrastructure system 2202 may send a response or notification 2244 to the requesting customer to indicate when the requested service will be available. In some examples, the customer may be sent information (eg, a link) that allows the customer to begin using and taking advantage of the requested service. In certain embodiments, for customers requesting automatic regular expression generation related services, the response may include instructions that, when executed, cause the display of a user interface.

クラウドインフラストラクチャシステム2202はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム2202は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム2202は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。 Cloud infrastructure system 2202 may provide services to multiple customers. For each customer, cloud infrastructure system 2202 manages information related to one or more subscription orders received from the customer, maintains customer data related to the orders, and provides requested services to the customer. play a role. Cloud infrastructure system 2202 may also collect usage statistics regarding customer usage of subscribed services. For example, statistics may be gathered about the amount of storage used, the amount of data transferred, the number of users, the amount of system uptime and system downtime, and the like. This usage information may be used to bill the customer. Billing may be done monthly, for example.

クラウドインフラストラクチャシステム2202は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム2202は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の実施形態において、クラウドインフラストラクチャシステム2202は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)2228を含む。IMS2228は、アイデンティティサービス、情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。 Cloud infrastructure system 2202 may provide services to multiple customers in parallel. Cloud infrastructure system 2202 may store information about these customers, possibly including copyright information. In certain embodiments, cloud infrastructure system 2202 is configured to manage customer information and segregate managed information such that information about one customer is not accessed from information about another customer. Also includes Identity Management Subsystem (IMS) 2228 . IMS 2228 may be configured to provide various security-related services, such as identity services, information access management, authentication and authorization services, services for managing customer identities and roles and related capabilities, and the like.

図23は、コンピュータシステム2300の例を示す。いくつかの実施形態では、コンピュータシステム2300は、上述のシステムのいずれかを実現するために用いられ得る。図23に示されるように、コンピュータシステム2300は、バスサブシステム2302を介して他のいくつかのサブシステムと通信する処理サブシステム2304を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット2306、I/Oサブシステム2308、ストレージサブシステム2318、および通信サブシステム2324を含み得る。ストレージサブシステム2318は、記憶媒体2322およびシステムメモリ2310を含む非一時的なコンピュータ読取り可能記憶媒体を含み得る。 FIG. 23 shows an example computer system 2300 . In some embodiments, computer system 2300 may be used to implement any of the systems described above. As shown in FIG. 23, computer system 2300 includes various subsystems including processing subsystem 2304 that communicates with several other subsystems via bus subsystem 2302 . These other subsystems may include processing acceleration unit 2306 , I/O subsystem 2308 , storage subsystem 2318 , and communication subsystem 2324 . Storage subsystem 2318 may include non-transitory computer-readable storage media, including storage media 2322 and system memory 2310 .

バスサブシステム2302は、コンピュータシステム2300のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム2302は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム2302は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。 Bus subsystem 2302 provides a mechanism for causing the various components and subsystems of computer system 2300 to communicate with each other as intended. Although bus subsystem 2302 is shown schematically as a single bus, alternative examples of bus subsystems may utilize multiple buses. Bus subsystem 2302 may be any of several types of bus structures including memory buses or memory controllers, peripheral buses, local buses, etc., using any of a variety of bus architectures. For example, such architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association ( Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured according to the IEEE P1386.1 standard.

処理サブシステム2304は、コンピュータシステム2300の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム2300の処理リソースを、1つ以上の処理ユニット2332、2334などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム2304は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム2304の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。 Processing subsystem 2304 controls the operation of computer system 2300 and may include one or more processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). A processor may include a single-core or multi-core processor. The processing resources of computer system 2300 can be organized into one or more processing units 2332, 2334, and so on. A processing unit may include one or more processors, one or more cores from the same or different processors, combinations of cores and processors, or other combinations of cores and processors. In some embodiments, processing subsystem 2304 may include one or more dedicated co-processors such as graphics processors, digital signal processors (DSPs), and the like. In some embodiments, some or all of the processing units of processing subsystem 2304 may use customized circuitry, such as an application specific integrated circuit (ASIC) or field programmable gate array (FPGA).

いくつかの実施形態において、処理サブシステム2304内の処理ユニットは、システムメモリ2310またはコンピュータ読取り可能記憶媒体2322に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ2310および/または潜在的に1つ以上の記憶装置を含むコンピュータ読取り可能記憶媒体2322に常駐していてもよい。適切なプログラミングを介して、処理サブシステム2304は、上述のさまざまな機能を提供し得る。コンピュータシステム2300が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当ててもよい。 In some embodiments, the processing units within processing subsystem 2304 may execute instructions stored in system memory 2310 or computer readable storage media 2322 . In various examples, a processing unit may execute various programs or code instructions and maintain multiple programs or processes executing simultaneously. At any given moment, some or all of the program code to be executed may reside in system memory 2310 and/or computer readable storage medium 2322, potentially including one or more storage devices. . Through appropriate programming, processing subsystem 2304 can provide the various functions described above. In examples where computer system 2300 is running one or more virtual machines, one or more processing units may be assigned to each virtual machine.

特定の実施形態において、コンピュータシステム2300によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム2304によって実行される処理の一部をオフロードするために、処理加速ユニット2306を任意に設けることができる。 In certain embodiments, to accelerate the overall processing performed by computer system 2300, to perform customized processing, or to offload some of the processing performed by processing subsystem 2304. A process acceleration unit 2306 may optionally be provided for this purpose.

I/Oサブシステム2308は、コンピュータシステム2300に情報を入力するための、および/またはコンピュータシステム2300から、もしくはコンピュータシステム2300を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム2300に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。 The I/O subsystem 2308 may include devices and mechanisms for inputting information into the computer system 2300 and/or for outputting information from or through the computer system 2300 . . In general, use of the term “input device” is intended to include all possible types of devices and mechanisms for entering information into computer system 2300 . User interface input devices include, for example, keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens built into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice command recognition systems. Accompanying voice input devices, microphones, and other types of input devices may also be included. A user interface input device receives input using a Microsoft Kinect® motion sensor, a Microsoft Xbox® 360 game controller, gestures and voice commands that allow a user to control and interact with the input device Motion sensing and/or gesture recognition devices may also be included, such as devices that provide an interface for. A user interface input device detects eye movements from a user (e.g., "blinking" while taking a picture and/or making a menu selection) and recognizes the eye gestures as an input device (e.g., Google Glass). It may also include an eye gesture recognition device such as the Google Glass(R) blink detector that translates as an input to the (trademark)). User interface input devices may also include voice recognition sensing devices that allow a user to interact with a voice recognition system (eg, Siri® navigator) via voice commands.

ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。 Other examples of user interface input devices are three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphics tablets, as well as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, bar It may also include, but is not limited to, audio/visual devices such as code readers 3D scanners, 3D printers, laser range finders, and eye tracking devices. User interface input devices may also include medical imaging input devices such as, for example, computed tomography, magnetic resonance imaging, position emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices such as, for example, MIDI keyboards, digital musical instruments, and the like.

一般に、出力デバイスという語の使用は、コンピュータシステム2300からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。 In general, use of the term output device is intended to include all possible types of devices and mechanisms for outputting information from computer system 2300 to a user or other computer. User interface output devices may include display subsystems, indicator lights, non-visual displays such as audio output devices, and the like. The display subsystem may be a flat panel device, such as one that uses a cathode ray tube (CRT), liquid crystal display (LCD) or plasma display, a planning device, a touch screen, or the like. For example, user interface output devices include various display devices that visually convey text, graphics and audio/visual information such as monitors, printers, speakers, headphones, automotive navigation systems, plotters, audio output devices and modems. but not limited to them.

ストレージサブシステム2318は、コンピュータシステム2300によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム2318は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ読取り可能記憶媒体を提供する。処理サブシステム2304によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム2318に格納されてもよい。ソフトウェアは、処理サブシステム2304の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム2318はまた、本開示の教示に従って使用されるデータを格納するためのリポジトリを提供してもよい。 Storage subsystem 2318 provides a repository or data store for storing information and data used by computer system 2300 . Storage subsystem 2318 provides tangible, non-transitory computer-readable storage media for storing the basic programming and data structures that provide the functionality of some examples. Software (eg, programs, code modules, instructions) that provide the described functionality when executed by processing subsystem 2304 may be stored in storage subsystem 2318 . Software may be executed by one or more processing units of processing subsystem 2304 . Storage subsystem 2318 may also provide a repository for storing data used in accordance with the teachings of this disclosure.

ストレージサブシステム2318は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図23に示すように、ストレージサブシステム2318は、システムメモリ2310およびコンピュータ読取り可能記憶媒体2322を含む。システムメモリ2310は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム2300内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム2304によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ2310は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。 Storage subsystem 2318 may include one or more non-transitory memory devices, including volatile and non-volatile memory devices. As shown in FIG. 23, storage subsystem 2318 includes system memory 2310 and computer readable storage media 2322 . System memory 2310 includes volatile primary random access memory (RAM) for storing instructions and data during program execution, and nonvolatile read only memory (ROM) or flash memory in which fixed instructions are stored. memory. In some implementations, a basic input/output system (BIOS), containing the basic routines that help transfer information between elements within computer system 2300, such as during start-up, is typically may be stored in ROM. RAM typically contains the data and/or program modules currently being manipulated and executed by processing subsystem 2304 . In some implementations, system memory 2310 may include multiple different types of memory such as static random access memory (SRAM), dynamic random access memory (DRAM), and the like.

一例として、限定を伴うことなく、図23に示されるように、システムメモリ2310は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム2312、プログラムデータ2314、およびオペレーティングシステム2316を、ロードしてもよい。一例として、オペレーティングシステム2316は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) OS、Palm(登録商標) OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。 By way of example, and without limitation, as shown in FIG. 23, system memory 2310 may include running applications, such as web browsers, middle-tier applications, relational database management systems (RDBMS), etc. Programs 2312, program data 2314, and operating system 2316 may be loaded. By way of example, operating system 2316 may include Microsoft Windows®, Apple Macintosh® and/or Linux operating systems, various commercially available UNIX or UNIX-like operating systems (including various GNU/Linux operating system, including but not limited to Google Chrome® OS, etc.) and/or iOS®, Windows® Phone, Android® OS, BlackBerry® OS , various versions of mobile operating systems such as the Palm® OS operating system, and the like.

コンピュータ読取り可能記憶媒体2322は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ読取り可能記憶媒体2322は、コンピュータシステム2300のための、コンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム2304によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム2318に格納されてもよい。一例として、コンピュータ読取り可能記憶媒体2322は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ読取り可能記憶媒体2322は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ読取り可能記憶媒体2322は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。 Computer readable storage media 2322 may store programming and data structures that provide some example functions. Computer readable storage media 2322 may provide storage of computer readable instructions, data structures, program modules and other data for computer system 2300 . Software (programs, code modules, instructions) that provide the described functionality when executed by processing subsystem 2304 may be stored in storage subsystem 2318 . By way of example, computer readable storage medium 2322 may include non-volatile memory such as a hard disk drive, a magnetic disk drive, a CD ROM, a DVD, an optical disk drive such as a Blu-Ray disk, or other optical media. . Computer readable storage media 2322 may include Zip drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital video tapes, etc., including but not limited to Not limited. The computer readable storage medium 2322 includes flash memory based SSDs, enterprise flash drives, solid state drives (SSDs) based on non-volatile memory such as solid state ROM, volatile memory such as solid state RAM, dynamic RAM, static RAM. SSDs based on static memory, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.

特定の実施形態において、ストレージサブシステム2318は、コンピュータ読取り可能記憶媒体2322にさらに接続可能なコンピュータ読取り可能記憶媒体リーダ2320も含み得る。リーダ2320は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。 In particular embodiments, the storage subsystem 2318 may also include a computer readable storage media reader 2320 that is further connectable to computer readable storage media 2322 . Reader 2320 may be configured to receive and read data from memory devices such as disks, flash drives, and the like.

特定の実施形態において、コンピュータシステム2300は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム2300は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の実施形態において、コンピュータシステム2300は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム2300によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム2300によって同時に実行され得る。 In particular embodiments, computer system 2300 may support virtualization techniques including, but not limited to, virtualization of processing and memory resources. For example, computer system 2300 may provide support for running one or more virtual machines. In particular embodiments, computer system 2300 may execute programs such as hypervisors that facilitate configuration and management of virtual machines. Each virtual machine may be assigned memory, computing (eg, processors, cores), I/O, and networking resources. Each virtual machine typically runs independently of other virtual machines. A virtual machine typically runs its own operating system, which may be the same as or different from operating systems run by other virtual machines run by computer system 2300 . Thus, potentially multiple operating systems can be run by computer system 2300 at the same time.

通信サブシステム2324は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム2324は、他のシステムとコンピュータシステム2300との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム2324は、コンピュータシステム2300が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。 Communications subsystem 2324 provides an interface to other computer systems and networks. Communications subsystem 2324 serves as an interface for sending and receiving data between other systems and computer system 2300 . For example, communications subsystem 2324 enables computer system 2300 to establish communications channels over the Internet to one or more client devices to send and receive information to and from the one or more client devices. can be

通信サブシステム2324は、有線および/または無線通信プロトコルの両方をサポートし得る。ある実施形態において、通信サブシステム2324は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム2324は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。 Communication subsystem 2324 may support both wired and/or wireless communication protocols. In some embodiments, the communication subsystem 2324 uses (e.g., cellular telephony, advanced data network technologies such as 3G, 4G or EDGE (high speed data rate for global evolution), WiFi (IEEE 802.XX family of standards, or other radio frequency (RF) transceiver components, global positioning system (GPS) receiver components, and/or Other components may be included, hi some embodiments, communications subsystem 2324 may provide a wired network connection (eg, Ethernet) in addition to or instead of a wireless interface.

通信サブシステム2324は、さまざまな形式でデータを受信および送信し得る。いくつかの実施形態において、通信サブシステム2324は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード2326、イベントストリーム2328、イベントアップデート2330などの形式で入力通信を受信してもよい。たとえば、通信サブシステム2324は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード2326を受信(または送信)するように構成されてもよい。 Communication subsystem 2324 may receive and transmit data in various formats. In some embodiments, the communications subsystem 2324 receives input communications in the form of structured and/or unstructured data feeds 2326, event streams 2328, event updates 2330, among other forms. may For example, the communication subsystem 2324 may communicate with social media networks and/or web feeds such as Twitter feeds, Facebook updates, Rich Site Summary (RSS) feeds, and/or one or more third parties. It may be configured to receive (or send) data feeds 2326 in real time from users of other communication services, such as real time updates from information sources.

特定の実施形態において、通信サブシステム2324は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム2328および/またはイベントアップデート2330を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。 In certain embodiments, the communications subsystem 2324 may be configured to receive data in the form of a continuous data stream, which is continuous or infinite in nature with no definite end. An event stream 2328 and/or event updates 2330 of possible real-time events may be included. Examples of applications that generate continuous data include, for example, sensor data applications, financial stock exchanges, network performance measurement tools (e.g. network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, etc. can.

通信サブシステム2324は、コンピュータシステム2300からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード2326、イベントストリーム2328、イベントアップデート2330などのような各種異なる形式で、コンピュータシステム2300に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。 Communications subsystem 2324 may be configured to communicate data from computer system 2300 to other computer systems or networks. This data is communicated to one or more streaming data source computers coupled to computer system 2300 in a variety of different formats, such as structured and/or unstructured data feeds 2326, event streams 2328, event updates 2330, and the like. may be communicated to one or more databases to obtain.

コンピュータシステム2300は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、図23に示されるコンピュータシステム2300の記載は、具体的な例として意図されているに過ぎない。図23に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。当業者であれば、本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法を認識するだろう。 Computer system 2300 includes handheld portable devices (eg, iPhone® cellular phones, iPad® computing tablets, PDAs), wearable devices (eg, Google Glass® head-mounted displays), personal computers, workstations , mainframe, kiosk, server rack, or other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system 2300 shown in FIG. 23 is intended only as a specific example. Many other configurations having more or fewer components than the system shown in FIG. 23 are possible. A person of ordinary skill in the relevant art will recognize other aspects and/or ways to implement the various examples based on the disclosure and teachings herein.

特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。 Although specific examples have been described, many variations, modifications, alternative constructions, and equivalents are possible. Examples are not limited to operation within a particular data processing environment, but are free to operate within multiple data processing environments. Furthermore, it should be apparent to those skilled in the art that while the examples have been described using a particular series of transactions and steps, this is not intended to be limiting. Although some flowcharts describe the operations as a sequential process, many of these operations may be performed in parallel or concurrently. Additionally, the order of operations may be respecified. A process may have additional steps not included in the figure. Various features and aspects of the above examples may be used individually or together.

さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現されてもよい。 Furthermore, although specific examples have been described using specific combinations of hardware and software, it should be understood that other combinations of hardware and software are possible. Certain examples may be implemented solely in hardware, solely in software, or using a combination thereof. The various processes described herein may be implemented on the same processor or on different processors in any combination.

デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。 Where a device, system, component or module is described as being configured to perform a particular action or function, such configuration is, for example, by designing electronic circuitry to perform the action By programming a programmable electronic circuit (such as a microprocessor) to perform actions, e.g., programmed to execute code or instructions stored in a non-transitory memory medium, or any combination thereof computer instructions or code, or by executing a processor or core, or the like. Processes can communicate using a variety of techniques including, but not limited to, conventional techniques for inter-process communication, different pairs of processes may use different techniques, and processes in the same pair may communicate using different techniques. may use different techniques at different times.

本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更が可能である。 Specific details are provided in this disclosure to provide a thorough understanding of the examples. However, the example may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the examples. This specification provides illustrative examples only and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the above description of the examples will provide those skilled in the art with an enabling description for implementing various examples. Various changes are possible within the function and configuration of the elements.

したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。 The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions and other modifications and changes may be made thereto without departing from the broader spirit and scope of the claims. Thus, although specific examples have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the appended claims.

上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。 Although the foregoing specification describes aspects of the disclosure with reference to specific examples thereof, those skilled in the art will appreciate that the disclosure is not so limited. Various features and aspects of the above disclosure may be used individually or together. Further, examples may be utilized in a variety of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されてもよいことを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されてもよいし、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させてもよいマシン実行可能命令のシーケンスで具体化されてもよいことも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行されてもよい。 In the above description, the methods are described in a particular order for purposes of illustration. It should be appreciated that in alternate examples, the methods may be performed in a different order than the order described. The methods described above may also be performed by hardware components or machine-executable instructions which, when used, may be executed by a machine, such as a general-purpose or special-purpose processor or logic circuit programmed with such instructions. It should also be understood that the method may be embodied in a sequence of machine-executable instructions that may cause it to be performed. These machine-executable instructions are stored on one or more machine-readable media such as a CD-ROM or other type of optical disk, floppy disk, ROM, RAM, EPROM, EEPROM, magnetic or optical card, flash memory. It can be stored on a medium or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, these methods may be performed by a combination of hardware and software.

構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。 When a component is described as being configured to perform a particular operation, such configuration includes, for example, designing electronic circuitry or other hardware to perform a particular operation; It may be accomplished by programming a programmable electronic circuit (eg, a microprocessor or other suitable electronic circuit) to perform the operations, or any combination thereof.

本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用され得ること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。 Although illustrative examples of the present application have been described in detail herein, the concepts of the present invention may be variously embodied and employed in other forms, and the claims may be subject to any claim if limited by the prior art. is intended to be construed to include such variations.

構成要素が特定の動作を実行する「ように構成される」として記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成されてもよい。 When a component is described as being "configured to" perform a particular operation, such configuration means, for example, designing electronic circuitry or other hardware to perform the particular operation; It may be accomplished by programming a programmable electronic circuit (eg, a microprocessor or other suitable electronic circuit) to perform a particular operation, or any combination thereof.

Claims (20)

正規表現を生成する方法であって、
1つまたは複数のプロセッサを備える正規表現生成器が、1つまたは複数の陽性のキャラクタシーケンスを含む第1の選択を受け取ることを含み、前記1つまたは複数の陽性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される正規表現によってマッチされるべき陽性例に対応し、前記方法はさらに、
前記正規表現生成器が第1の正規表現を生成することを含み、前記第1の正規表現は前記陽性例にマッチし、前記方法はさらに、
前記正規表現生成器が、1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択を受け取ることを含み、前記1つまたは複数の陰性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される前記正規表現によってマッチされるべきでない陰性例に対応し、前記方法はさらに、
前記第2の選択を受け取ることに応答して、前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスのコンテキストを判断することと、
前記1つまたは複数の陰性のキャラクタシーケンスの前記判断されたコンテキストに基づいて、前記第1の正規表現を更新することとを含む、方法。
A method of generating a regular expression comprising:
A regular expression generator comprising one or more processors receives a first selection including one or more positive character sequences, each of said one or more positive character sequences comprising said Corresponding to positive examples to be matched by the regular expression generated by the regular expression generator, the method further comprises:
The method includes the regular expression generator generating a first regular expression, the first regular expression matching the positive examples, the method further comprising:
the regular expression generator receiving a second selection including one or more negative character sequences, each of the one or more negative character sequences generated by the regular expression generator; corresponding to negative examples that should not be matched by said regular expression, said method further comprising:
Determining the context of the one or more negative character sequences corresponding to the negative example in response to receiving the second selection;
and updating the first regular expression based on the determined context of the one or more negative character sequences.
前記第1の選択を受け取ることは、ユーザインターフェイスを介して、データセットの第1のデータセルにおいて前記1つまたは複数の陽性のキャラクタシーケンスの選択を受け取ることを含む、請求項1に記載の方法。 2. The method of claim 1, wherein receiving the first selection comprises receiving a selection of the one or more positive character sequences in a first data cell of a data set via a user interface. . 前記正規表現生成器が、前記データセット内の複数のデータセル内において、前記1つまたは複数の陽性のキャラクタシーケンスを含む第1の選択に対応するキャラクタシーケンスを自動的に選択することをさらに含む、請求項2に記載の方法。 Further comprising the regular expression generator automatically selecting character sequences within a plurality of data cells within the data set that correspond to a first selection that includes the one or more positive character sequences. 3. The method of claim 2. 前記第2の選択を受け取ることは、前記ユーザインターフェイスを介して、前記データセットの第2のデータセルにおいて前記1つまたは複数の陰性のキャラクタシーケンスの選択を受け取ることを含む、請求項3に記載の方法。 4. The method of claim 3, wherein receiving the second selection comprises receiving a selection of the one or more negative character sequences in a second data cell of the data set via the user interface. the method of. 前記正規表現生成器によって、前記データセット内の前記複数のデータセル内において、前記1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択に対応するキャラクタシーケンスを自動的に選択することをさらに含む、請求項4に記載の方法。 Further automatically selecting, by the regular expression generator, character sequences within the plurality of data cells in the data set that correspond to a second selection that includes the one or more negative character sequences. 5. The method of claim 4, comprising: 前記第1の選択は、第1の強調表示フォーマットで強調表示され、前記第2の選択は、前記第1の強調表示フォーマットとは異なる第2の強調表示フォーマットで強調表示される、請求項3に記載の方法。 4. The first selection is highlighted with a first highlighting format and the second selection is highlighted with a second highlighting format different from the first highlighting format. The method described in . 前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、
前記第2の選択の、埋め込まれた強調表示位置を識別することと、
前記第2の選択の前記埋め込まれた強調表示位置の左側のデータからコンテキストを判断することと、
前記強調表示された第2の選択の前記埋め込まれた強調表示位置の右側のデータからコンテキストを判断することととを含む、請求項6に記載の方法。
Determining the context of the one or more negative character sequences corresponding to the negative examples includes:
identifying embedded highlight locations of the second selection;
determining context from data to the left of the embedded highlight location of the second selection;
and determining context from data to the right of the embedded highlight location of the highlighted second selection.
前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、さらに、
前記埋め込まれた強調表示位置の左側のデータからの前記判断されたコンテキストおよび前記埋め込まれた強調表示位置の右側のデータからの前記判断されたコンテキストに基づいて自動的に選択された、前記1つまたは複数の陰性のキャラクタシーケンスを含む前記第1の選択に対応する、前記データセット内の前記複数のデータセル内におけるキャラクタシーケンスをフィルタリングすることと、
前記データセット内の前記複数のデータセル内の前記選択されたキャラクタシーケンスから、前記選択された1つまたは複数の陰性のキャラクタシーケンスに対応する前記フィルタリングされたキャラクタシーケンスを除去することとを含む、請求項7に記載の方法。
Determining the context of the one or more negative character sequences corresponding to the negative examples further comprises:
the one automatically selected based on the determined context from the data to the left of the embedded highlight position and the determined context from the data to the right of the embedded highlight position; or filtering character sequences within the plurality of data cells in the data set corresponding to the first selection including a plurality of negative character sequences;
removing the filtered character sequences corresponding to the selected one or more negative character sequences from the selected character sequences in the plurality of data cells in the data set; 8. The method of claim 7.
前記埋め込まれた強調表示位置の左側のデータから前記コンテキストを判断することは、前記埋め込まれた強調表示位置の左側の第1のスパンを識別することを含み、
前記選択された1つまたは複数の陰性のキャラクタシーケンスに対応する前記データセット内の前記複数のデータセル内の前記キャラクタシーケンスをフィルタリングすることは、前記選択された1つまたは複数の陰性のキャラクタシーケンスに対応する前記複数のデータセル内の前記キャラクタシーケンスにおいて、前記埋め込まれた強調表示位置の左側の前記第1のスパンとマッチしないスパンを識別することをさらに含む、請求項8に記載の方法。
determining the context from data to the left of the embedded highlight location includes identifying a first span to the left of the embedded highlight location;
Filtering the character sequences in the plurality of data cells in the data set corresponding to the selected one or more negative character sequences comprises: 9. The method of claim 8, further comprising identifying spans in the character sequences in the plurality of data cells corresponding to which do not match the first span to the left of the embedded highlight position.
前記埋め込まれた強調表示位置の左側のデータからコンテキストを判断することは、前記埋め込まれた強調表示の左側の第2のスパンを識別することをさらに含み、
前記選択された1つまたは複数の陰性のキャラクタシーケンスに対応する前記データセット内の前記複数のデータセル内の前記キャラクタシーケンスをフィルタリングすることは、前記選択された1つまたは複数の陰性のキャラクタシーケンスに対応する前記複数のデータセル内の前記キャラクタシーケンスにおいて、前記埋め込まれた強調表示位置の左側の前記第2のスパンとマッチしないスパンを識別することをさらに含む、請求項9に記載の方法。
determining context from data to the left of the embedded highlight location further includes identifying a second span to the left of the embedded highlight;
Filtering the character sequences in the plurality of data cells in the data set corresponding to the selected one or more negative character sequences comprises: 10. The method of claim 9, further comprising identifying spans in the character sequences in the plurality of data cells corresponding to which do not match the second span to the left of the embedded highlight position.
前記埋め込まれた強調表示位置の右側のデータから前記コンテキストを判断することは、前記埋め込まれた強調表示位置の右側の第1のスパンを識別することを含み、
前記1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択に対応する前記データセット中の前記複数のデータセル中の前記キャラクタシーケンスをフィルタリングすることは、前記1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択に対応する前記複数のデータセル中の前記キャラクタシーケンスにおいて、前記埋め込まれた強調表示位置の右側の前記第1のスパンとマッチしないスパンを識別することをさらに含む、請求項7に記載の方法。
determining the context from data to the right of the embedded highlight location includes identifying a first span to the right of the embedded highlight location;
Filtering the character sequences in the plurality of data cells in the data set corresponding to a second selection containing the one or more negative character sequences comprises: and further comprising identifying a span that does not match the first span to the right of the embedded highlight position in the sequence of characters in the plurality of data cells corresponding to a second selection comprising 7. The method according to 7.
正規表現生成器サーバコンピュータであって、
プロセッサと、
メモリと、
前記プロセッサに結合されるコンピュータ読取可能媒体とを備え、前記コンピュータ読取可能媒体は、方法を実現するために前記プロセッサによって実行可能な命令を格納し、前記方法は、
1つまたは複数のプロセッサを備える正規表現生成器が、1つまたは複数の陽性のキャラクタシーケンスを含む第1の選択を受け取ることを含み、前記1つまたは複数の陽性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される正規表現によってマッチされるべき陽性例に対応し、前記方法はさらに、
前記正規表現生成器が第1の正規表現を生成することを含み、前記第1の正規表現は前記陽性例にマッチし、前記方法はさらに、
前記正規表現生成器が、1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択を受け取ることを含み、前記1つまたは複数の陰性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される前記正規表現によってマッチされるべきでない陰性例に対応し、前記方法はさらに、
前記第2の選択を受け取ることに応答して、前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスのコンテキストを判断することと、
前記1つまたは複数の陰性のキャラクタシーケンスの前記判断されたコンテキストに基づいて、前記第1の正規表現を更新することとを含む、正規表現生成器サーバコンピュータ。
A regular expression generator server computer,
a processor;
memory;
a computer readable medium coupled to the processor, the computer readable medium storing instructions executable by the processor to implement a method, the method comprising:
A regular expression generator comprising one or more processors receives a first selection including one or more positive character sequences, each of said one or more positive character sequences comprising said Corresponding to positive examples to be matched by the regular expression generated by the regular expression generator, the method further comprises:
The method includes the regular expression generator generating a first regular expression, the first regular expression matching the positive examples, the method further comprising:
the regular expression generator receiving a second selection including one or more negative character sequences, each of the one or more negative character sequences generated by the regular expression generator; corresponding to negative examples that should not be matched by said regular expression, said method further comprising:
Determining the context of the one or more negative character sequences corresponding to the negative example in response to receiving the second selection;
and updating the first regular expression based on the determined context of the one or more negative character sequences.
前記第1の選択を受け取ることは、ユーザインターフェイスを介して、データセットの第1のデータセルにおいて前記1つまたは複数の陽性のキャラクタシーケンスの選択を受け取ることを含む、請求項12に記載の正規表現生成器サーバコンピュータ。 13. The regularization of claim 12, wherein receiving the first selection comprises receiving a selection of the one or more positive character sequences in a first data cell of a data set via a user interface. A representation generator server computer. 前記第1の選択は、第1の強調表示フォーマットで強調表示され、前記第2の選択は、前記第1の強調表示フォーマットとは異なる第2の強調表示フォーマットで強調表示される、請求項13に記載の方法。 14. The first selection is highlighted with a first highlighting format and the second selection is highlighted with a second highlighting format different from the first highlighting format. The method described in . 前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、
前記第2の選択の、埋め込まれた強調表示位置を識別することと、
前記第2の選択の前記埋め込まれた強調表示位置の左側のデータからコンテキストを判断することと、
前記強調表示された第2の選択の前記埋め込まれた強調表示位置の右側のデータからコンテキストを判断することととを含む、請求項13に記載の方法。
Determining the context of the one or more negative character sequences corresponding to the negative examples includes:
identifying embedded highlight locations of the second selection;
determining context from data to the left of the embedded highlight location of the second selection;
and determining context from data to the right of the embedded highlight location of the highlighted second selection.
前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、さらに、
前記埋め込まれた強調表示位置の左側のデータからの前記判断されたコンテキストおよび前記埋め込まれた強調表示位置の右側のデータからの前記判断されたコンテキストに基づいて自動的に選択された、前記1つまたは複数の陰性のキャラクタシーケンスを含む前記第2の選択に対応する、前記データセット内の複数のデータセル内におけるキャラクタシーケンスをフィルタリングすることと、
前記データセット内の前記複数のデータセル内の前記選択されたキャラクタシーケンスから、前記1つまたは複数の陰性のキャラクタシーケンスを含む前記第2の選択に対応する前記フィルタリングされたキャラクタシーケンスを除去することとを含む、請求項15に記載の方法。
Determining the context of the one or more negative character sequences corresponding to the negative examples further comprises:
the one automatically selected based on the determined context from the data to the left of the embedded highlight position and the determined context from the data to the right of the embedded highlight position; or filtering character sequences within a plurality of data cells in the data set corresponding to the second selection including a plurality of negative character sequences;
removing from the selected character sequences in the plurality of data cells in the data set the filtered character sequences corresponding to the second selection including the one or more negative character sequences. 16. The method of claim 15, comprising:
1つまたは複数のプロセッサに動作を実行させるよう構成される命令を含む非一時的コンピュータ読取可能媒体であって、前記動作は、
1つまたは複数のプロセッサを備える正規表現生成器が、1つまたは複数の陽性のキャラクタシーケンスを含む第1の選択を受け取ることを含み、前記1つまたは複数の陽性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される正規表現によってマッチされるべき陽性例に対応し、前記動作はさらに、
前記正規表現生成器が第1の正規表現を生成することを含み、前記第1の正規表現は前記陽性例にマッチし、前記動作はさらに、
前記正規表現生成器が、1つまたは複数の陰性のキャラクタシーケンスを含む第2の選択を受け取ることを含み、前記1つまたは複数の陰性のキャラクタシーケンスの各々は、前記正規表現生成器によって生成される前記正規表現によってマッチされるべきでない陰性例に対応し、前記動作はさらに、
前記第2の選択を受け取ることに応答して、前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスのコンテキストを判断することと、
前記1つまたは複数の陰性のキャラクタシーケンスの前記判断されたコンテキストに基づいて、前記第1の正規表現を更新することとを含む、非一時的コンピュータ読取可能媒体。
A non-transitory computer-readable medium containing instructions configured to cause one or more processors to perform an action, the action comprising:
A regular expression generator comprising one or more processors receives a first selection including one or more positive character sequences, each of said one or more positive character sequences comprising said Corresponding to positive examples to be matched by the regular expression generated by the regular expression generator, the operation further comprises:
The regular expression generator generating a first regular expression, the first regular expression matching the positive examples, the operation further comprising:
the regular expression generator receiving a second selection including one or more negative character sequences, each of the one or more negative character sequences generated by the regular expression generator; corresponding to negative examples that should not be matched by said regular expression, said action further:
Determining the context of the one or more negative character sequences corresponding to the negative example in response to receiving the second selection;
and updating the first regular expression based on the determined context of the one or more negative character sequences.
前記第1の選択を受け取ることは、ユーザインターフェイスを介して、データセットの第1のデータセルにおいて前記1つまたは複数の陽性のキャラクタシーケンスの選択を受け取ることを含む、請求項17に記載の読取可能媒体。 18. The reading of claim 17, wherein receiving the first selection comprises receiving a selection of the one or more positive character sequences in a first data cell of a data set via a user interface. possible medium. 前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、
前記第2の選択の、埋め込まれた強調表示位置を識別することと、
前記第2の選択の前記埋め込まれた強調表示位置の左側のデータからコンテキストを判断することと、
前記強調表示された第2の選択の前記埋め込まれた強調表示位置の右側のデータからコンテキストを判断することととを含む、請求項18に記載の読取可能媒体。
Determining the context of the one or more negative character sequences corresponding to the negative examples includes:
identifying embedded highlight locations of the second selection;
determining context from data to the left of the embedded highlight location of the second selection;
and determining context from data to the right of the embedded highlight position of the highlighted second selection.
前記陰性例に対応する前記1つまたは複数の陰性のキャラクタシーケンスの前記コンテキストを判断することは、さらに、
前記埋め込まれた強調表示位置の左側のデータからの前記判断されたコンテキストおよび前記埋め込まれた強調表示位置の右側のデータからの前記判断されたコンテキストに基づいて自動的に選択された、前記1つまたは複数の陰性のキャラクタシーケンスを含む前記第2の選択に対応する、前記データセット内の複数のデータセル内におけるキャラクタシーケンスをフィルタリングすることと、
前記データセット内の前記複数のデータセル内の前記選択されたキャラクタシーケンスから、前記1つまたは複数の陰性のキャラクタシーケンスを含む前記第2の選択に対応する前記フィルタリングされたキャラクタシーケンスを除去することとを含む、請求項19に記載の読取可能媒体。
Determining the context of the one or more negative character sequences corresponding to the negative examples further comprises:
the one automatically selected based on the determined context from the data to the left of the embedded highlight position and the determined context from the data to the right of the embedded highlight position; or filtering character sequences within a plurality of data cells in the data set corresponding to the second selection including a plurality of negative character sequences;
removing from the selected character sequences in the plurality of data cells in the data set the filtered character sequences corresponding to the second selection including the one or more negative character sequences. 20. The readable medium of claim 19, comprising:
JP2021539860A 2019-06-24 2020-06-18 Regular expression generation for negative examples with context Pending JP2022538705A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962865797P 2019-06-24 2019-06-24
US62/865,797 2019-06-24
US16/904,298 2020-06-17
US16/904,298 US11941018B2 (en) 2018-06-13 2020-06-17 Regular expression generation for negative example using context
PCT/US2020/038431 WO2020263675A1 (en) 2019-06-24 2020-06-18 Regular expression generation for negative example using context

Publications (2)

Publication Number Publication Date
JP2022538705A true JP2022538705A (en) 2022-09-06
JPWO2020263675A5 JPWO2020263675A5 (en) 2023-06-02

Family

ID=71575795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021539860A Pending JP2022538705A (en) 2019-06-24 2020-06-18 Regular expression generation for negative examples with context

Country Status (4)

Country Link
EP (1) EP3987407A1 (en)
JP (1) JP2022538705A (en)
CN (1) CN113424177A (en)
WO (1) WO2020263675A1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10210246B2 (en) 2014-09-26 2019-02-19 Oracle International Corporation Techniques for similarity analysis and data enrichment using knowledge sources
US9817875B2 (en) * 2014-10-28 2017-11-14 Conduent Business Services, Llc Methods and systems for automated data characterization and extraction

Also Published As

Publication number Publication date
EP3987407A1 (en) 2022-04-27
WO2020263675A1 (en) 2020-12-30
CN113424177A (en) 2021-09-21

Similar Documents

Publication Publication Date Title
US11755630B2 (en) Regular expression generation using longest common subsequence algorithm on combinations of regular expression codes
US11354305B2 (en) User interface commands for regular expression generation
US11580166B2 (en) Regular expression generation using span highlighting alignment
US11941018B2 (en) Regular expression generation for negative example using context
JP2022538704A (en) Regular expression generation with span highlight alignment
JP2022538703A (en) User interface commands for regular expression generation
JP2022538705A (en) Regular expression generation for negative examples with context

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230525

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230525