IP Library Granted Patent US 8,799,987
Granted Patent B2
US 8,799,987 · App. 13/311,489 · Granted Aug 5, 2014

Updating system behavior dynamically using feature expressions and feature loops

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,799,987
App. No.
13/311,489
Granted
Aug 5, 2014
Kind
B2
Abstract

Behavior of an online system is modified dynamically using feature expressions and feature loops. A feature expression can be expressed as a combination of other features or feature expressions, thereby allowing specification of complex features. The sets of feature expressions and policies of an online system can be modified while the online system is running. Feature loops aggregate values of a feature expression across a plurality of actions, for example, number of occurrences of an event over a time interval. The online system evaluates a set of feature expressions in response to actions performed by users. Feature expressions are used to specify policies that determine how the online system reacts to certain types of user actions. The ability to dynamically modify the feature expressions and policies of the online system allows the online system to adapt to attacks by malicious users in a timely manner.

Claims (53)

1. A computer-implemented method comprising:

maintaining, by a computer processor, in an online system:

a plurality of feature expressions, where at least one of the feature expressions comprises an expression composing one or more other feature expressions of the plurality of feature expressions using operators, the expression capable of being processed by a computer processor to map a set of input values to an output value, wherein the feature expression evaluates to a value describing one or more entities in the online system,

wherein the plurality of feature expressions can be modified by performing one or more of addition of a new feature expression, deletion of an existing feature expression, or update of an existing feature expression, wherein the modification to the plurality of feature expressions is performed while the online system is executing, and

a set of policies, each policy comprising a precondition represented as a feature expression and a policy action, wherein the policy action is executed if the precondition is satisfied;

receiving information describing one or more actions performed by users of the online system, each action associated with entities of the online system; and

responsive to receiving information describing each action:

evaluating each feature expression from the plurality of feature expressions,

determining whether a precondition of a policy from the set of policies is satisfied based on feature expression of the precondition, and

responsive to the precondition of the policy being satisfied, executing the corresponding policy action.

2. The computer-implemented method of claim 1 , further comprising:

responsive to the plurality of feature expressions being modified, evaluating each feature expression of the modified plurality of feature expressions for subsequent user actions.

3. The computer-implemented method of claim 1 , wherein the set of policies can be modified by performing one or more of addition of a new policy, deletion of an existing policy, or updating an existing policy, wherein the modification to the set of policies is performed while the online system is executing.

4. The computer-implemented method of claim 3 , further comprising:

responsive to the set of policies being modified, evaluating each feature expression of the modified set of policies for subsequent user actions.

5. The computer-implemented method of claim 1 , wherein the plurality of feature expressions comprises a first feature expression comprising a sub-expression and a second feature expression comprising the sub-expression, the method comprising:

determining a value of the sub-expression; and

determining the values of the first feature expression and the second feature expression using the value of the sub-expression.

6. The computer-implemented method of claim 1 , wherein the online system is a social networking system, wherein an input to particular feature expression comprises information identifying a user and evaluating the particular feature expression comprises:

identifying other users connected to the identified user; and

evaluating a sub-expression of the particular feature expression for each of the other users connected to the identified user.

7. The computer-implemented method of claim 1 , wherein the online system is a social networking system, wherein a particular feature expression comprises a sub-expression and an input to the particular feature expression comprises information identifying a first user and a second user, wherein evaluating the particular feature expression comprises:

identifying other users connected to both the first user and the second user; and

evaluating the sub-expression for each of the other users connected to both the first user and the second user.

8. The computer-implemented method of claim 1 , wherein a user action comprises a message sent by a user to another user and a particular feature expression determines a value based on content of the message.

9. The computer-implemented method of claim 8 , wherein a policy action corresponding to the user action comprises determining whether the message sent is spam.

10. The computer-implemented method of claim 1 , wherein the online system further maintains feature loops, each feature loop aggregating values of a feature expression across a plurality of actions.

11. The computer-implemented method of claim 10 , wherein a feature loop aggregates changes to values of a feature expression over a time interval.

12. The computer-implemented method of claim 10 , wherein a feature loop aggregates the number of occurrences of a particular value obtained by evaluating a feature expression evaluating over a time interval.

13. The computer-implemented method of claim 10 , wherein a feature loop aggregates the number of occurrences of an event during a previous time interval.

14. The computer-implemented method of claim 10 , wherein a feature loop determines a number of users that performed an action of a particular type during a previous time interval.

15. The computer-implemented method of claim 10 , wherein a feature loop is evaluated periodically at a fixed time interval.

16. The computer-implemented method of claim 10 , wherein a result of a feature loop is stored in a distributed memory cache and evaluating the feature loop comprises periodically:

retrieving a value of a counter from the distributed memory cache;

re-evaluating a feature expression associated with the feature loop based on a previous time interval; and

updating the counter based on a value of the feature expression based on the previous time interval.

17. A computer-implemented method comprising:

maintaining, by a computer processor, in an online system, a plurality of feature expressions, wherein maintaining the plurality of feature expressions comprises evaluating the plurality of feature expressions for each user action, where at least one of the feature expressions comprises an expression composing one or more other feature expressions of the plurality of feature expressions using operators, the expression capable of being processed by a computer processor to map a set of input values to an output value, wherein the feature expression evaluates to a value describing one or more entities in the online system;

receiving information describing a modification to the plurality of feature expressions, the modification comprising one or more of: addition of a new feature expression, deletion of an existing feature expression, or update of an existing feature expression, wherein the modification to the plurality of feature expressions is performed while the online system is executing;

responsive to the plurality of feature expressions being modified, evaluating each feature expression of the modified plurality of feature expressions for a subsequent user action; and

responding to the subsequent user action based on the values of the feature expressions from the modified plurality of feature expressions.

18. The computer-implemented method of claim 17 , wherein the online system further maintains feature loops, each feature loop aggregating values of a feature expression across a plurality of actions and a response to each user action is determined based on the result of each feature loop evaluation.

19. The computer-implemented method of claim 18 , wherein a feature loop is evaluated periodically at a fixed time interval.

20. A computer program product comprising a non-transitory computer-readable storage medium containing instructions for:

maintaining, by a computer processor, in an online system:

a plurality of feature expressions, where at least one of the feature expressions comprises an expression composing one or more other feature expressions of the plurality of feature expressions using operators, the expression capable of being processed by a computer processor to map a set of input values to an output value, wherein the feature expression evaluates to a value describing one or more entities in the online system,

wherein the plurality of feature expressions can be modified by performing one or more of addition of a new feature expression, deletion of an existing feature expression, or update of an existing feature expression, wherein the modification to the plurality of feature expressions is performed while the online system is executing, and

a set of policies, each policy comprising a precondition represented as a feature expression and a policy action, wherein the policy action is executed if the precondition is satisfied;

receiving information describing one or more actions performed by users of the online system, each action associated with entities of the online system; and

responsive to receiving information describing each action:

evaluating each feature expression from the plurality of feature expressions,

determining whether a precondition of a policy from the set of policies is satisfied based on feature expression of the precondition, and

responsive to the precondition of the policy being satisfied, executing the corresponding policy action.

Assignments (2)
CHANGE OF NAME Recorded Nov 18, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058897/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2012
From: STEIN, CHRISTOPHER ALEXANDER; MANGLA, KARAN; CHEN, ZHIMIN; CHEN, ERDONG
To: FACEBOOK, INC.
Reel/Frame 027892/0869 →