Spaces:
Running
Running
File size: 1,427 Bytes
6dad1de e5ab379 6dad1de e5ab379 6dad1de e5ab379 6dad1de e5ab379 6dad1de e5ab379 6dad1de e5ab379 6dad1de |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from typing import List, Dict, Any
import numpy as np
from tinytroupe.content_generation import ContentVariant
from tinytroupe.agent.social_types import Content
from tinytroupe.agent import TinyPerson
from tinytroupe.social_network import NetworkTopology
from tinytroupe.ml_models import EngagementPredictor
class RankedVariant:
def __init__(self, variant: ContentVariant, score: float):
self.variant = variant
self.score = score
class VariantOptimizer:
"""Optimize and rank content variants"""
def __init__(self, predictor: EngagementPredictor):
self.predictor = predictor
def rank_variants_for_audience(self, variants: List[ContentVariant],
target_personas: List[TinyPerson],
network: NetworkTopology) -> List[RankedVariant]:
"""Rank variants by predicted performance"""
ranked = []
for variant in variants:
# Predict engagement for each persona
scores = []
for persona in target_personas:
prob = self.predictor.predict(persona, Content(text=variant.text), network)
scores.append(prob)
avg_score = np.mean(scores) if scores else 0.0
ranked.append(RankedVariant(variant, avg_score))
ranked.sort(key=lambda x: x.score, reverse=True)
return ranked
|