IP Library Granted Patent US 9,588,966
Granted Patent B2
US 9,588,966 · App. 14/804,802 · Granted Mar 7, 2017

Data sorting for language processing such as POS tagging

Inventor: Matthias Gerhard Eck (Mountian View, CA)
Assignee: Facebook, Inc.
G06F17/28G06N5/022
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 9,588,966
App. No.
14/804,802
Granted
Mar 7, 2017
Kind
B2
Abstract

Technology is disclosed that improves language coverage by selecting sentences to be used as training data for a language processing engine. The technology accomplishes the selection of a number of sentences by obtaining a group of sentences, computing a score for each sentence, sorting the sentences based on their scores, and selecting a number of sentences with the highest scores. The scores can be computed by dividing a sum of frequency values of unseen words (or n-grams) in the sentence by a length of the sentence. The frequency values can be based on posts in one or more particular domains, such as the public domain, the private domain, or other specialized domains.

Claims (71)

1. A method for obtaining engine training data that has high coverage comprising:

receiving a set of potential training data snippets comprising one or more n-grams;

for each selected snippet of two or more of the potential training data snippets, computing a snippet score for the selected snippet by:

identifying one or more n-grams of the selected snippet as unseen n-grams;

obtaining a frequency value for the identified unseen n-grams;

computing a sum of the obtained frequency values;

computing a length value of the selected snippet; and

computing the snippet score for the selected snippet by dividing the sum of the obtained frequency values by the length value of the selected snippet;

sorting the set of potential training data snippets, as sorted snippets, based on the computed snippet scores;

selecting, based on snippet locations in the sorted snippets, one or more of the potential training data snippets as the engine training data; and

storing the engine training data in a memory, wherein the engine training data is used by an engine to perform automated language processing functions.

2. The method of claim 1 , wherein at least some of the potential training data snippets originated as posts to a social media website.

3. The method of claim 1 , wherein identifying the one or more n-grams of the selected snippet as unseen n-grams comprises:

comparing n-grams of the selected snippet to a data structure identifying seen n-grams;

identifying the unseen n-grams based on the unseen n-grams not being identified in the data structure identifying seen n-grams; and

adding, to the data structure identifying seen n-grams, the identified unseen n-grams.

4. The method of claim 1 , wherein the frequency value for each selected unseen n-gram of the identified unseen n-grams is based on a count of the selected unseen n-gram in a specified language corpus.

5. The method of claim 4 , wherein the specified language corpus is a set of social media posts.

6. The method of claim 1 , wherein selecting one or more of the potential training data snippets as the engine training data comprises:

creating a new list of seen n-grams;

identifying the highest scoring snippet in the sorted set of potential training data snippets;

adding the identified snippet to the engine training data;

adding, to the new list of seen n-grams, one or more n-grams from the identified snippet;

removing the identified snippet from the sorted set of potential training data snippets; and

iteratively, until a number of snippets in the engine training data is at a threshold:

recognizing a next top scoring snippet;

recalculating the snippet score for that recognized next top scoring snippet based on the new list of seen n-grams;

re-sorting that recognized next top scoring snippet into the sorted set of potential training data snippets; and

if that recognized next top scoring snippet remains the top scoring snippet:

adding that recognized next top scoring snippet to the engine training data;

removing that recognized next top scoring snippet from the sorted set of potential training data snippets; and

adding, to the new list of seen n-grams, one or more n-grams from that recognized next top scoring snippet.

7. The method of claim 1 further comprising using the engine training data to train a classifier component of an engine to perform automated language processing functions.

8. The method of claim 7 , wherein the trained engine is a POS tagging engine that performs automated POS tagging language processing functions.

9. The method of claim 7 , wherein the trained engine is a machine translation engine that performs automated language translation processing functions.

10. The method of claim 7 , wherein the trained engine is a language correction engine that performs automated spelling correction processing functions.

11. The method of claim 1 , wherein identifying the one or more n-grams of the selected snippet as unseen n-grams comprises determining whether any n-gram of the selected snippet with a length of no more than two words is an unseen n-gram.

12. A system for generating a language processing engine using high-coverage training data, the system comprising:

an interface configured to receive a set of potential training data snippets, each potential training data snippet comprising one or more n-grams;

an n-gram scorer configured to, for each selected snippet of two or more of the potential training data snippets, compute a snippet score for the selected snippet by:

identifying one or more n-grams of the selected snippet as unseen n-grams;

obtaining a frequency value the identified unseen n-grams;

computing a length value of the selected snippet; and

computing the snippet score for the selected snippet based on a comparison of the obtained frequency values and the length value of the selected snippet; and

an n-gram sorter configured to sort the set of potential training data snippets, as sorted snippets, based on the computed snippet scores, and wherein the n-gram sorter configured to store the potential training data snippets in a memory;

wherein the language processing engine is created using multiple of the potential training data snippets based on their order in sorted set of potential training data snippets to perform automated language processing functions.

13. The system of claim 12 , wherein the n-gram scorer identifies the one or more n-grams of the selected snippet as unseen n-grams by:

comparing n-grams of the selected snippet to a data structure identifying seen n-grams;

identifying the unseen n-grams based on the unseen n-grams not being identified in the data structure identifying seen n-grams; and

adding, to the data structure identifying seen n-grams, the identified unseen n-grams.

14. The system of claim 12 , wherein the frequency value for each selected unseen n-gram of the identified unseen n-grams is based on a count of the selected unseen n-gram in a set of social media posts.

15. The system of claim 12 , wherein the length value of the selected snippet is based on a count of words in the selected snippet.

16. The system of claim 12 , wherein the language processing engine is one of:

a POS tagging engine;

a machine translation engine; or

a spelling or grammar correction engine.

17. The system of claim 12 , wherein the n-gram scorer identifies the one or more n-grams of the selected snippet as unseen n-grams by determining whether any n-gram with a length of no more than two words from the selected snippet is an unseen n-gram.

18. A non-transitory computer-readable storage medium storing instructions that, when executed by a computing system, cause the computing system to perform operations for obtaining engine training data that has high coverage, the operations comprising:

receiving a set of potential training data snippets comprising one or more n-grams;

for each selected snippet of two or more of the potential training data snippets, computing a snippet score for the selected snippet by:

identifying one or more n-grams of the selected snippet as unseen n-grams;

obtaining a frequency value for the identified unseen n-grams;

computing a length value of the selected snippet; and

computing the snippet score for the selected snippet based on a comparison of the obtained frequency values and the length value of the selected snippet; and

selecting multiple of the potential training data snippets as the engine training data based on a comparison of the snippet scores assigned to the potential training data snippets; and

storing the engine training data in a memory, wherein the engine training data is used by an engine to perform automated language processing functions.

19. The computer-readable storage medium of claim 18 , wherein at least some of the potential training data snippets originated as posts to a social media website.

20. The computer-readable storage medium of claim 18 , wherein identifying the one or more n-grams of the selected snippet as unseen n-grams comprises:

comparing n-grams of the selected snippet to a data structure identifying seen n-grams;

identifying the unseen n-grams based on the unseen n-grams not being identified in the data structure identifying seen n-grams; and

adding, to the data structure identifying seen n-grams, the identified unseen n-grams.

Assignments (2)
CHANGE OF NAME Recorded May 5, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 059858/0387 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2015
From: ECK, MATTHIAS GERHARD
To: FACEBOOK, INC.
Reel/Frame 036604/0337 →
Continuity (1)
Related Publication 20170024376A1 · Jan 26, 2017