MCPcopy Create free account
hub / github.com/ChatLab/ChatLab / computeFriendScores

Function computeFriendScores

packages/core/src/query/contact-scoring.ts:146–168  ·  view source on GitHub ↗
(items: readonly T[])

Source from the content-addressed store, hash-verified

144}
145
146export function computeFriendScores<T extends FriendScoreInput>(items: readonly T[]): Map<T, ContactScoringResult> {
147 const messageScores = rankPercentiles(items, (item) => Math.log1p(nonNegative(item.privateMessageCount)))
148 const regularityByItem = new Map(items.map((item) => [item, computePrivateRegularity(item.activeMonths)]))
149 const regularityScores = rankPercentiles(items, (item) => regularityByItem.get(item) ?? 0)
150 const groupScores = rankPercentiles(items, (item) => nonNegative(item.commonGroupCount))
151 const result = new Map<T, ContactScoringResult>()
152
153 for (const item of items) {
154 result.set(
155 item,
156 computeFriendScore({
157 privateMessageScore: messageScores.get(item) ?? 0,
158 privateRegularityScore: regularityScores.get(item) ?? 0,
159 commonGroupScore: groupScores.get(item) ?? 0,
160 privateMessageCount: nonNegative(item.privateMessageCount),
161 activePrivateMonths: getActiveMonthIndexes(item.activeMonths).length,
162 commonGroupCount: nonNegative(item.commonGroupCount),
163 })
164 )
165 }
166
167 return result
168}
169
170export function computeNonFriendScore(components: NonFriendScoreComponents): ContactScoringResult {
171 const coOccurrenceScore = clamp01(components.coOccurrenceScore)

Callers 3

buildContactItemsFunction · 0.90

Calls 7

rankPercentilesFunction · 0.85
nonNegativeFunction · 0.85
computePrivateRegularityFunction · 0.85
computeFriendScoreFunction · 0.85
getActiveMonthIndexesFunction · 0.85
setMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected