IP Library Granted Patent US 8,131,758
Granted Patent B2
US 8,131,758 · App. 11/964,163 · Granted Mar 6, 2012

Techniques for recognizing multiple patterns within a string

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,131,758
App. No.
11/964,163
Granted
Mar 6, 2012
Kind
B2
Abstract

Techniques for recognizing multiple patterns within a string of characters are presented. A dictionary is hierarchically organized, such that leaf nodes within the dictionary represents words defined in the dictionary. A string of characters are received. Each character within the string is traversed by attempting to match it with a character defined in the dictionary. As long as a match continues with the dictionary the characters within the string are traversed. Once a longest possible match to a word within the dictionary is found, the next character following the last matched character for the string is processed.

Claims (34)

1. A machine-implemented method, comprising:

organizing characters from words into a hierarchy, the words are obtained from a dictionary and organized into the hierarchy, each node of the hierarchy representing a single character representing a single letter and each first character of a particular word appears as a particular node within the hierarchy, and each leaf node of the hierarchy represents a particular one of the words, each word representing a common word, a domain specific word, an acronym for that word, a colloquialism for that word, an abbreviation for that word, a proper name, or a common misspelling for that word, and representing the dictionary as a directory where each character from each word is stored as its own independent subdirectory and a folder within the directory, each word also including an annotation indicating the origin of that word;

receiving a target string;

iterating each target character of the string and attempting to assemble a substring of the target characters that match to a particular leaf node of the hierarchy; and

identifying target words from the target string in response matched substrings found.

2. The method of claim 1 , wherein iterating further includes considering each target character as a potential start to a new word within the dictionary and persisting each target character that continues to match a potential word within the dictionary until it is determined that a match occurs or does not occur.

3. The method of claim 1 , wherein iterating further includes maintaining, during each iteration, a first pointer to a current target character and a processing pointer to a last potential matching target character to assist in assembling the substring.

4. The method of claim 3 , wherein iterating further includes advancing the first pointer to a next target character when a match is not found with the current target character.

5. The method of claim 3 , wherein iterating further includes advancing the first pointer to a location within the target string beyond a length of the substring when the substring is a match unless the location is beyond a total length of the target string in which case iterating ceasing with the match of the substring.

6. A machine-implemented method, comprising:

receiving characters associated with a string each character representing a single letter;

iteratively traversing the characters of the string finding substrings that match words of a hierarchically organized dictionary until each character of the string has been traversed, the hierarchically organized dictionary is a hierarchy where each node is a single character and where each leaf node represents a particular one of the words, and each word representing a common word, a domain specific word, an acronym for that word, a colloquialism for that word, an abbreviation for that word, a proper name, or a common misspelling for that word, the hierarchically organized dictionary stored as a directory where each character of each word is stored as its own independent sub-directory and a folder within the directory and each word including an annotation indicating an origin of that word; and

returning each substring, which is found from the string and that is also located in the hierarchically organized dictionary, to a requesting service for subsequent processing by that requesting service.

7. The method of claim 6 , wherein iteratively traversing further includes allowing a configurable number of garbage characters to be ignored in a middle of a particular one of the found substrings.

8. The method of claim 6 , wherein iteratively traversing further includes allowing a configurable number of replacement characters to be included in a middle of a particular one of the found substrings.

9. The method of claim 8 , wherein allowing further includes recognizing the replacement characters as special substitute characters permissible for dictionary words defined in the hierarchically organized dictionary.

10. The method of claim 6 , wherein iteratively traversing further includes traversing each character for a longest matching length for a word found in the hierarchically organized dictionary before advancing to a next character in the string for processing.

11. The method of claim 10 , wherein traversing further includes advancing to the next character by the longest matching length when a word is found, the longest matching length representing a word length for the word found.

12. The method of claim 6 , wherein iteratively traversing further includes advancing to an immediate next character in the string when a prior character being traversed is not a match to words defined in the hierarchically organized dictionary.

13. A system, comprising:

a hierarchically organized dictionary of words residing in a machine-accessible and computer-readable medium and accessible to a substring matching service that executes on a machine, the hierarchically organized dictionary of words stored in the machine-accessible and computer-readable medium as a directory where each character of each word is stored as its own independent sub-directory and a folder of the directory, and each word including an annotation indicating an origin of that word;

the substring matching service implemented in a machine-accessible and computer-readable medium and to process on the machine;

the substring matching service parses each character of a target string looking for a longest successive match of a substring of those characters within the hierarchically organized dictionary, each character representing a letter, the hierarchically organized dictionary of words is assembled so that each node of a hierarchy is a single character and each leaf node presents a particular word from the hierarchically organized dictionary of words and the substring matching service returns each of the substrings found to a requesting service for subsequent processing and manipulation by that requesting service, and each word representing a common word, a domain specific word, an acronym for that word, a colloquialism for that word, an abbreviation for that word, a proper name, or a common misspelling for that word.

14. The system of claim 13 , wherein the hierarchy is organized as a tree data structure where the leaf nodes of the tree data structure represents the words defined in the hierarchically organized dictionary of words.

15. The system of claim 14 , wherein the tree data structure is dynamically created as in memory or in cache data on behalf of the substring matching service.

16. The system of claim 13 , wherein the substring matching service permits a configurable number of garbage or replacement characters to appear or to be ignored for some of the found substrings.

17. The system of claim 13 , wherein substring matching service finds at least two or more substrings in the hierarchically organized dictionary for the target string being processed.

18. A system, comprising:

a password service implemented in a machine-accessible and computer-readable medium and is to process on a machine; and

a substring matching service implemented in a machine-accessible and computer-readable medium and is to process on the machine or a different machine;

wherein the password service passes passwords received as strings to the substring matching service, and the substring matching service identifies the substrings included within those passwords by searching a hierarchically organized dictionary of words and when matching substrings are found returning the matching substrings to the password service for evaluation against a policy and for subsequent action by the password service and the hierarchically organized dictionary of words is organized as a hierarchy, each node representing a single character and each leaf node represent a particular word from the hierarchically organized dictionary of words, each character representing a letter and, each word representing a common word, a domain specific word, an acronym for that word, a colloquialism for that word, an abbreviation for that word, a proper name, or a common misspelling for that word, and the hierarchically organized dictionary of words stored in the machine-accessible and computer-readable medium as a directory where each character of each word is stored as its own independent sub-directory and a folder of the directory and each word including an annotation indicating an origin of that word.

19. The system of claim 18 , wherein the substring matching service permits a configurable number of garbage or replacement characters to be ignored when attempting to match the substrings to the words of the hierarchically organized dictionary.

20. The system of claim 19 , wherein the policy precludes a particular password from being used when a particular found substring matches a particular word of the hierarchically organized dictionary.

21. The system of claim 20 , wherein the policy precludes a particular password from being used when a configurable number of found substrings matches for multiple words within the hierarchically organized dictionary.

Assignments (9)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 046486/0433 →
RELEASE (REEL 038041 / FRAME 0001) Recorded Jan 2, 2018
From: JPMORGAN CHASE BANK, N.A.
To: RPX CORPORATION; RPX CLEARINGHOUSE LLC
Reel/Frame 044970/0030 →
SECURITY AGREEMENT Recorded Mar 9, 2016
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038041/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2016
From: NOVELL INTELLECTUAL PROPERTY HOLDINGS, INC.
To: RPX CORPORATION
Reel/Frame 037809/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2011
From: CPTN HOLDINGS LLC
To: NOVELL INTELLECTUAL PROPERTY HOLDING, INC.
Reel/Frame 027325/0131 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2011
From: CPTN HOLDINGS LLC
To: NOVELL INTELLECTUAL PROPERTY HOLDINGS, INC.
Reel/Frame 027465/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2011
From: NOVELL,INC.
To: CPTN HOLDINGS LLC
Reel/Frame 027465/0227 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2008
From: MORRIS, CAMERON CRAIG; BURCH, LLOYD LEON; VEDULA, SRINIVAS
To: NOVELL, INC.
Reel/Frame 020446/0693 →