This commit is contained in:
Faraz Razi 2023-07-17 21:42:16 -05:00 committed by GitHub
commit fd4eb4f30c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 25 deletions

View File

@ -64,6 +64,6 @@ We include Bazel BUILD files for most components, but not a top-level BUILD or W
## Contributing
We invite the community to submit GitHub issues and pull requests for suggestions on improving the recommendation algorithm. We are working on tools to manage these suggestions and sync changes to our internal repository. Any security concerns or issues should be routed to our official [bug bounty program](https://hackerone.com/twitter) through HackerOne. We hope to benefit from the collective intelligence and expertise of the global community in helping us identify issues and suggest improvements, ultimately leading to a better Twitter.
We invite the community to submit GitHub issues and pull requests to suggest improvements to the recommendation algorithm. We are working on tools to manage these suggestions and sync changes to our internal repository. Any security concerns or issues should be routed to our official [bug bounty program](https://hackerone.com/twitter) through HackerOne. We hope to benefit from the collective intelligence and expertise of the global community in helping us identify issues and suggest improvements, ultimately leading to a better Twitter experience.
Read our blog on the open source initiative [here](https://blog.twitter.com/en_us/topics/company/2023/a-new-era-of-transparency-for-twitter).
Please read our blog on the open-source initiative [here](https://blog.twitter.com/en_us/topics/company/2023/a-new-era-of-transparency-for-twitter).

View File

@ -28,36 +28,25 @@ The light ranker features pipeline is as follows:
Some of these components are explained below:
- Index Ingester: an indexing pipeline that handles the tweets as they are generated. This is the main input of
Earlybird, it produces Tweet Data (the basic information about the tweet, the text, the urls, media entities, facets,
etc) and Static Features (the features you can compute directly from a tweet right now, like whether it has URL, has
Cards, has quotes, etc); All information computed here are stored in index and flushed as each realtime index segments
become full. They are loaded back later from disk when Earlybird restarts. Note that the features may be computed in a
non-trivial way (like deciding the value of hasUrl), they could be computed and combined from some more "raw"
information in the tweet and from other services.
Signal Ingester: the ingester for Realtime Features, per-tweet features that can change after the tweet has been
indexed, mostly social engagements like retweetCount, favCount, replyCount, etc, along with some (future) spam signals
that's computed with later activities. These were collected and computed in a Heron topology by processing multiple
event streams and can be extended to support more features.
- User Table Features is another set of features per user. They are from User Table Updater, a different input that
processes a stream written by our user service. It's used to store sparse realtime user
information. These per-user features are propagated to the tweet being scored by
looking up the author of the tweet.
- Search Context Features are basically the information of current searcher, like their UI language, their own
produced/consumed language, and the current time (implied). They are combined with Tweet Data to compute some of the
features used in scoring.
- Index Ingester: This is an indexing pipeline that handles the tweets as they are generated. It is the main input of Earlybird, producing Tweet Data (the basic information about the tweet, such as the text, URLs, media entities, facets, etc.) and Static Features (features that can be computed directly from a tweet, such as whether it has a URL, cards, quotes, etc.). All information computed here is stored in the index and flushed as each real-time index segment becomes full. They are loaded back later from disk when Earlybird restarts. Note that the features may be computed in a non-trivial way (like deciding the value of hasUrl), as they could be computed and combined from some more "raw" information in the tweet and from other services.
The scoring function in Earlybird uses both static and realtime features. Examples of static features used are:
- Signal Ingester: This is the ingester for Realtime Features, which are per-tweet features that can change after the tweet has been indexed. They mostly include social engagements like retweetCount, favCount, replyCount, etc., along with some (future) spam signals that are computed with later activities. These features are collected and computed in a Heron topology by processing multiple event streams and can be extended to support more features.
- User Table Features: This is another set of features per user, which are from User Table Updater, a different input that processes a stream written by our user service. It is used to store sparse real-time user information. These per-user features are propagated to the tweet being scored by looking up the author of the tweet.
- Search Context Features: These are basically the information of the current searcher, such as their UI language, their own produced/consumed language, and the current time (implied). They are combined with Tweet Data to compute some of the features used in scoring.
The scoring function in Earlybird uses both static and real-time features. Examples of static features used are:-
- Whether the tweet is a retweet
- Whether the tweet contains a link
- Whether this tweet has any trend words at ingestion time
- Whether the tweet is a reply
- A score for the static quality of the text, computed in TweetTextScorer.java in the Ingester. Based on the factors
such as offensiveness, content entropy, "shout" score, length, and readability.
- tweepcred, see top-level README.md
- A score for the static quality of the text, computed in TweetTextScorer.java in the Ingester. Based on factors such as offensiveness, content entropy, "shout" score, length, and readability.
- Tweepcred (see top-level README.md)
Examples of realtime features used are:
Examples of real-time features used are:
- Number of tweet likes/replies/retweets
- pToxicity and pBlock scores provided by health models