JP2022538703A - User interface commands for regular expression generation - Google Patents
User interface commands for regular expression generation Download PDFInfo
- Publication number
- JP2022538703A JP2022538703A JP2021539844A JP2021539844A JP2022538703A JP 2022538703 A JP2022538703 A JP 2022538703A JP 2021539844 A JP2021539844 A JP 2021539844A JP 2021539844 A JP2021539844 A JP 2021539844A JP 2022538703 A JP2022538703 A JP 2022538703A
- Authority
- JP
- Japan
- Prior art keywords
- data
- regular expression
- selection
- user
- cells
- 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
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 631
- 238000000034 method Methods 0.000 claims abstract description 136
- 239000012634 fragment Substances 0.000 claims description 119
- 238000001914 filtration Methods 0.000 claims description 32
- 239000000284 extract Substances 0.000 claims description 15
- 238000000605 extraction Methods 0.000 claims description 15
- 230000009471 action Effects 0.000 claims description 8
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 230000002452 interceptive effect Effects 0.000 abstract description 8
- 238000004422 calculation algorithm Methods 0.000 description 171
- 230000008569 process Effects 0.000 description 50
- 238000012545 processing Methods 0.000 description 46
- 238000003860 storage Methods 0.000 description 36
- 238000004891 communication Methods 0.000 description 28
- 238000013499 data model Methods 0.000 description 27
- 230000004044 response Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 22
- 238000013515 script Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 230000009466 transformation Effects 0.000 description 18
- 238000006467 substitution reaction Methods 0.000 description 16
- 230000008901 benefit Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 11
- 238000007726 management method Methods 0.000 description 11
- 241000699666 Mus <mouse, genus> Species 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000002441 reversible effect Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000003086 colorant Substances 0.000 description 7
- 230000000670 limiting effect Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 239000011521 glass Substances 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 238000012517 data analytics Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004581 coalescence Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000013068 supply chain management Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 240000005020 Acaciella glauca Species 0.000 description 1
- 241000238558 Eucarida Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 238000002591 computed tomography Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 235000013615 non-nutritive sweetener Nutrition 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 235000003499 redwood Nutrition 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
生成された正規表現のための技術が開示される。いくつかの実施形態では、正規表現生成器は、1つまたは複数のキャラクタシーケンスを含む入力データを受け取ることができる。正規表現生成器は、キャラクタシーケンスを正規表現コードおよび/またはスパンデータ構造のセットに変換することができる。正規表現生成器は、正規表現コードおよび/またはスパンのセットによって共有される最長共通サブシーケンスを識別することができ、最長共通サブシーケンスに基づいて正規表現を生成することができる。正規表現の生成は、対話型ユーザインターフェイス上で実現することができる。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. Regular expression generation can be implemented on an interactive user interface. A command can be applied to one or more character sequences, and a regular expression is generated based on the applied command.
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.
詳細な説明
以下の記載では、説明を目的として、本発明のさまざまな実施形態の完全な理解のために、多数の具体的な詳細が記載される。しかしながら、本発明の実施形態は、これらの具体的な詳細のいくつかを伴わずに実施され得ることが当業者には明白であろう。他の例では、周知の構造およびデバイスがブロック図の形で示される。
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. .
正規表現生成システムによって受信される入力データは、たとえば、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.
加えて、これらの異なるカテゴリは、互いに素、つまり相互に排他的であってもよい。すなわち、この例では、カテゴリ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
図2は、本明細書に記載される1つまたは複数の実施形態に係る、ユーザインターフェイスを介して受信される入力に基づいて正規表現を生成するための処理200を示すフローチャートである。ステップ201において、正規表現生成器110は、正規表現生成器ユーザインターフェイスにアクセスし、ユーザインターフェイスを介して特定のデータを閲覧するための要求をクライアントデバイス120から受信することができる。ステップ201における要求は、REST API112、および/またはウェブサーバ、認証サーバなどを介して受信されてもよく、ユーザの要求はパーズおよび認証されてもよい。たとえば、ビジネスまたは組織内のユーザは、取引データ、顧客データ、実績データ、予測データ、および/または組織のデータリポジトリ130に記憶され得るデータの任意の他のカテゴリを解析および/または修正するために、正規表現生成器110にアクセスすることができる。ステップ202において、正規表現生成器110は、選択された入力データに基づく正規表現の生成をサポートするユーザインターフェイスを介して、要求されたデータを取り出し、表示することができる。そのようなユーザインターフェイスのさまざまな実施形態および例は、以下で詳細に説明される。
FIG. 2 is a flowchart illustrating a
ステップ203において、ユーザは、正規表現生成器110によって提供されるユーザインターフェイスに表示されたデータから1つまたは複数の入力キャラクタシーケンスを選択し得る。いくつかの実施形態では、データは、特定のデータタイプおよび/またはデータのカテゴリを有するラベル付き列を含んで、ユーザインターフェイス内にテーブル形式で表示されてもよい。そのような場合、ステップ203における入力データの選択は、ユーザがデータセルを選択すること、またはデータセル内の個々のテキストフラグメントを選択する(たとえば強調表示すること)ことに対応し得る。しかしながら、他の実施形態では、正規表現生成器110は、ユーザインターフェイスを介して半構造化および非構造化データの検索ならびに表示をサポートしてもよく、ユーザは、半構造化または非構造化データからキャラクタシーケンスを選択することによって正規表現生成のための入力データを選択してもよい。後述する例で説明されるように、ユーザが表示されたテーブル形式データから入力キャラクタシーケンスを選択することは、単なる使用ケースの一例である。他の例では、ユーザ(たとえば、おそらく、Linux(登録商標)コマンドラインツールgrep、sed、またはawkなどのために正規表現を構築することを試みるソフトウェア開発者またはパワーユーザ)は、スプレッドシートから例を拾うのではなく、例において初めからタイプしてもよい。
At
ステップ204において、正規表現生成器110は、ステップ203においてユーザにより選択された入力データに基づいて、1つまたは複数の正規表現を生成してもよい。ステップ205において、正規表現生成器110は、たとえば、生成された正規表現を表示するように、および/または表示されたデータ内のマッチする/マッチしないデータを強調表示するように、ユーザインターフェイスを更新してもよい。いくつかの実施形態では任意選択であり得るステップ206において、ユーザインターフェイスは、ユーザが生成された正規表現に基づいて基礎となるデータを修正することを可能にする機能をサポートしてもよい。たとえば、ユーザインターフェイスは、ユーザが、テーブル形式データから、特定のデータフィールドを、それらフィールドが正規表現とマッチするか否かに基づいて、フィルタリング、修正、削除、または抽出することを可能にする特徴をサポートしてもよい。データをフィルタリングまたは修正することは、リポジトリ130に格納された基礎となるデータを修正することを含むことができ、場合によっては、抽出したデータを新たな列および/または新たなテーブルとしてリポジトリ130に格納することができる。
At
これらのステップは、正規表現生成器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
さらに、いくつかの実施形態では、入力データは、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
さらなる実施形態では、入力データは、いくつかの異なる方法でユーザインターフェイスを介して提供されてもよい。たとえば、入力データは、キャラクタのセットの第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
さらに、いくつかの実施形態では、正規表現生成器110は、陽性および陰性の両方の例を含む入力に基づいて正規表現を生成することができる。上述したように、陽性例は、正規表現に包含されるべきキャラクタのシーケンスを指し得、陰性例は、正規表現に包含されるべきでないキャラクタのシーケンスを指し得る。そのような場合、正規表現生成器110は、特定の位置において、陽性例を陰性例から区別する、1つまたは複数のキャラクタからなる最短サブシーケンスを識別することができる。次いで、最短サブシーケンスは、正規表現生成器110によって生成された正規表現内でハードコード化され得る。さまざまな例では、最短サブシーケンスは、プレフィックス/サフィックス部分、または陰性例内のミッドスパンに含まれ得る。
Further, in some embodiments, the
特定の実施形態による、正規表現を自動的に生成するさらなる例を以下に記載する。これらの例は、図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
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
ステップ302において、ステップ301において受け取られた各キャラクタシーケンスは、対応する正規表現コードに変換され得る。さまざまな実施形態において、正規表現コードは、Loogleコード、ユニコードカテゴリコード、または正規表現キャラクタクラスを表す任意の他のキャラクタクラスコードであり得る。たとえば、ある入力キャラクタシーケンス「May 3」をLoogleコード「LLLZN」に変換してもよい。いくつかの実施形態では、正規表現コードは、https://www.regular-expressions.info/unicode.html#categoryに示されるユニコードカテゴリコードに基づくカテゴリコードであり得る。たとえば、コードLは文字を表してもよく、コードNは数字を表してもよく、コードZは空白を表してもよく、コードSは記号を表してもよく、コードPは句読点を表してもよい、等である。
At
ステップ303では、ステップ302で生成された正規表現コードのセットの中から最長共通サブシーケンスを判断することができる。いくつかの実施形態では、LCSアルゴリズムは、入力として正規表現コードの2つのセットを使用して実行され得る。LCSアルゴリズム(たとえば、処理の方向、位置指定、空白のプッシュ、低濃度スパンの合体(coalescing)、共通トークン上の整列など)の実行のさまざまな異なる特性が、異なる実施形態において使用され得る。ステップ304では、LCSアルゴリズムの出力に基づいて正規表現を生成することができる。場合によっては、ステップ304は、LCSアルゴリズムの出力を正規表現コードで捕捉すること、および正規表現コードを正規表現に変換することを含み得る。ステップ305において、正規表現は、たとえば、ユーザインターフェイスを介してユーザに正規表現を表示することによって、単純化され、出力されてもよい。
At
図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 "
数字6を含む中括弧は、文字の6つのインスタンスを示し、疑問符は、最後の数字/文字が任意選択であることを示す。最後に、正規表現生成器によって単純化処理を実行することができ、その間に、正規表現は、共通テキストフラグメント「iPhone」を最終正規表現に挿入し戻すことによって単純化され、正規表現のより広い
The curly brackets containing the
部分を置き換える。
この例に示されるように、正規表現生成器110によって受け取られた入力ストリングは、正規表現ブロードカテゴリ(これは、「カテゴリコード」とも呼ばれ得る)を表す「正規表現コード」に変換されてもよく、LCSアルゴリズムは、それらの正規表現コード上で実行されてもよい。いくつかの実施形態では、正規表現コードのために、ユニコードカテゴリコードを使用し得る。たとえば、入力テキストストリングは、レゲックスユニコードブロードカテゴリ
replace part.
As shown in this example, an input string received by
を表すコードに変換され得る。図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 "
の、より効果的な正規表現を生成してもよい。加えて、上述のように、本明細書で説明される技術的利点の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
を生成するかを判断することができる。どちらも、おそらくは正しいが、プログラムされたヒューリスティックは、最適な正規表現を生成する方法(たとえば、それが「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
を単純化して、それをより人間によって可読なものにすることができる。これは、いくつかの実施形態において、たとえば、正規表現のためのユニコード表現に精通していない可能性がある高度な知識のない正規表現ユーザに出力する場合に有益であり得る。 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,
の両方について、正規表現内にリテラルストリングを出力するために、閾値は、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
場合によっては、予め定義されたキャラクタ範囲のバンクが用いられてもよい。例えば、文字に対する正規表現Unicodeキャラクタカテゴリは In some cases, a bank of predefined character ranges may be used. For example, the regular expression Unicode character category for characters is
であり、それは、[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
に置換することを、所与の例がそれら置換物の1つと上手くマッチし得る場合には、行ってもよい。 may be made if a given example can be successfully matched with one of those substitutions.
さらに、正規表現生成器110は、いくつかの実施形態では、正規表現における空白に関して最大許容度までデフォルトするよう構成され得る。本明細書で説明されるように、正規表現生成器110は、例えば、場合によっては、広範なマッチするコードよりもリテラルストリングフラグメントを好み、中括弧内の繰り返し出力に最小および最大境界を適用することによって、より特定の正規表現を生成するよう構成され得る。しかしながら、空白に関しては、正規表現生成器110は、いくつかの実施形態では、最大許容度までデフォルトするよう構成されてもよい。すなわち、任意の空白(例えば、単語間に現れる1つの空白であっても)について、正規表現生成器110は、それを正規表現カテゴリコード
Additionally,
として維持するよう構成されてもよく、繰り返しを、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.
例えば、正規表現生成器110は、Unicodeカテゴリコードの長さが2つのキャラクタ(例えば
For example, the
)であり、繰り返し数が4以下の場合、またはUnicodeカテゴリコードの長さが3つのキャラクタ(例えば ) and the number of repetitions is 4 or less, or the Unicode category code is 3 characters long (e.g.
)であり、繰り返し数が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
様々な追加の実施形態では、正規表現生成器110は、様々なタイプの対になった括弧(たとえば、{および})を検出し、否定されたキャラクタクラス(たとえば、[^}]*)を有する正規表現を生成するよう構成され得る。例えば、ユーザによって強調表示された(または別様に選択された)テキスト内、またはシステムへの陽性/陰性例他の入力内では、開いた括弧または閉じた括弧が検出され、対応する括弧とマッチされるかまたはペアリングされてもよい。いくつかの例では、
In various additional embodiments,
のうちのいくつかまたはすべてを含む複数の異なるタイプの括弧が入力テキスト内で検出されてもよい。したがって、一例として、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
例示的な実施形態では、強調表示がちょうど括弧によって包含されるとき、括弧内に隠すこと(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
それは、より一般的であり、もたらされる偽陰性がより少ないであろう。
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
図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
そのような実施形態の性能を改善および/または最適化するために、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
図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
図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
図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(n2)のランタイム性能を示すことができ、ここで、nはストリングの長さである。そのような実現例を2だけの代わりにk個のストリングに拡張すると、指数関数的なランタイム性能O(nk)をもたらし得、なぜならば、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
図9は、陽性のキャラクタシーケンス例および陰性のキャラクタシーケンス例に基づいて正規表現を生成するための処理900を示すフローチャートである。ステップ901において、正規表現生成器110は、陽性例に対応する1つまたは複数の入力データキャラクタシーケンスを受け取ることができる。ステップ902において、正規表現生成器110は、受け取った陽性例に基づいて正規表現を生成し得る。したがって、ステップ901~902は、入力データキャラクタシーケンスに基づいて正規表現を生成するために、上で論じた図3または図5において実行されるステップの一部またはすべてを含み得る。
FIG. 9 is a flowchart illustrating a
ステップ903において、正規表現生成器110は、陰性例に対応する1つの追加入力データキャラクタシーケンスを受け取ることができる。したがって、ステップ902で生成された正規表現とマッチしないように、陰性例を具体的に指定する。いくつかの実施形態では、ステップ903において受け取られた陰性例は、ステップ902において生成された正規表現に対して最初にテストされてもよく、陰性例が正規表現とマッチしないと判断された場合、さらなるアクションはとられない。しかしながら、この例では、ステップ903において受け取られた陰性例のうちの少なくとも1つはステップ902において生成された正規表現とマッチする、と仮定されてもよい。したがって、ステップ904では、ステップ902で生成された正規表現内で曖昧性除去位置を判断してもよい。いくつかの実施形態では、曖昧性除去位置は、(たとえば正規表現の始まりにおける)プレフィックス位置または(たとえば正規表現の終わりにおける)サフィックス位置のいずれかとして選択され得る。たとえば、正規表現生成器110は、陽性例を陰性例から区別するためにプレフィックスで必要とされるであろう第1の数のキャラクタと、陽性例を陰性例から区別するためにサフィックスで必要とされるであろう第2の数のキャラクタとを判断してもよい。次いで、正規表現生成器110は、必要とされる置換キャラクタの最短数に基づいてサフィックスまたはプレフィックスを選択し得る。場合によっては、曖昧性除去位置としてプレフィックスを使用することが、可読性のために好まれる(たとえば重み付けされる)ことがある。さらに他の例では、曖昧性除去位置は、正規表現のプレフィックスまたはサフィックスに対応しないミッドスパン位置であり得る。
At
ステップ905において、正規表現生成器110は、判断された位置で正規表現に挿入されると、陽性例を陰性例から区別することができるカスタムキャラクタクラスの置換シーケンス(またはより具体的には、カスタム「大括弧」正規表現キャラクタクラスのシーケンス)を判断することができる。いくつかの実施形態では、ステップ905において、正規表現生成器110は、陽性例および陰性例の各々から、曖昧性除去位置(または置換位置)に対応するテキストフラグメントを取り出し、次いで、それらテキストフラグメントを使用して、陽性例を陰性例から区別する置換シーケンスとして使用される弁別子を判断することができる。さらに、ステップ905で判断される弁別子置換シーケンスは、カスタムキャラクタクラスの、複数の異なる置換シーケンスを含むことができ、それらは、正規表現内の同じ位置または異なる位置のいずれかで置換されることができる。
In
上述したように、場合によっては、ステップ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
図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
上で注記したように、いくつかの実施形態では、陽性例および陰性例の両方が受け取られると、正規表現生成器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
別の例として、ユーザが陽性例「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
を生成してもよい。すなわち、置換キャラクタサブシーケンスは、正規表現のサフィックスについて、(たとえば、目的が、ビジネス電話番号とマッチする正規表現であると仮定して、)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:
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
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
別の例として、陽性例8amおよび陰性例9pmについて生成された正規表現は、 As another example, the regular expression generated for a positive example at 8am and a negative example at 9pm is
であるかもしれない。これは、カレット構文を使用する。場合によっては、正規表現生成器110は、より短い正規表現を好むように構成されてもよく、それは、ユーザとってより可読であり得るだけでなく、より正しい可能性があり得る。その原理は、今後、頻繁に出現するキャラクタは、今後再び出現する可能性がよりありそうであり、したがって、頻繁に出現するキャラクタに強調がおかれるべきである、というものである。一意のキャラクタ|Fp|がより少ない場合(出現するものはより頻繁に出現するため、一意性はより少ない)、これは、分母内にそれを有することによって、ヒューリスティックにおいて報酬を与えられる。
may be. This uses caret syntax. In some cases,
再び上記の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
したがって、図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,
図12は、ユーザインターフェイス内で受信されたユーザデータ選択を介して、正規表現を生成し、キャプチャグループに基づいてデータを抽出するための処理1200を示す別のフローチャートである。ステップ1201において、ステップ1101で上述したように、正規表現生成器110は、(たとえばデータリポジトリ130から)データを取り出し、そのデータをグラフィカルユーザインターフェイス内においてテーブル形式でレンダリング/表示することができる。ステップ1202において、正規表現生成器110は、特定のデータセル内のテキストフラグメントのユーザ強調表示の選択を受け取ることができる。ステップ1203において、正規表現生成器110は、選択されたデータセルの陽性例に基づいて正規表現を生成することができ、ステップ1204において、セル内で強調表示されたテキストフラグメントに基づいて正規表現キャプチャグループを作成することができる。ステップ1205において、正規表現生成器110は、生成された正規表現とマッチする、表示されたテーブル形式データ内の1つまたは複数の追加セルを判断することができ、ステップ1206において、生成された正規表現とマッチする追加セル内の対応するテキストフラグメントを抽出することができる。
FIG. 12 is another flowchart illustrating a
したがって、陽性例を供給することに加えて、ユーザは、(たとえばマウステキスト強調表示を介して、)選択された陽性例のいずれか内でテキストフラグメントを選択してもよい。これに応答して、正規表現生成器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
ユーザが陽性のデータ例を選択する例を用いて、ユーザが年を強調表示した場合、正規表現生成器110は正規表現
Using the example in which the user selects positive data examples, if the user highlights a year, the
を生成することができる。この例に示すように、正規表現生成器110は、年の周りに括弧を付けてあり、また、月および日の周りの古い括弧(交代のために使用)を?:レゲックス構文の使用により「非キャプチャ」グループに変換している。いくつかの実施形態では、抽出/キャプチャグループは、スパン境界上にあることが要求され得、そのような実施形態では、正規表現生成器110は、強調表示されたキャラクタ範囲を入力として取り得、最も近い位置指定子スパン境界を包含するようにそれを拡張し得る。しかしながら、他の例では、ミッドスパン抽出/キャプチャは、ユーザインターフェイスによってサポートされてもよい。
can be generated. As shown in this example, the
いくつかの実施形態では、ユーザインターフェイスは、第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
さらに、いくつかの例では、ユーザがユーザインターフェイス内で選択する(たとえばテキストを強調表示する)ことに応答して、動作を開始し、ダイアログを開くことができる。場合によっては、ダイアログは、メイン画面とのユーザ対話を妨げないフローティングツールボックスウィンドウなどの非モーダルダイアログであってもよい。ダイアログはまた、ユーザがどのような主要な操作を行っているかに応じて外観および/または機能性を変化させることもできる。したがって、そのような場合、ユーザは、キャプチャグループテキストフラグメントの修正、抽出などを開始するために、選択されたテキストを強調表示した後にさらなるメニューアイテムを検索する必要がない。 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
しかしながら、ユーザ強調表示は、自動強調表示内の性能に限定されないことを理解されたい。たとえば、ユーザ強調表示は、代替的に、他のユーザ強調表示内で実行されてもよい。別の例として、ユーザ強調表示は、代替的に、内側強調表示(たとえば、強調表示されたテキスト内でのさらに強調表示)なしで実行されてもよい。これらの代替例は、「ツイート」または他の長いストリング(たとえばブラウザ「ユーザエージェント」ストリング)を含むデータの列などの半構造化データに特に適している。 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,
図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
図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
図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
いくつかの実施形態では、ユーザインターフェイスを介して陰性例を指定することは、図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
図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
この例では、「抽出」ボタンが選択されたことに応答して、抽出操作が、下流の操作によって実行されるべき変換スクリプトのリストに追加され得る。いくつかの実施形態では、変換スクリプトのリストは、ユーザによるレビュー/修正のためにユーザインターフェイスの一部分に表示されてもよい。代替的に、抽出操作は、その場で実行されて、レゲックスキャプチャグループの内容(たとえば、陽性例のユーザ強調表示部分に対応する要素)を含む新たな列を生成してもよい。図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
図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
強調表示に基づいて、例別レゲックスダイアログボックス4230が現れる。例別レゲックスダイアログボックス4230は、ユーザによって指定された、指定された例4233を含む。この例では、バージョン番号"5.0"がユーザによって指定される。また、例別レゲックスダイアログボックス4230は、強調表示モード4250が単一レベル4251であることを示す。
Based on the highlighting, Regex By
図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
例示的な実施形態では、内側強調表示および外側強調表示は、異なる色またはカラーコードを用いることによって区別することができる。例えば、陽性例の外側強調表示は、淡緑色背景上に黒色テキストで示され得、陽性例の内側強調表示は、濃緑色背景上に淡緑色テキストで示され得る。 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
例別レゲックスダイアログボックス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
図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 from 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
図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
生成されたレゲックス4832は、3つの指定された例4833(例えば、"Mozilla 5.0"、"WindowsNT 6.1"および"MacOS X 10_6_8"」)に基づいて更新される。追加の外側および内側強調表示が、ユーザによって、指定された例4833において与えられるので、生成されたレゲックス4832もそれに応じて変化する。生成されたレゲックス4832は、例別レゲックスダイアログボックス4830に表示される。
The generated
図49は、いくつかの例示的実施形態による、多重強調表示を実行するための方法4900のフローチャートである。
FIG. 49 is a flowchart of a
ステップ4910において、ユーザは、データセット内のデータ(例えば、データフラグメント)を選択することができる。すなわち、ユーザは、外側強調表示(例えば、"Mozilla 5.0")および内側強調表示(例えば、"5.0")を選択することができる。ユーザは、第1のデータレコード4320において外側強調表示および内側強調表示を実行することができる。
At
ステップ4920で、ユーザが初期強調表示を実施した後、ユーザインターフェイスデータモデル生成器は、ステップ4910でユーザによって行われた強調表示に対応する、データセット内の同じレコードおよび/または他のレコード内のデータ(例えば、データフラグメント)を自動的に強調表示することができる。
At
ステップ4930では、正規表現を生成することができる。正規表現は、ステップ4910でユーザによって与えられる強調表示に基づいて、およびステップ4920でユーザインターフェイスデータモデル生成器によって実行される追加の強調表示に基づいて、生成される。
At
ユーザが強調表示結果に満足しない場合、ユーザは、追加の例を与えるために、追加のデータを強調表示することができる。したがって、ステップ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:
多重強調表示により、ユーザは、コマンド(例えば、抽出する、分割する、削除する、難読化する、置換する、および行をフィルタリングする)のいずれでも適用することができるデータ(例えばデータフラグメント)を容易に選択することができる。 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
正規表現生成器2420は、抽出する、分割する、削除する、難読化する、置換する、および行をフィルタリングする、を含むいくつかの異なるコマンドを実行することができる。したがって、正規表現生成器2420は、抽出データ生成器2411、分割データ生成器2412、削除データ生成器2413、難読化データ生成器2414、置換データ生成器2415、行フィルタリングデータ生成器2416を含むことができる。以下、正規表現作成サーバ2400の各構成要素についてより詳細に説明する。
The
抽出、分割、削除、難読化、置換、および行フィルタリングコマンドが説明されるが、例示的な実施形態は、追加のコマンドを実行するよう構成され得る。また、正規表現生成器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
分割コマンドは、デリミタとして用いられる特定の正規表現の存在に基づいて、複数の異なる列の作成をもたらすことができる。例えば、コンマ(「,」)がマッチされるべきパターンとして与えられる場合、コンマは、抽出操作中にデリミタとして用いられる。単一のコンマを含む抽出されるべき各データは、コンマにおいて分割され、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
図27は、いくつかの例示的実施形態による、分割コマンドを実行するための方法2700のフローチャートを示す。図27の例では、データを分割するためのデリミタとしてハイフン文字が用いられる。
FIG. 27 shows a flowchart of a
ステップ2710において、ユーザは、「電話番号」列2510内において第1のレコード2520のハイフンを選択することができる。ハイフンは、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いてハイフンを強調表示することによって、選択され得る。図25Aに示される例では、ユーザは、第1のレコード2520内の第1のハイフン2511を強調表示している。
At
ステップ2720において、ユーザが第1のレコード2520内の第1のハイフンを強調表示した後、ユーザインターフェイスデータモデル生成器は、データレコード(例えば、図25Aに示すようなレコード2~25)の各々について、ユーザによって行われた選択に対応する電話番号列内の第1のハイフンのすべてを自動的に強調表示することができる。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード2520に対してユーザにより行われた強調表示に基づいて、電話番号列の残りのレコード(例えば、2~25)に対してどのような強調表示をすべきかを判断することができる。図面では25個のレコードが示されているが、例示的な実施形態は、25個よりも多いかまたは少ないレコードに分割コマンドを適用することができる。さらに、データセットは、何千または数千のレコードなど、多数のレコードを含むことができる。正規表現は、ユーザによって行われた最初の強調表示に基づいて、どのような追加の強調表示を同じレコード内、または追加のレコード内で実行すべきかを判断することができる。
At
ステップ2730では、強調表示が行われた後、強調表示に基づいて正規表現を生成することができる。図25Aは、ユーザによって実行された強調表示、および正規表現生成器によって実行された自動強調表示に基づいて生成される、生成されたレゲックス2532を示す。生成される正規表現は、ユーザによって行われる強調表示の変化に基づいて更新される。
At
ステップ2740では、「例別レゲックス」ダイアログボックス2530が自動的に画面上に現れる。図25Aに示す例では、電話番号列2510のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス2530が現れるが、「例別レゲックス」ダイアログボックス2530は初期入力(例えば、ユーザによる第1のレコードの強調表示)後に現れることもできる。
At
図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"
ある例示的な実施形態では、最小スパニングツリーを、強調表示上ではなく、例上で用いることができる。したがって、与えられる各例に対して複数の強調表示があり、強調表示が重複する場合、最長共通サブシーケンスアルゴリズムの単一のコピーのみが、各例に対して実行される必要がある。与えられる例に対する強調表示が重複しない場合、最長共通サブシーケンスアルゴリズムは、強調表示の各々について実行することができる。 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
例示的な実施形態では、チェックボックスは、ユーザが第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
図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
ステップ2770では、分割コマンド結果を表示することができる。図26に示されるユーザインターフェイス2600に示されるように、電話番号列2510からの電話番号は、ここで3つの列2610,2620および2630に分割されている。列2610は、第1のハイフンの前に現れる電話番号の一部を含み、列2620は、第1のハイフンと第2のハイフンとの間に現れる電話番号の一部を含み、列2630は、第2のハイフンの後に現れる電話番号の一部を含む。デリミタとして機能するハイフンは2つあるため、電話番号は3つの列に分割される。一部の番号の場合、ある列は市外局番を市内局番とともに含み得、なぜならば、市外局番は第1のハイフンの前に現れるからである。電話番号について、その電話番号内の情報に基づいて、フィールドがポピュレートされることになる。電話番号が1つのハイフンのみを有する場合、その番号に対して2列の情報のみが現れる。
At
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
分割コマンドが実行されると、実行された分割コマンド(例えば、電話列分割)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 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
図28に示されるように、データセットがユーザインターフェイス2800に表示される。データセットは、ストリートアドレスを含む列2810を含むことができる。図28に示す例では、ユーザはアドレスからストリート番号2811を削除したい。削除コマンドがレコード2820の「street_address」の列2810で実施される場合、ストリートアドレス情報は、ユーザによって所望されるように削除されることができる。図28において、ユーザは、スプレッドシートの「ストリートアドレス」列内のストリート番号を識別するためにいくつかの陽性例を選択している。これらの例は、指定された例2833として現れる。次いで、ユーザは「削除」ボタンをクリックして、削除操作を開始する。図29は、ストリート番号が削除された結果のスプレッドシートを示す。したがって、削除コマンドは本質的に(空のストリング)と置換される。これは、「置換」コマンドに関して以下で論じるように、生成されたレゲックスを3つのキャプチャグループに変換することによって実現され得る。
The dataset is displayed in a
図30は、いくつかの例示的な実施形態による、削除コマンドを実行するための方法3000のフローチャートを示す。
FIG. 30 depicts a flowchart of a
ステップ3010において、ユーザは、削除のためにアドレス情報の一部を選択することができる。図28に示す例では、第1レコード2820について、アドレス情報のストリート番号部分2811が選択されている。アドレス情報のストリート番号部分2811は、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いてストリート番号部分を強調表示することによって、選択され得る。
At
ステップ3020において、ユーザが第1のレコード2820内のストリート番号部分2811を強調表示した後、ユーザインターフェイスデータモデル生成器は、データレコード(例えば、図28に示すレコード2~25)の各々について、「street_address」列2810内のストリート番号部分のすべてを自動的に強調表示することができる。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード2820に対して実行される強調表示に基づいて、「street_address」列2810内の残りのレコード(例えば、2~25)に対してどのような強調表示が実行されるべきかを判断することができる。図面では25個のレコードが示されているが、例示的な実施形態は、25個よりも多いかまたは少ないレコードに削除コマンドを適用することができる。正規表現は、ユーザによる最初の強調表示に基づいて、どのような追加の強調表示をすべきかを判断することができる。
At
ステップ3030では、正規表現が生成される。図28には、生成された正規表現2832が示されている。生成された正規表現により、ユーザは、どのデータを選択するかを容易に強調表示することができる。削除コマンドの場合、生成された正規表現により、ユーザは、どのデータを削除するかを容易に強調表示することができる。生成された正規表現は、ユーザおよび正規表現生成器によって行われる強調表示に対応する。ユーザは、「street_address」列2810のデータにおける強調表示を変更することによって、または正規表現2832における強調表示を変更することによって、強調表示を修正することができる。「street_address」列2810に対する変更は、生成される正規表現2832に反映される。生成される正規表現は、ユーザによって行われる強調表示の変更に基づいて更新される。
At
ステップ3040では、「street_address」列2810のすべてのストリート番号に対して強調表示を行った後、「例別レゲックス」ダイアログボックス2830を画面上に自動的に表示することができる。図28に示す例では、「street_address」列2810のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス2830が現れるが、「例別レゲックス」ダイアログボックス2830は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。指定された例2833は、ユーザによって与えられる例を識別する。
At
ステップ3050では、削除コマンドの選択を受け付けることができる。例えば、ユーザは、「例別レゲックス」ダイアログボックス2830において、「削除」ボタン2831を選択することができる。
At
削除コマンドの選択を受け付けた後、ステップ3060において、正規表現生成器2410の削除データ生成器2413は、強調表示に基づいてストリート番号を自動的に削除することができる。図28に示す例では、「street_address」レコードのすべてが強調表示を含んでいるため、図28に示すレコードの各々に対して削除コマンドが適用される。
After receiving the delete command selection, at
ステップ3070において、削除結果を表示することができる。図29に表示されるユーザインターフェイス2900に示されるように、「street address」列2810のストリートアドレスからのストリート番号は除去されている。ストリート番号は、適所で削除される。
At
削除コマンドが実行された後、実行された削除コマンド(例えば、ストリートアドレス列削除)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 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
難読化コマンドでは、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、スプレッドシートまたは他のデータビューからパターンとマッチするデータを難読化(例えば、削除するのではなく曖昧化)してもよい。データは、レコード内のデータのすべてが見えないように難読化され得る。例えば、ユーザは、セキュリティまたはプライバシーの理由から情報を難読化することを望む場合がある。 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"
図31に示されるように、データセットがユーザインターフェイス3100に表示される。データセットは、例えば社会保障番号に向けられた列3110を含む。難読化コマンドを示すために社会保障番号が用いられているが、データの列内のデータのいずれでも、ユーザによって望まれるように難読化され得る。例えば、ユーザは、クレジットカード情報または銀行口座情報など、任意の種類の取り扱いに注意を要する情報を難読化することを望む場合がある。
The dataset is displayed in a
社会保障番号は、第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
図33は、いくつかの例示的実施形態による、難読化コマンドを実行するための方法3300のフローチャートを示す。
FIG. 33 shows a flowchart of a
ステップ3310において、社会保障番号列3110内の第2のフィールド3112の選択が受け付けられる。選択されたフィールド3112は、第1のレコード3120について選択される。第2のフィールド3112は、ユーザが対話型ユーザインターフェイス上にいる場合、デバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いることによって、選択され得る。ユーザによって選択された第2のフィールドは、第1の色で強調表示され得る。ユーザによってなされた選択は、ダイアログボックス3130内の指定された例3133として与えられる。
At
ステップ3320では、社会保障番号列内の社会保障番号のすべてを、ステップ3320において実行される強調表示に対応するよう強調することができる。すなわち、列3110の社会保障番号内のすべての第2のフィールドは、第1の色で強調表示され、列3110の社会保障番号内のすべての第1のフィールド3111および第3のフィールド3113は、第2の色で強調表示されることになる。フィールドは、ユーザが修正されるフィールドと修正されないフィールドを容易に区別できるように、異なる色で強調表示される。
At
ユーザインターフェイスデータモデル生成器は、すべてのレコード(例えば、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
ステップ3030では、正規表現を生成することができる。図31には、生成された正規表現3132が例別ダイアログボックス3130に示されている。生成された正規表現により、ユーザは、どのデータを難読化すべきかを容易に強調することができる。ユーザは、「ssn」列3110のデータにおける強調表示を変更することによって、または生成された正規表現3132における強調表示を変更することによって、強調表示を修正することができる。「ssn」列3110への変更は、生成される正規表現3132に反映される。すなわち、ユーザが行ったデータセットに対する強調表示の変更に基づいて、生成される正規表現が更新される。
At
ステップ3340において、社会保障番号に対して強調表示が行われた後、「例別レゲックス」ダイアログボックス3130が画面上に自動的に現れることができる。図31に示す例では、社会保障番号列3110のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス3130が現れるが、「例別レゲックス」ダイアログボックス3130は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。「例別レゲックス」ダイアログボックス3130は、ユーザにより入力される指定された例3133を含む。また、「例別レゲックス」ダイアログボックス3130は、生成された正規表現3132を含む。
At
ステップ3350において、「難読化」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3130において、「難読化」ボタン3131を選択することができる。図31に示すように、ユーザは、難読化ボタン3131を選択することができる。
At
ステップ3360において、難読化コマンドが受信された後、正規表現生成サーバ2400の難読化生成器2414は、「ssn」列3110内の社会保障番号の第2のフィールドのすべてを自動的に難読化することができる。
At
ステップ3370では、難読化結果を表示することができる。図32は、いくつかの例示的実施形態による、データセット上に難読化コマンドの結果を表示するユーザインターフェイス3200を示す。図32に示すように、ユーザによって選択された第2のフィールド3112は、難読化されるべき強調表示されたフィールドの代わりに「##」に置き換えられる。したがって、社会保障列3110内の社会保障番号の第2のフィールド3112は、すべて、「##」に置換されている。すなわち、すべての社会保障番号に対する第2のフィールド3112が難読化されている。
At
難読化コマンドが実行された後、実行された難読化コマンド(例えば、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
置換コマンドは、ダイアログ内に例の前後を示す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
ステップ3710において、ユーザは、「street_address」列2810内で、ユーザが他のデータで置換することを望むフィールドを選択することができる。図34に示す例において、ユーザは、ストリートアドレスの「Drive」を「Dr.」に置換することを望む。図34に示すように、ユーザは、データセットの第5のレコード3420から「Drive」を選択することができる。置換されるべきデータは、ユーザが対話型ユーザインターフェイス上にいる場合、ユーザがデバイスのディスプレイ上で例えばマウスまたはジェスチャーを用いて置換されるべきデータを強調表示することによって、選択され得る。
At
ステップ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
ステップ3730において、正規表現3432が生成され得る。図35に示すように、3つの部分からなる生成された正規表現3532が示されている。3つの部分からなる生成された正規表現により、ユーザは、データの「Drive」部分、「Drive」よりも前の部分、または「Drive」よりも後の部分を容易に置換することができる。この例では、ユーザは、データの「Drive」部分を「Dr」と置き換え、ユーザは、ポップアップ「例別レゲックス」ダイアログボックス3530のプレビュースプレッドシートで結果を直ちに見ることができる。
At step 3730, a
図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".
ステップ3740では、すべてのレコードに対して強調表示が行われた後、「例別レゲックス」ダイアログボックス3430が画面上に自動的に現れる。図34に示す例では、「例別レゲックス」ダイアログボックス3430は、置換されるべきデータを含むすべてのレコードに対して強調表示が行われた後に現れるが、「例別レゲックス」ダイアログボックス3430は、初期入力(例えば、第5のレコードにおける「Drive」の強調表示)の後に現れることもできる。「例別レゲックス」ダイアログボックス3430は、指定された例3433と、生成された正規表現3432とを含むことができる。アドレス3434は陽性例であり、アドレス3435は陰性例である。
At
ステップ3750において、「置換」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3430上の「置換」ボタン3431を選択して、置換コマンドを開始することができる。
At
ステップ3760では、パネル3538および「~と置換」フィールド3537を表示して、どの情報が置換されているかを判断することにおいてユーザが支援することができる。図35に示されるように、パネル3538内で、ユーザは、初期アドレス、およびそのアドレスが置換されたときにどのように現れるかを見ることができる。例えば、アドレス内の「Drive」という語は、要素3539によって示されるように、アドレス内に「Dr.」として現れる。パネル3538は、置換コマンドが適用された場合に、データがどのように現れるかに関するプレビューをユーザに提供することにおいてユーザを支援することができる。
At
図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
ステップ3780では、置換結果を表示することができる。図36は、いくつかの例示的実施形態による、置換コマンドの結果をデータセットに表示するユーザインターフェイス3600を示す。図36に示されるユーザインターフェイス3600に示されるように、「Drive」を含むレコードは、今、「Dr.」と置換される。これにより、「street_address」列2810における「Drive」を含むレコードは、「Dr.」と置換される。
At
置換コマンドが実行された後、実行された置換コマンド(例えば、ストリートアドレス列置換)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 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
フィルタリング操作において、ユーザは、テキスト例を強調表示(または他の方法で選択)して、パターンに対応する正規表現を生成し、次いで、データをフィルタリングして、パターンとマッチするデータを含む(または除外する)ようにすることができる。「行フィルタリング」操作の例を図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
ステップ4110において、ユーザは、レコードをフィルタリングするために用いられるデータを選択することができる。図38に示す例では、ユーザは、「street address」列2810から「Avenue」を選択している。データは、ユーザがフィルタリングに用いられるデータを強調表示することによって、選択することができる。例えば、ユーザが対話型ユーザインターフェイス上にいる場合、データは、マウスを用いて、またはデバイスのディスプレイ上でジェスチャーを介して、選択することができる。
At
ステップ4120において、ユーザがフィルタリングに用いられるデータを強調表示した後、ユーザインターフェイスデータモデル生成器は、他のレコード内の対応するデータを自動的に強調表示することができる。例えば、ユーザインターフェイスデータモデル生成器は、レコード8、13、および19において「Avenue」という語を強調表示し得る。すなわち、ユーザインターフェイスデータモデル生成器は、第1のレコード3820に対して実行される強調表示に基づいて、「street_address」列2810の残りのレコード(例えば、2~25)に対してどのような強調表示が実行されるべきかを判断することができる。
At
ステップ4130では、ユーザによって選択された強調表示に基づいて正規表現を生成することができる。図39は、生成された正規表現を含むダイアログボックス3930を示す。
At
図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
ユーザは、「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"
ステップ4140では、強調表示が行われた後、「例別レゲックス」ダイアログボックス3930が自動的に画面上に現れる。図39に示す例では、「street_address」列2810のすべてのレコード(例えば、レコード1~25)に対して強調表示が行われた後に「例別レゲックス」ダイアログボックス3930が現れるが、「例別レゲックス」ダイアログボックス3930は初期入力(例えば、第1のレコードの強調表示)後に現れることもできる。
At
ステップ4150において、「行フィルタリング」コマンドの選択が受け付けられる。例えば、ユーザは、「例別レゲックス」ダイアログボックス3930において、「行フィルタリング」ボタン3931を選択することができる。ユーザは、ユーザインターフェイス内の「行フィルタリング」ボタン3931をクリックして、図38に示されるように、すべての他のタイプのアドレスをフィルタリング除去して「Avenue」アドレスのみを残すフィルタオプションを開始することができる。
At
ステップ4160では、行フィルタリングコマンドに関する確定が受け付けられる。具体的には、例3933によって識別されるレコードを保持する(保持ボタン3937)か、例3933によって識別されるレコードを削除する(削除ボタン3938)かの選択を受け付ける。「保持」ボタン3934または「削除」ボタン3935を選択した後、ユーザは、作成ボタン3936を選択してフィルタリングを開始することができる。
At
ステップ4170において、正規表現生成器2410の行フィルタリングデータ生成器2416は、ユーザによって入力されたフィルタリング基準に従ってレコードを自動的にフィルタリングすることができる。
At
ステップ4180では、行フィルタリングの結果を表示する。図40に示されるユーザインターフェイス4000に示されるように、レコードは、アドレスに「Avenue」を有するレコードのみが示されるようにフィルタリングされている。この例では、スプレッドシートは25を超えるレコードを含む。説明のため、「street_address」に「Avenue」を有する最初の25個のレコードが示されている。
At
行フィルタリングコマンドが実行されると、実行された行フィルタリングコマンド(たとえば、ストリートアドレス列行フィルタリング)は、データセットのための変換スクリプトに追加され得る。変換スクリプトは、データの列に適用されるコマンドを示す。変換スクリプトは、同じコマンドを別のデータセットに適用するために用いることができる。 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
ステップ5010において、初期選択を受け付けることができる。初期選択に基づいて正規表現が生成される。
At
例えば、ユーザは、「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
ステップ5030において、ユーザは陰性例を与えることができる。ユーザは、UIによって自動的に強調表示されたアプリケーションおよびバージョン番号のすべてを望むわけではないため、陰性例を与えてもよい。例えば、ユーザは、陰性例を与えるために「Windows NT 6.0」を選択してもよい。次いで、UIは「6.0」のバージョン番号を含むすべてのレコードを識別し得る。しかしながら、これは「6.0」バージョン番号を含む「Windows NT」以外のアプリケーションを識別する結果となり得る。
At
ステップ5040において、UIは、陰性例からコンテキストを判断する。「6.0」のバージョン番号を含むすべてのバージョン番号を強調表示する代わりに、UIは、ユーザによって与えられた例からコンテキストを判断する。すなわち、UIは、データレコードからバージョン番号「6.0」を識別するだけでなく、陰性例を含むレコードを識別するときに、レコードからアプリケーション名「Windows NT」を識別する。したがって、UIは、陰性例を含むレコードを識別するときに単に「6.0」を含むレコードを検索する代わりに、陰性例を含むレコードを識別するときに「Windows NT 6.0」を検索する。
At
陰性例からコンテキストを判断することは、図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
生成される正規表現は、陰性例から識別されるコンテキストに基づいて更新され得る。
したがって、例示的な実施形態は、陰性例を与える、より正確な方法を提供する。コンテキストは、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
ステップ5110では、陰性例が与えられた後、複数の強調表示があるかどうか、およびそれらの複数の強調表示がネスト化されているかどうか(内側+外側強調表示)が判断される。図51に示されるように、陰性例のコンテキストは、陰性例が与えられる(例えば、図50のステップ5030)のでなければ、判断されない。
In
ステップ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
ある例示的実施形態においては、最も遠い左のスパンが用いられる。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は、反復プロセスであり得る。例えば、フィルタリングは、陰性の強調表示が埋め込まれる場所の左側の各スパンについて実行され得る。データセットのフラグメントの強調表示は、陰性例のスパンとマッチしないフラグメントの各スパンについて除去され得る。すべての反復において、考慮中のスパンのリストは短くされることになる。
ステップ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
ある例示的実施形態においては、最も遠い右のスパンが用いられる。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は、反復プロセスであり得る。例えば、フィルタリングは、陰性の強調表示が埋め込まれる場所の右側のフラグメントの各スパンに対して実行され得る。データセットのフラグメントの強調表示は、陰性例のスパンとマッチしないフラグメントごとに除去され得る。すべての反復において、考慮中のスパンのリストは短くされることになる。
ステップ5140では、フラグメントのフィルタリングが実行される。陰性例の左側および右側のコンテキスト(たとえば、ステップ5120および5130で識別されるコンテキスト)に対応しない強調表示されたフラグメントが除去される。
At
コンテキストは、陰性例の左側および右側で用いられるが、例えば、左側コンテキストデータのみまたは右側コンテキストデータのみが存在する場合、左側または右側コンテキストのみが、陰性例についてコンテキストを識別するために用いられてもよい。また、図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:
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:
図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
いくつかの実施形態では、判読性を改善し、かつ適切なレベルの制限を達成するために、正規表現生成器110は、単一スパン交代を用いてもよい。説明のため、LCSアルゴリズムがステップ1804で実行された後、その出力(すなわち、正規表現への最終的な変換前の中間出力)は、最小および最大繰り返しカウントを各々が有するスパンの連なりとすることができる。スパンのリストから正規表現への単純な直接変換は、(例えば、疑問符「?」修飾子コードを用いて)オプションとして印される複数の正規表現コードをもたらし得る。対照的に、場合によっては、交代を含む正規表現を生成することが望ましい場合があり、これは、括弧で閉じられた垂直方向のバーで区切られた代替物として表現され得る(https://www.regular-expressions.info/altemation.htmlを参照のこと)。例えば、時間に関するスパンの正規表現への直接的な変換は、
In some embodiments, the
であり得る。しかしながら、この例では、正規表現生成器110は、その正規表現を、より判読性のある
can be However, in this example, the
に変換するよう構成され得る。その変換を実行するために、正規表現生成器110は、スパンの下にある元のストリングフラグメントを追跡し続けてもよく、すべての元のストリングフラグメントが少なくとも2つの所与の陽性例に現れる場合、それらの元のストリングフラグメントのリストが、(例えば、複数の任意選択の正規表現コードではなく、)垂直バーで区切られた代替物として出力されるべきである、と判断してもよい。
can be configured to convert to To perform that transformation, the
図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
ある実施形態では、各スパンデータ構造について、カテゴリコードの最小発生数およびカテゴリコードの最大発生数の両方が追跡され得る。所与の例の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,
いくつかの実施形態では、正規表現生成器110によるLCSアルゴリズムの実現例は、より短い出力を選択するよう構成され得る。上述のように、LCSアルゴリズムは、一般に、最長共通サブシーケンスを見つけるために用いられ得る。スパンを用いる正規表現の生成のために、LCSアルゴリズムを用いて、必要なシーケンス要素(本発明者らの場合、必要なスパン)の最長シーケンスを識別することができる。しかしながら、任意選択のスパンを含む実施形態では、LCSアルゴリズムは、共通シーケンス要素(例えばスパン)の数を最大化するという元の目標を、任意選択のスパンの数も同時に最小化しながら、保持するよう構成されてもよい。すなわち、元のLCSアルゴリズムにおいて、(共通シーケンス要素の数を最大化する観点から、)第1の例のストリングからシーケンス要素(例えばスパン)を消費するか、または第2の例のストリングからシーケンス要素を消費するかに関して、任意の選択を行うことができる。そのような場合、正規表現生成器110は、任意選択のスパンも考慮されると、より短い全体的な正規表現長をもたらすものを選択することができるLCSアルゴリズムの修正バージョンを実現してもよい。最終結果における正規表現が短いほど、判読性が向上する。
In some embodiments, the implementation of the LCS algorithm by
さらに、いくつかの実施形態では、正規表現生成器110によるLCSアルゴリズムの実現は、より多くの数の必要なスパンを好むよう構成され得る。すなわち、選択権を与えられると、規則表現生成部110は、人間の判読性を向上させるために、より少ない任意選択のスパンを伴うLCS出力を選択してもよい。
Additionally, in some embodiments, the implementation of the LCS algorithm by
いくつかの実施形態では、生成された正規表現は、任意選択のスパンで正規表現を開始するのではなく、必要なスパン(これは、人間の読者に対する精神的拠り所としても働き得る)で開始する場合、より可読性があり得る。したがって、場合によっては、結果として得られる選択肢が等しい数の遷移を有する場合、より早期の非任意選択のスパンを有する選択肢が選択され得る。加えて、正規表現生成器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
上述したように、場合によっては、陰性例は、任意選択のスパンに基づいてもよい。たとえば、ユーザは、「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
として表される日付のような交代を形成し得る。これらを検出するために、正規表現生成器110は、まず、LCSアルゴリズムの出力からのどのスパンが、所与の入力された陽性例のすべてにおいて実際に用いられるかを発見してもよい。これらの共通のスパンは、最初のスパンの前のファントムスパンおよび最後のスパンの後のファントムスパンとともに、アンカーポイントを構成し得る。連続するアンカーポイントのすべての対(少なくとも1つの非アンカースパンも間に有する)の間には、渡らなければならない「ブリッジ」がある。次いで、ブリッジごとに、正規表現生成器110は、(a)入力された陽性例ごとにブリッジスパンによってカバーされるストリングフラグメントを判断し、(b)本明細書で説明される技法を用いて各ストリングフラグメントを正規表現に変換し、次いで、(c)上記から重複を除去し、それらを正規表現交代構文に入れてもよい。
can form an alternation such as the date represented as . To detect these, the
任意の順序で出現する交代内の代替物の代わりに、それらをアルファベット順にソートすることもできる。より決定論的な出力を有することによって、生成されたレゲックスは、ユーザがタイピングする各キャラクタとともにレゲックスがリアルタイムで生成される場合のタイピングの最中など、入力される例におけるわずかな変化に対しては、あまり変化しないかもしれない。さらに、いくつかの進歩したレゲックスインタプリタは、交代に遭遇すると、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:
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
図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
さまざまな実施形態において、図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
である。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.
に置き換えることを試みることができる。二重疑問符は、非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)
上述したように、この例では、完全なLCSアルゴリズムは96回(たとえば3*2*2*2*2*2=96)実行される。
As mentioned above, in this example the full LCS algorithm is run 96 times (
しかしながら、他の実施形態では、正規表現生成器110は、性能向上を提供してもよく、それによって、上記のリストのうちの最初の3つの特性のみ(位置指定子、空白のプッシュ、および低濃度スパンのワイルドカードへの合体)が、コンビナトリック探索に加わってもよい。これは、遙かにより少ない数の完全なLCSアルゴリズムが実行されることになる結果となり得る(たとえば3*2*2=12回)。そのような実施形態では、上記リストの最後の3つの特性(Greedy量指定子、LCSアルゴリズムの共通トークン上での整列、ならびに
However, in other embodiments, the
)は、コンビナトリック探索に加わらないが、これらの特性は、最後に、個々におよび逐次、テストされ得る。そのような実施形態においては技術的利点が実現され得、なぜならば、探索空白をこのように分割することは、それでも、満足のいく正規表現が、性能において約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
1. A sequence of letters and numbers uninterrupted by spaces, punctuation, or symbols
の生成されたレゲックスに対応する、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
生成されたレグックスのスパン(すなわち、最終レゲックス生成前の中間結果)は、一緒に連結される。部分(例えば、強調表示前フラグメント、強調表示上フラグメント、および強調表示後フラグメント)についての生成されたレゲックスのスパンは、一緒に連結される。 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
ステップ5310において、初期強調表示選択を受け付けることができる。例えば、ユーザは、データの列内の第1のレコードからテキストフラグメントを選択することができる。図52に示す例では、ユーザは名前列において姓5210「Doe」を強調表示している。選択されたフラグメントは、「強調表示上」フラグメントとして識別することができる。選択されたフラグメントの前のフラグメントは、「強調表示前」フラグメントとして識別することができる。選択されたフラグメントの後のフラグメントは、「強調表示後」フラグメントとして識別することができる。
At
ステップ5320で、第2の強調表示選択を受け付けることができる。例えば、ユーザは、最初の強調表示選択と同じデータ列(例えば、名前列)内の第2のレコードからテキストフラグメントを選択することができる。図52に示す例では、名前列における姓5220「Williams」が強調表示されている。図52に示す第2の例では、ユーザは、ある姓も強調表示している。選択されたフラグメントは「強調表示上」フラグメントとして識別することができる。選択されたフラグメントの前のフラグメントは、「強調表示前」フラグメントとして識別することができる。選択されたフラグメントの後のフラグメントは、「強調表示後」フラグメントとして識別することができる。ユーザは、複数の例を与えることを望む場合があり、したがって、ユーザは、追加の強調表示された選択を与えてもよい。しかしながら、与えられる例は、明確に整列しなくてもよい。
At
ステップ5330では、フラグメントの整列が実行される。強調表示の前に生ずるフラグメントは一緒に整列され、強調表示後に生ずるフラグメントは一緒に整列され、強調表示後のフラグメントは一緒に整列される。したがって、図52に示す例では、「Jane」を含むフラグメント5211および「David」を含むフラグメント5221は、強調表示されたフラグメントの前に生ずるため、整列される。フラグメント5210「Doe」およびフラグメント5220「Williams」は、強調表示上で生ずるので、一緒に整列される。キャラクタを含まないフラグメント5215、およびフラグメント5222は、強調表示後に生ずるので整列される。
At
ステップ5340において、「強調表示前」フラグメントのためのレゲックスが生成される。例えば、第1のレゲックス5231が生成され得る。第1のレゲックス5231は、強調表示されたフラグメントの前のデータに基づいて、レゲックス生成器によって生成され得る。
At
ステップ5350において、「強調表示上」フラグメントのためのレゲックスが生成される。例えば、第2のレゲックス5231が生成され得る。第2のレゲックス5232は、強調表示されたフラグメント内のデータに基づいて、レゲックス生成器によって生成され得る。
At
ステップ5360において、「強調表示後」フラグメントのためのレゲックスが生成される。例えば、第3のレゲックス5231が生成され得る。第3のレゲックス5233は、強調表示されたフラグメントの後のデータに基づいて、レゲックス生成器によって生成され得る。
At
図53に示すように、3つの部分5231,5232,5233においてレゲックスが生成される。「強調表示前」フラグメントに対して第1のレゲックス5231が生成され、「強調表示上」フラグメントに対して第2のレゲックス5232が生成され、次いで、「強調表示後」フラグメントに対して第3のレゲックス4233が生成される。第1、第2、および第3のレゲックスを生成する順序を説明したが、レゲックスを生成する順序は様々であり得る。さらに、3つの部分について説明しているが、データ例の、3つよりも多い部分について、強調表示を行ってもよい。
Regex is generated in three
ステップ5370では、3つのレゲックスに対するスパンが連結される。すなわち、結果として生じる3つのレグックスを一緒に連結する代わりに、スパン(すなわち、最終レゲックス生成前の中間結果)が一緒に連結される。
At
ステップ5380において、連結された3つのスパンについて最長共通サブシーケンスが判断される。LCSは、強調表示前スパン、強調表示上スパン、および強調表示後スパン上でLCSアルゴリズムを実行した出力について、判断され得る。
At
したがって、例示的な実施形態は、最長共通サブシーケンスが、同様に位置するデータに基づいて判断されるので、最長共通サブシーケンスを判断する、より正確な方法を提供する。 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
ステップ5410では、1つまたは複数の文字スパンおよび1つまたは複数の数字スパンが、単一の英数字スパンで置換される。例えば、HTML16進数カラーコードは、文字スパンおよび数字スパンのような3つの異なるスパンの代わりに、単一の英数字スパンに置換することができる。<span style="color:#FF030A">BUY NOW!</span>のようなHTML16進数カラーコードでは、3つの異なるスパン(例えば、文字スパン、数字スパン、および別の文字スパン)の代わりに単一の英数字スパンFF030Aが用いられる。
At
いくつかのデータフラグメント例は、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
ステップ5430では、データフラグメント例について置換前インデックスおよび置換後インデックスを識別するマッピングが生成される。各データフラグメント例に対してマッピングが生成される。
At
ステップ5440では、多数の予め置換されたスパンを識別することができる。
図55は、いくつかの例示的実施形態による、句読点スパンおよび記号スパンを表示するユーザインターフェイス5500を示す。図55に示すように、ユーザは、指定された例5533を与えている。ユーザによって指定された例は、例5534および5535を含む。レゲックス5532は、指定された例5533に基づいて生成される。
At
FIG. 55 shows a
図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
さまざまな実施形態において、サーバ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
図21に示される構成では、サーバ2112は、サーバ2112によって実行される機能を実現する1つ以上のコンポーネント2118、2120および2122を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム2100とは異なり得る多種多様なシステム構成が可能であることが認識されるはずである。したがって、図21に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
In the configuration shown in FIG. 21, server 2112 may include one or
ユーザは、クライアントコンピューティングデバイス2102、2104、2106および/または2108を用いて、1つまたは複数のアプリケーションを実行し、それは、本開示の教示に従って正規表現を生成してもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図21は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。
A user may use a
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえば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(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
サーバ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
分散型システム2100はまた、1つ以上のデータリポジトリ2114、2116を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ2114、2116のうちの1つ以上を用いて、システムにより生成された正規表現とマッチする新たなデータの列のような情報を格納することができる。データリポジトリ2114、2116は、さまざまな場所に存在し得る。たとえば、サーバ2112が使用するデータリポジトリは、サーバ2112のローカル位置にあってもよく、またはサーバ2112から遠隔の位置にあってもよく、ネットワークベースの接続または専用接続を介してサーバ2112と通信する。データリポジトリ2114、2116は、異なる種類であってもよい。特定の実施形態において、サーバ2112が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させてもよい。
Distributed
特定の実施形態では、データリポジトリ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,
ネットワーク2210は、クライアント2204、2206、および2208と、クラウドインフラストラクチャシステム2202との間におけるデータの通信および交換を容易にし得る。ネットワーク2210は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク2210は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
図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,
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム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
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
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
クラウドインフラストラクチャシステム2202は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム2202は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業であってもよい。プライベートクラウドモデルでは、クラウドインフラストラクチャシステム2202がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であってもよく、企業内の個人であってもよい。コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム2202および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有されてもよい。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
クライアントコンピューティングデバイス2204、2206、および2208は、異なるタイプであってもよく(たとえば図21に示されるデバイス2102、2104、2106および2108)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム2202が提供するサービスを要求することなど、クラウドインフラストラクチャシステム2202とのやり取りを行い得る。
いくつかの実施形態において、クラウドインフラストラクチャシステム2202が、管理関連サービスを提供するために実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、処理することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。たとえば、自動化された態様で正規表現を決定するために、ビッグデータ解析がクラウドインフラストラクチャシステム2202によって実行されてもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
In some embodiments, the processing performed by
図22の例に示されるように、クラウドインフラストラクチャシステム2202は、クラウドインフラストラクチャシステム2202が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース2230を含み得る。インフラストラクチャリソース2230は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。
As shown in the example of FIG. 22,
特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム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
クラウドインフラストラクチャシステム2202自体が、クラウドインフラストラクチャシステム2202の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム2202によるサービスのプロビジョニングを容易にするサービス2232を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
The
クラウドインフラストラクチャシステム2202は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現され得る。図22に示されるように、サブシステムは、クラウドインフラストラクチャシステム2202のユーザまたは顧客がクラウドインフラストラクチャシステム2202とやり取りすることを可能にするユーザインターフェイスサブシステム2212を含み得る。ユーザインターフェイスサブシステム2212は、ウェブインターフェイス2214、クラウドインフラストラクチャシステム2202が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス2216、およびその他のインターフェイス2218などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム2202がインターフェイス2214、2216、および2218のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求2234)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム2202が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム2202が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム2202によって提供される正規表現の自動生成関連サービスの申し込み注文を出すことができる。
図22に示される例のような特定の実施形態において、クラウドインフラストラクチャシステム2202は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)2220を含み得る。この処理の一部として、OMS2220は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
In certain embodiments, such as the example shown in FIG. 22,
適切に妥当性確認がなされると、OMS2220は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)2224を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS2224を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
Once properly validated,
クラウドインフラストラクチャシステム2202は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知2244を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。特定の実施形態では、正規表現の自動生成関連サービスを要求する顧客に対して、応答は、実行されるとユーザインターフェイスの表示を引き起こす命令を含み得る。
クラウドインフラストラクチャシステム2202はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム2202は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム2202は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
クラウドインフラストラクチャシステム2202は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム2202は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の実施形態において、クラウドインフラストラクチャシステム2202は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)2228を含む。IMS2228は、アイデンティティサービス、情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成されてもよい。
図23は、コンピュータシステム2300の例を示す。いくつかの実施形態では、コンピュータシステム2300は、上述のシステムのいずれかを実現するために用いられ得る。図23に示されるように、コンピュータシステム2300は、バスサブシステム2302を介して他のいくつかのサブシステムと通信する処理サブシステム2304を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット2306、I/Oサブシステム2308、ストレージサブシステム2318、および通信サブシステム2324を含み得る。ストレージサブシステム2318は、記憶媒体2322およびシステムメモリ2310を含む非一時的なコンピュータ読取り可能記憶媒体を含み得る。
FIG. 23 shows an
バスサブシステム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)バスなどを含み得る。
処理サブシステム2304は、コンピュータシステム2300の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム2300の処理リソースを、1つ以上の処理ユニット2332、2334などに組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム2304は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム2304の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用し得る。
Processing subsystem 2304 controls the operation of
いくつかの実施形態において、処理サブシステム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
特定の実施形態において、コンピュータシステム2300によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム2304によって実行される処理の一部をオフロードするために、処理加速ユニット2306を任意に設けることができる。
In certain embodiments, to accelerate the overall processing performed by
I/Oサブシステム2308は、コンピュータシステム2300に情報を入力するための、および/またはコンピュータシステム2300から、もしくはコンピュータシステム2300を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム2300に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
The I/
ユーザインターフェイス入力デバイスの他の例は、三次元(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
ストレージサブシステム2318は、コンピュータシステム2300によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム2318は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ読取り可能記憶媒体を提供する。処理サブシステム2304によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム2318に格納されてもよい。ソフトウェアは、処理サブシステム2304の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム2318はまた、本開示の教示に従って使用されるデータを格納するためのリポジトリを提供してもよい。
Storage subsystem 2318 provides a repository or data store for storing information and data used by
ストレージサブシステム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
一例として、限定を伴うことなく、図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
特定の実施形態において、ストレージサブシステム2318は、コンピュータ読取り可能記憶媒体2322にさらに接続可能なコンピュータ読取り可能記憶媒体リーダ2320も含み得る。リーダ2320は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
In particular embodiments, the storage subsystem 2318 may also include a computer readable
特定の実施形態において、コンピュータシステム2300は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム2300は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の実施形態において、コンピュータシステム2300は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム2300によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なり得るそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム2300によって同時に実行され得る。
In particular embodiments,
通信サブシステム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
通信サブシステム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,
特定の実施形態において、通信サブシステム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
通信サブシステム2324は、コンピュータシステム2300からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード2326、イベントストリーム2328、イベントアップデート2330などのような各種異なる形式で、コンピュータシステム2300に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えられてもよい。
Communications subsystem 2324 may be configured to communicate data from
コンピュータシステム2300は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つであればよい。コンピュータおよびネットワークの性質が常に変化しているため、図23に示されるコンピュータシステム2300の記載は、具体的な例として意図されているに過ぎない。図23に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。当業者であれば、本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法を認識するだろう。
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行されてもよい。加えて、動作の順序を再指定してもよい。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。 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つまたは複数のデータセル内のデータとに適用されるべき操作のためのコマンドを受け付けることと、
前記正規表現生成器が、前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに対して、前記操作を実行することと、
前記正規表現生成器が、前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに適用される前記操作に基づいて、第1の正規表現を生成することとを含む、方法。 A method of generating a regular expression comprising:
The regular expression generator includes displaying the data set in a tabular format within a user interface, the displayed tabular data set including a plurality of data cells, the method further comprising:
the regular expression generator receiving, via the user interface, a first selection of data from a first data cell of the plurality of data cells;
the regular expression generator determining one or more data cells of the plurality of data cells containing data matching the first selection of data;
The regular expression generator generates, via the user interface, a first selection of data and within the one or more data cells of the plurality of data cells matching the first selection of data. accepting commands for operations to be applied to the data of
wherein the regular expression generator for the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data; performing the operation;
The regular expression generator is applied to the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data. generating a first regular expression based on said manipulation.
前記データの前記第1の選択において1つまたは複数のデリミタを識別することと、
前記識別された1つまたは複数のデリミタに基づいて、前記データの第1の選択、および前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータを除去することと、
前記除去されたデータを含む追加の列を含むように前記テーブル形式のデータセットを更新することとを含む、請求項7に記載の方法。 The tabular data set includes a plurality of columns, and the extraction operation includes:
identifying one or more delimiters in the first selection of the data;
a first selection of data and within the one or more data cells of the plurality of data cells matching the first selection of data based on the identified one or more delimiters; removing the data of
and updating the tabular data set to include additional columns containing the removed data.
前記データの第1の選択において1つまたは複数のデリミタを識別することと、
前記識別された1つまたは複数のデリミタに基づいて、前記データの第1の選択、および前記第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータを分割することと、
前記分割に基づいて複数の追加の列を含むように前記テーブル形式のデータセットを更新することとを含む、請求項7に記載の方法。 The tabular data set includes a plurality of columns, and the data splitting operation includes:
identifying one or more delimiters in the first selection of data;
a first selection of the data and data in the one or more data cells of the plurality of data cells matching the first selection based on the identified one or more delimiters; dividing the
and updating the tabular data set to include additional columns based on the partitioning.
前記第1のデータセル内の前記データの第1の選択におけるキャラクタと、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータにおけるキャラクタとを、記号キャラクタで置換することと、
前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとを、前記置換されたキャラクタとともに表示することとを含む、請求項7に記載の方法。 The obfuscation operation includes:
Characters in a first selection of said data in said first data cell and characters in data in said one or more data cells of said plurality of data cells matching said first selection of data. with a symbolic character; and
displaying the first selection of data and data in the one or more of the plurality of data cells matching the first selection of data with the replaced characters; 8. The method of claim 7, comprising:
1つまたは複数の置換キャラクタを前記ユーザインターフェイスを介して受け付けることと、
前記1つまたは複数の置換キャラクタを、前記第1のデータセル内の前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに適用することと、
前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとを、前記1つまたは複数の置換キャラクタとともに表示することとを含む、請求項7に記載の方法。 The replacement operation is
accepting one or more replacement characters via the user interface;
replacing said one or more replacement characters with a first selection of said data in said first data cell and said one or more of said plurality of data cells matching said first selection of data; and applying to the data in the data cells of
said first selection of data and data in said one or more data cells of said plurality of data cells matching said first selection of data, along with said one or more replacement characters; 8. The method of claim 7, comprising displaying.
前記データの第1の選択、および前記第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータを含む、前記テーブル形式のデータセットの前記データの複数の行内のデータの行を識別することと、
前記データの第1の選択および前記第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータを含まない行を除去することによって、前記テーブル形式のデータセットの前記データの複数の行内のデータの行をフィルタリングすることと、
前記フィルタリングされたデータの行を表示することとを含む、請求項7に記載の方法。 The tabular data set includes a plurality of rows of data, the first selection of data, and the one or more data of the plurality of data cells matching the first selection of data. The data in the cell are located in different rows, and said row filtering operation comprises:
a plurality of said data in said tabular data set comprising a first selection of said data and data in said one or more data cells of said plurality of data cells matching said first selection; identifying rows of data within rows of
data in said tabular form by removing a first selection of said data and rows containing no data in said one or more data cells of said plurality of data cells matching said first selection; filtering rows of data within a plurality of rows of data of a set;
and displaying the rows of filtered data.
前記正規表現生成器が、前記ユーザインターフェイスを介して、前記複数のデータセルのうちの前記第1のデータセルからデータの第2の選択を受け付けることを含み、前記データの第2の選択は、前記第1のデータセル内のデータの第2のフラグメントの選択を受け付けることを含み、前記方法はさらに、
前記正規表現生成器が、前記データの第2の選択とマッチするデータを含む、前記複数のデータセルのうちの1つまたは複数のデータセルを判断することと、
前記正規表現生成器が、前記第1のデータセルからの前記データの第2の選択に基づいて、第2の正規表現を生成することとを含む、請求項1に記載の方法。 The method further comprises:
the regular expression generator receiving, via the user interface, a second selection of data from the first one of the plurality of data cells, the second selection of data comprising: The method further includes accepting a selection of a second fragment of data in the first data cell, the method further comprising:
the regular expression generator determining one or more data cells of the plurality of data cells containing data matching the second selection of data;
and generating a second regular expression based on the second selection of the data from the first data cell.
プロセッサと、
メモリと、
前記プロセッサに結合されるコンピュータ読取可能媒体とを備え、前記コンピュータ読取可能媒体は、方法を実現するために前記プロセッサによって実行可能な命令を格納し、前記方法は、
ユーザーインターフェイス内にデータセットをテーブル形式で表示することを含み、前記表示されたテーブル形式データセットは複数のデータセルを含み、前記方法はさらに、
前記ユーザインターフェイスを介して、前記複数のデータセルのうちの第1のデータセルからデータの第1の選択を受け付けることと、
前記データの第1の選択とマッチするデータを含む、前記複数のデータセルのうちの1つまたは複数のデータセルを判断することと、
前記ユーザインターフェイスを介して、前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに適用されるべき操作のためのコマンドを受け付けることと、
前記データの第1の選択、および前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータに対して、前記操作を実行することと、
前記データの第1の選択と、前記データの第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:
comprising displaying a data set in a tabular format within a user interface, the displayed tabular data set comprising a plurality of data cells, the method further comprising:
receiving, via the user interface, a first selection of data from a first data cell of the plurality of data cells;
determining one or more data cells of the plurality of data cells containing data matching the first selection of data;
applied via the user interface to the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data accepting commands for operations to be performed;
performing the operation on the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data;
based on said operation applied to said first selection of data and data in said one or more data cells of said plurality of data cells matching said first selection of data; generating one regular expression; and a regular expression generator server computer.
前記ユーザインターフェイスを介して、前記複数のデータセルのうちの前記第1のデータセルからデータの第2の選択を受け付けることを含み、前記データの第2の選択は、前記第1のデータセルにおけるデータの第2のフラグメントの選択を受け付けることを含み、前記方法はさらに、
前記データの第2の選択とマッチするデータを含む、前記複数のデータセルのうちの1つまたは複数のデータセルを判断することと、
前記第1のデータセルからの前記データの第2の選択に基づいて、第2の正規表現を生成することとを含む、請求項17に記載のサーバコンピュータ。 Further comprising one or more processors configured to implement the method, the method comprising:
receiving, via the user interface, a second selection of data from the first data cell of the plurality of data cells, the second selection of data in the first data cell; The method includes accepting a selection of a second fragment of data, the method further comprising:
determining one or more data cells of the plurality of data cells containing data matching the second selection of data;
generating a second regular expression based on the second selection of the data from the first data cell.
正規表現生成器が、データセットを、ユーザインターフェイス内でテーブル形式で表示することを含み、前記表示されるテーブル形式データセットは複数のデータセルを含み、前記動作はさらに、
前記正規表現生成器が、前記ユーザインターフェイスを介して、前記複数のデータセルのうちの第1のデータセルからデータの第1の選択を受け付けることと、
前記正規表現生成器が、前記データの第1の選択とマッチするデータを含む、前記複数のデータセルのうちの1つまたは複数のデータセルを判断することと、
前記正規表現生成器が、前記ユーザインターフェイスを介して、前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに適用されるべき操作のためのコマンドを受け付けることと、
前記正規表現生成器が、前記データの第1の選択と、前記データの第1の選択とマッチする前記複数のデータセルのうちの前記1つまたは複数のデータセル内のデータとに対して、前記操作を実行することと、
前記正規表現生成器が、前記データの第1の選択と、前記データの第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:
The regular expression generator includes displaying a data set in a tabular format within a user interface, the displayed tabular data set including a plurality of data cells, the act further comprising:
the regular expression generator receiving, via the user interface, a first selection of data from a first data cell of the plurality of data cells;
the regular expression generator determining one or more data cells of the plurality of data cells containing data matching the first selection of data;
The regular expression generator generates, via the user interface, a first selection of data and within the one or more data cells of the plurality of data cells matching the first selection of data. accepting commands for operations to be applied to the data of
wherein the regular expression generator for the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data; performing the operation;
The regular expression generator is applied to the first selection of data and data in the one or more data cells of the plurality of data cells matching the first selection of data. generating a first regular expression based on said manipulation.
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,273 | 2020-06-17 | ||
US16/904,273 US11354305B2 (en) | 2018-06-13 | 2020-06-17 | User interface commands for regular expression generation |
PCT/US2020/038429 WO2020263674A1 (en) | 2019-06-24 | 2020-06-18 | User interface commands for regular expression generation |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022538703A true JP2022538703A (en) | 2022-09-06 |
JPWO2020263674A5 JPWO2020263674A5 (en) | 2023-05-29 |
Family
ID=71670393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021539844A Pending JP2022538703A (en) | 2019-06-24 | 2020-06-18 | User interface commands for regular expression generation |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3987409A1 (en) |
JP (1) | JP2022538703A (en) |
CN (1) | CN113424178A (en) |
WO (1) | WO2020263674A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795315B (en) * | 2023-06-26 | 2024-02-09 | 广东凯普科技智造有限公司 | Method and system for realizing continuous display of character strings on LCD (liquid crystal display) based on singlechip |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US246A (en) | 1837-06-30 | Samuel rust | ||
US10210A (en) | 1853-11-08 | Screen oe winnowers | ||
US7792814B2 (en) * | 2005-09-30 | 2010-09-07 | Sap, Ag | Apparatus and method for parsing unstructured data |
US11372830B2 (en) * | 2016-10-24 | 2022-06-28 | Microsoft Technology Licensing, Llc | Interactive splitting of a column into multiple columns |
-
2020
- 2020-06-18 EP EP20742975.4A patent/EP3987409A1/en active Pending
- 2020-06-18 CN CN202080014471.1A patent/CN113424178A/en active Pending
- 2020-06-18 WO PCT/US2020/038429 patent/WO2020263674A1/en unknown
- 2020-06-18 JP JP2021539844A patent/JP2022538703A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3987409A1 (en) | 2022-04-27 |
WO2020263674A1 (en) | 2020-12-30 |
CN113424178A (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 | |
US11580166B2 (en) | Regular expression generation using span highlighting alignment | |
US11354305B2 (en) | User interface commands for regular expression generation | |
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 | |
JP7546571B6 (en) | Generating Regular Expressions for Negative Examples Using Context |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230519 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230519 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240613 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240702 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20241001 |