IP Library Granted Patent US 11,501,068
Granted Patent B2
US 11,501,068 · App. 17/003,715 · Granted Nov 15, 2022

Message sentiment analyzer and feedback

Inventors: Anish Parikh (Longmont, CO); Evan M. Caron (Houston, TX)
Assignee: FairWords, Inc.
G06F40/274G06F40/205G06F40/30H04L51/02H04L51/046H04L65/40H04L51/04H04L67/30
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 11,501,068
App. No.
17/003,715
Granted
Nov 15, 2022
Kind
B2
Abstract

This disclosure describes systems, methods, and apparatus for monitoring keystrokes and determining whether to pass those keystrokes to a target application, for instance, to prevent compliance violations. Keystrokes or other inputs can be analyzed to determine if a non-compliant message is to be sent to an application layer, for instance via a semantic checker that considers phrase templates and parts-of-speech tagged tokenized portions of a message. If a non-compliant message is identified, then the keystrokes, or at least a last keystroke is precluded from reaching the target application or from being stored in temporary or long-term memory.

Claims (82)

1. A method of preventing corporate- and legal compliance-violating messages by precluding keystrokes associated with non-compliant messages from reaching a target application via operations occurring between hardware and application layers of a computing device, the method comprising:

capturing a keystroke data signal from a text input hardware device of the computing device, the keystroke data signal representing at least a sentence or a phrase;

determining at an end of the sentence or the phrase, via a processor, if the sentence or phrase is non-compliant by:

checking the sentence or phrase for any typos;

generating a first list of suggested typo fixes;

generating a second list of suggested sentences or phrases each incorporating one of the suggested typo fixes from the first list of suggested typo fixes;

determining risk scores for suggested sentences or phrases in the second list of suggested sentences or phrases;

aggregating the risk scores for the suggested sentences to form an aggregated risk score for the sentence or phrase;

comparing the aggregated risk score to a compliance violation threshold; and

if the aggregated risk score exceeds the compliance violation threshold, then deeming the sentence or phrase non-compliant and, at a layer between a hardware and an application layer, precluding at least a portion of the keystroke data signal representing at least the sentence or the phrase from reaching the target application in the application layer.

2. The method of claim 1 , wherein the keystroke data signal represents at least a first word and the method further comprising determining if the first word is non-compliant, and if so, then precluding at least a portion of the keystroke data signal representing at least the first word from reaching the target application.

3. The method of claim 2 , wherein the determining if the first word is non-compliant comprises comparing the first word to a list of non-compliant words.

4. The method of claim 2 , wherein the determining if the first word is non-compliant comprises:

creating postfixes;

comparing the postfixes to a spellchecker dictionary, and if one of the postfixes matches one or more words in the spellchecker dictionary, then lemmatizing the one of the postfixes and adding the one of the postfixes to a first list of lemmas, and if the one of the postfixes does not match the one or more words in the spellchecker dictionary, then generating the first list of suggested typo fixes, lemmatizing each suggested typo fix in the first list of suggested typo fixes to form lemma typo fix suggestions, and adding the lemma typo fix suggestions to the first list of lemmas; and

calculating a Damerau-Levenshtein edit (DL) distance for each lemma in the first list of lemmas and assigning non-compliant tags if lemmas associated with the DL distance are below a threshold.

5. The method of claim 4 , wherein the generating the second list comprises:

generating a list of modified sentences or phrases based on the sentence or phrase as modified by suggested typo fixes from the first list of suggested typo fixes;

accessing one or more phrase templates;

creating a second list of lemmas from the one or more phrase templates;

ordering the list of modified sentences or phrases based on an occurrence of words within each suggested sentence or phrase having a match in the second list of lemmas to form an ordered list of suggested sentences or phrases; and

selecting a top N of the ordered list of suggested sentences or phrases as the second list of suggested sentences or phrases.

6. The method of claim 5 , wherein the determining the risk score comprises:

for each of the suggested sentences or phrases in the second list of suggested sentences or phrases,

tokenizing the suggested sentence or phrase into tokens;

assigning each of the tokens a part of speech to form parts-of-speech-tagged tokens;

comparing the parts-of-speech-tagged tokens to the one or more phrase templates;

accumulating a score for the suggested sentence or phrase based on matches between parts-of-speech-tagged tokens and parts of the one or more phrase templates; and

returning the score as the risk score for the suggested sentence or phrase.

7. The method of claim 6 , further comprising:

determining a semantic graph for the suggested sentence or phrase;

comparing the semantic graph to the one or more phrase templates; and

adding a higher score to the risk score if there is a match to the semantic graph and adding a lower score to the risk score if there is not a match to the semantic graph.

8. The method of claim 1 , further comprising, displaying a pop-up window on a graphical interface when a non-compliant sentence or phrase is identified.

9. The method of claim 1 , further comprising, removing non-compliant parts of the sentence or the phrase from a graphical interface of the computing device and from a computer memory of the computing device.

10. A method of preventing corporate- and legal compliance-violating messages by precluding keystrokes associated with non-compliant messages from reaching a target application via operations occurring between hardware and application layers of a computing device, the method comprising:

capturing a keystroke data signal from a text input hardware device of the computing device, the keystroke data signal representing at least a sentence or phrase;

determining at an end of the sentence or the phrase, via a processor, if the sentence or phrase is non-compliant by:

determining an aggregated risk score for each sentence or phrase by identifying possible typo-based variations on the sentence or phrase, scoring the possible typo-based variations, and aggregating scores for the possible typo-based variations;

comparing the aggregated risk score to a compliance violation threshold; and

if the aggregated risk score exceeds the compliance violation threshold, then deeming the sentence or phrase non-compliant and, at a layer between a hardware and an application layer, precluding at least a portion of the keystroke data signal representing at least the sentence or the phrase from reaching the target application in the application layer.

11. The method of claim 10 , wherein the keystroke data signal represents at least a first word and the method further comprising determining if the first word is non-compliant, and if so, then precluding at least a portion of the keystroke data signal representing at least the first word from reaching the target application.

12. The method of claim 11 , wherein the determining if the first word is non-compliant comprises comparing the first word to a list of non-compliant words.

13. The method of claim 11 , wherein the determining if the first word is non-compliant comprises:

creating postfixes;

comparing the postfixes to a spellchecker dictionary, and if one of the postfixes matches one or more words in the spellchecker dictionary, then lemmatizing the one of the postfixes and adding the one of the postfixes to a first list of lemmas, and if the one of the postfixes does not match the one or more words in the spellchecker dictionary, then generating the first list of suggested typo fixes, lemmatizing each suggested typo fix in the first list of suggested typo fixes to form lemma typo fix suggestions, and adding the lemma typo fix suggestions to the first list of lemmas; and

calculating a Damerau-Levenshtein edit (DL) distance for each lemma in the first list of lemmas and assigning non-compliant tags if lemmas associated with the DL distance are below a threshold.

14. The method of claim 13 , wherein the determining the aggregated risk score comprises:

checking the sentence or phrase for any typos;

generating a first list of suggested typo fixes; and

generating a second list of suggested sentences or phrases each incorporating one of the suggested typo fixes from the first list of suggested typo fixes by:

generating a list of modified sentences or phrases based on the sentence or phrase as modified by suggested typo fixes from the first list of suggested typo fixes;

accessing one or more phrase templates;

creating a second list of lemmas from the one or more phrase templates;

ordering the list of modified sentences or phrases based on an occurrence of words within each suggested sentence or phrase having a match in the second list of lemmas to form an ordered list of suggested sentences or phrases; and

selecting a top N of the ordered list of suggested sentences or phrases as the second list of suggested sentences or phrases.

15. The method of claim 14 , wherein the determining the aggregated risk score further comprises:

for each of the suggested sentences or phrases in the second list of suggested sentences or phrases,

tokenizing the suggested sentence or phrase into tokens;

assigning each of the tokens a part of speech to form parts-of-speech-tagged tokens;

comparing the parts-of-speech-tagged tokens to the one or more phrase templates;

accumulating a score for the suggested sentence or phrase based on matches between parts-of-speech-tagged tokens and parts of the one or more phrase templates; and

returning the score as the risk score for the suggested sentence or phrase.

16. The method of claim 15 , further comprising:

determining a semantic graph for the suggested sentence or phrase;

comparing the semantic graph to the one or more phrase templates; and

adding a higher score to the risk score if there is a match to the semantic graph and adding a lower score to the risk score if there is not a match to the semantic graph.

17. The method of claim 10 , further comprising, displaying a pop-up window on a user display when a non-compliant sentence or phrase is identified.

18. The method of claim 10 , further comprising, removing non-compliant parts of the sentence or the phrase from a graphical interface of the computing device and from a temporary memory of the computing device.

19. A non-transitory, tangible computer readable storage medium, encoded with processor readable instructions to perform a method of preventing corporate- and legal compliance-violating messages by precluding keystrokes associated with non-compliant messages from reaching a target application via operations occurring between hardware and application layers of a computing device, the method comprising:

capturing a keystroke data signal from a text input hardware device of the computing device, the keystroke data signal representing at least a sentence or phrase; and

determining at an end of the sentence or the phrase, via a processor, if the sentence or phrase is non-compliant by:

determining an aggregated risk score for each sentence or phrase by identifying possible typo-based variations on the sentence or phrase, scoring the possible typo-based variations, and aggregating scores for the possible typo-based variations;

comparing the aggregated risk score to a compliance violation threshold; and

if the aggregated risk score exceeds the compliance violation threshold, then deeming the sentence or phrase non-compliant and, at a layer between a hardware and an application layer, precluding at least a portion of the keystroke data signal representing at least the sentence or the phrase from reaching the target application in the application layer.

20. The non-transitory, tangible computer readable storage medium of claim 19 , wherein the determining the risk score comprises:

for each of the suggested sentences or phrases in the second list of suggested sentences or phrases,

tokenizing the suggested sentence or phrase into tokens;

assigning each of the tokens a part of speech to form parts-of-speech-tagged tokens;

comparing the parts-of-speech-tagged tokens to one or more phrase templates;

accumulating a score for the suggested sentence or phrase based on matches between parts-of-speech-tagged tokens and parts of the one or more phrase templates; and

returning the score as the risk score for the suggested sentence or phrase.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2025
From: FAIRWORDS INC.
To: MYCOMPLIANCEOFFICE LIMITED
Reel/Frame 071263/0438 →
SECURITY INTEREST Recorded Jul 14, 2023
From: FAIRWORDS, INC.
To: ACCEL-KKR CREDIT PARTNERS SPV, LLC
Reel/Frame 064263/0407 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2020
From: PARIKH, ANISH; CARON, EVAN M.
To: FAIRWORDS, INC.
Reel/Frame 054410/0138 →
Continuity (10)
Continuation In Part 16884878 · May 27, 2020
Continuation 16363429 · Mar 25, 2019
Continuation 15640471 · Jul 1, 2017
Continuation In Part 15005132 · Jan 25, 2016
Continuation In Part 14572714 · Dec 16, 2014
Provisional Application 62891850 · Aug 26, 2019
Provisional Application 62357925 · Jul 1, 2016
Provisional Application 62107237 · Jan 23, 2015
Provisional Application 61916563 · Dec 16, 2013
Related Publication 20200394361A1 · Dec 17, 2020
Cited By (1)
US 12,282,739