the-algorithm/src/scala/com/twitter/recos/user_video_graph/util/GetAllInternalTweetIdsUtil.scala
twitter-team ef4c5eb65e Twitter Recommendation Algorithm
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
2023-03-31 17:36:31 -05:00

34 lines
1.1 KiB
Scala

package com.twitter.recos.user_video_graph.util
import com.twitter.graphjet.algorithms.TweetIDMask
import com.twitter.graphjet.bipartite.api.BipartiteGraph
object GetAllInternalTweetIdsUtil {
def getAllInternalTweetIds(tweetId: Long, bipartiteGraph: BipartiteGraph): Seq[Long] = {
val internalTweetIds = getAllMasks(tweetId)
sortByDegrees(internalTweetIds, bipartiteGraph)
}
private def getAllMasks(tweetId: Long): Seq[Long] = {
Seq(
tweetId,
TweetIDMask.summary(tweetId),
TweetIDMask.photo(tweetId),
TweetIDMask.player(tweetId),
TweetIDMask.promotion(tweetId)
)
}
private def sortByDegrees(
encodedTweetIds: Seq[Long],
bipartiteGraph: BipartiteGraph
): Seq[Long] = {
encodedTweetIds
.map { encodedTweetId => (encodedTweetId, bipartiteGraph.getRightNodeDegree(encodedTweetId)) }
.filter { case (_, degree) => degree > 0 } // keep only tweetds with positive degree
.sortBy { case (_, degree) => -degree } // sort by degree in descending order
.map { case (encodedTweetId, _) => encodedTweetId }
}
}