IP Library Granted Patent US 9,996,575
Granted Patent B2
US 9,996,575 · App. 14/621,203 · Granted Jun 12, 2018

Automated social message stream population

Inventors: Michael Ben Fleischman (Somerville, MA); Matthew Miller (Malden, MA); Richard Douglas Whitcomb, Jr. (Winchester, MA); Mark Watabe (Cambridge, MA); Anthony Sciola (Somerville, MA)
Assignee: Twitter, Inc.
G06F17/30345G06F3/0482G06Q10/10H04L51/32G06Q50/01
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,996,575
App. No.
14/621,203
Granted
Jun 12, 2018
Kind
B2
Abstract

A messaging system automatically populates a stream of messages using only a seed selected by the requesting account holder. In one embodiment, the seed includes the streams of one or more of the “top” accounts of the messaging system. Here, “top” is according to any one of a number of different metrics stored in the messaging system. With knowledge of the seed, the messaging system automatically populates a stream for the requesting account holder, without requiring any other input. As a result, an account holder is provided with a fully functioning stream with very little effort or knowledge required on their part.

Claims (120)

1. A computer-executed method comprising:

providing, by a computer server, a list of a set of accounts of a messaging system to a client device, the set of accounts determined according to a metric;

receiving, at the computer server from a client operating the client device, a request for a stream of messages, the request comprising a seed specifying at least one of the set of accounts,

computing a vector matrix representing a measure of relevance between each account of the set of accounts;

storing the vector matrix in a first database;

determining a relevance of the seed to each account of the set of accounts using the vectors stored in the vector matrix and the seed;

selecting a subset of accounts of the set of accounts based on the determined relevances;

storing the subset of accounts in a second database distinct from the first database;

accessing a plurality of messages authored by the stored subset of accounts;

ranking the plurality of messages to determine messages to include in the message stream based on a relevance of the messages to the client and,

providing the stream to the client device by the computer server.

2. The computer-executed method of claim 1 wherein the messaging system hosts messages authored by the accounts, the messages visible to other accounts.

3. The computer-executed method of claim 1 further comprising:

ranking a plurality of accounts of the messaging system according to a metric; and

selecting the list of the set of accounts based on the rank.

4. The computer-executed method of claim 3 wherein the metric is a number of other accounts of the plurality of accounts of the messaging system that have formed unidirectional connections to the account being ranked.

5. The computer-executed method of claim 1 wherein the seed comprises a plurality of the accounts of the set of accounts.

6. The computer-executed method of claim 1 wherein determining the relevance of the seed to each of the set of accounts comprises:

generating a seed vector based on the seed and the vector matrix; and

for each account in the set of accounts:

combining the seed vector and a feature vector for the account from the vector matrix to determine the relevance of the seed to the account.

7. The computer-executed method of claim 1 wherein computing the vector matrix further comprises:

performing singular value decomposition to generate at least two matrices:

a diagonal matrix S comprising A×A dimensions, and

a follow matrix V comprising A×Y dimensions where Y is a number of accounts of the messaging system in the list of the set of accounts; and

combining the S and the V matrices to generate the vector matrix.

8. The computer-executed method of claim 1 wherein ranking one of the messages comprises:

determining a likelihood of engagement with the message based on engagement data stored by the messaging system, the engagement data comprising previous engagements by accounts of the messaging system with the message; and

ranking the message based on the likelihood of engagement.

9. The computer-executed method of claim 1 wherein ranking one of the messages comprises:

determining a time decay value based on an amount of time that has elapsed since the message was authored; and

ranking the message based on the time decay value.

10. The method of claim 1 wherein the first database is a high-density file system database and the second database is a fast access database.

11. A messaging system comprising:

a plurality of messaging databases associated with a plurality of messaging server instances, the messaging databases configured to store:

a plurality of accounts of the messaging system;

a plurality of messages authored by accounts of the messaging system;

a plurality of connections between the accounts of the messaging system;

a ranking computer server communicatively coupled to the plurality of databases, the ranking computer server configured to:

providing a set of accounts of the plurality of accounts of the messaging system to a client device, the set of accounts being determined according to a metric;

receive a request for a stream of messages from a front end server, the request comprising a seed specifying at least one of the set of accounts;

compute a vector matrix representing a measure of relevance between each account of the set of accounts;

store the vector matrix in a first database;

determine a relevance of the seed to each account of the set of accounts using the vectors stored in the vector matrix and the seed;

select a subset of accounts of the set of accounts based on the determined relevances;

store the subset of accounts in a second database distinct from the first database;

access a plurality of messages authored by the stored subset of accounts;

provide at least one of the messages to the front end server to send to the client device.

12. The messaging system of claim 11 , wherein to provide at least one of the messages to the client device, the ranking computer server is configured to:

rank the plurality of messages authored by the stored subset of accounts to determine messages to include in a message stream based on a relevance of the messages to the client;

provide the message stream to the front end server to send to the client device.

13. The messaging system of claim 11 wherein the messaging server instances are physically located at two geographically dissimilar locations.

14. The messaging system of claim 11 wherein to determine the top accounts of a messaging system according to a metric, the ranking computer server is further configured to:

rank the plurality of accounts of the messaging system according to a metric; and

select the list of the set of accounts based on the rank.

15. The messaging system of claim 14 wherein the metric is a number of other accounts of the plurality of accounts of the messaging system that have formed unidirectional connections to the account being ranked.

16. The messaging system of claim 11 wherein the seed comprises a plurality of the accounts of the set of accounts.

17. The messaging system of claim 11 wherein to compute the vector matrix the ranking computer server is configured to:

perform singular value decomposition to generate at least two matrices;

a diagonal matrix S comprising A×A dimensions, and

a follow matrix V comprising A×Y dimensions where Y is a number of accounts of the messaging system in the list of the set of accounts; and

combine the S and the V matrices to generate the vector matrix.

18. The messaging system of claim 11 wherein the messaging databases store engagement data, and wherein to rank one of the messages, the ranking computer server is further configured to:

access the engagement data stored in the messaging databases;

determine a likelihood of engagement with the message based on engagement data stored by the messaging system, the engagement data comprising previous engagements by accounts of the messaging system with the message; and

rank the message based on the likelihood of engagement.

19. The messaging system of claim 11 wherein ranking one of the messages comprises:

determining a time decay value based on an amount of time that has elapsed since the message was authored; and

ranking the message based on the time decay value.

20. The messaging system of claim 11 wherein the ranking computer server is further configured to:

receive a second request for a second stream of messages from the front end server, the request comprising a second seed selecting at least one different one of the set of accounts;

determine a relevance of the second seed to each of the top accounts, the determining comprising:

generating a second seed vector based on the second seed and the vector matrix;

for each account in the set of accounts

combining the second seed vector and a second feature vector for the account from the vector matrix to determine a relevance of the second seed to the account;

storing the relevance of each account to the second seed in the first database;

select a second subset of accounts of the set of accounts based on their determined relevance to the second seed;

storing the second subset accounts in the second database;

access a second plurality of messages authored by the stored second subset of accounts;

rank the second plurality of messages authored by the second stored subset of accounts to determine messages to include in a second message stream based on a relevance of the messages to the client; and

provide the second message stream to the front end server.

21. The messaging system of claim 11 wherein the ranking computer server is further configured to:

receive a request for additional messages for the stream from the front end server, the request comprising a second seed selecting at least one different one of the top accounts;

access the relevance of the seed to each of the set of accounts in the second database;

identify a secondary subset of the set of accounts based on their relevance to the seed;

access additional messages authored by the secondary subset accounts from the messaging databases;

rank the additional messages; and

provide the additional messages to the front end server to send to the client device.

22. The system of claim 11 wherein the first database is a high-density file system database and the second database is a fast access database.

23. A non-transitory computer-readable storage medium comprising instructions for generating relevant content for a message stream that when executed cause a processor to:

provide, by a computer server, a list of a set of accounts of a messaging system to a client device set of accounts determined according to a metric;

receiving, at the computer server from a client operating the client device, a request for a stream of messages, the request comprising a seed specifying at least one of the set of accounts;

computing a vector matrix representing a measure of relevance between each account of the set of accounts;

storing the vector matrix in a first database;

determining a relevance of the seed to each account of the set of accounts using the vectors stored in the vector matrix and the seed;

selecting a subset of accounts of the set of accounts based on the determined relevances;

storing the subset of accounts in a second database distinct from the first database;

accessing a plurality of messages authored by the stored subset of accounts;

ranking the plurality of messages to determine messages to include in the message stream based on a relevance of the messages to the client; and,

providing the stream to the client device by the computer server.

24. The non-transitory computer readable storage medium of claim 23 wherein the instructions, when executed, further cause the processor to:

rank a plurality of accounts of the messaging system according to a metric; and

select the list of the set of accounts based on the rank.

25. The non-transitory computer readable storage medium of claim 24 wherein the metric is a number of other accounts of the plurality of accounts of the messaging system that have formed unidirectional connections to the account being ranked.

26. The non-transitory computer readable storage medium of claim 23 wherein determining the relevance of the seed to each of the set of accounts further causes the processor to:

generate a seed vector based on the seed and the vector matrix; and

for each account in the set of accounts:

combine the seed vector and a feature vector for the account from the vector matrix to determine the relevance of the seed to the account.

27. The non-transitory computer readable storage medium of claim 23 wherein computing the vector matrix further causes the processor to:

perform singular value decomposition to generate at least two matrices:

a diagonal matrix S comprising A×A dimensions, and

a follow matrix V comprising A×Y dimensions where Y is a number of accounts of the messaging system in the list of the set of accounts; and

combine the S and the V matrices to generate the vector matrix.

28. The non-transitory computer readable storage medium of claim 23 wherein ranking one of the messages further causes the processor to:

determine a likelihood of engagement with the message based on engagement data stored by the messaging system, the engagement data comprising previous engagements by accounts of the messaging system with the message; and

rank the message based on the likelihood of engagement.

29. The non-transitory computer readable storage medium of claim 23 wherein ranking one of the messages further causes the processor to

determine a time decay value based on an amount of time that has elapsed since the message was authored; and

rank the message based on the time decay value.

30. The non-transitory computer readable storage medium of claim 21 , wherein the first database is a high-density file system database and the second database is a fast access database.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2015
From: FLEISCHMAN, MICHAEL BEN; MILLER, MATTHEW; WHITCOMB, RICHARD DOUGLAS, JR.; WATABE, MARK; SCIOLA, ANTHONY
To: TWITTER, INC.
Reel/Frame 035204/0835 →
Continuity (2)
Provisional Application 62072638 · Oct 30, 2014
Related Publication 20160124925A1 · May 5, 2016