Generativ dataintelligens

Bygg en nyhetsrekommendatorapplikation med Amazon Personalize | Amazon webbtjänster

Datum:

Med en mängd artiklar, videor, ljudinspelningar och andra medier som skapas dagligen mellan nyhetsmedieföretag, har läsare av alla slag – enskilda konsumenter, företagsprenumeranter och mer – ofta svårt att hitta nyhetsinnehåll som är mest relevant för dem. Att leverera personliga nyheter och upplevelser till läsarna kan hjälpa till att lösa detta problem och skapa mer engagerande upplevelser. Men att leverera verkligt personliga rekommendationer innebär flera viktiga utmaningar:

  • Fånga olika användarintressen – Nyheter kan spänna över många ämnen och även inom specifika ämnen kan läsarna ha olika intressen.
  • Adresserar begränsad läsarhistorik – Många nyhetsläsare har sparsam aktivitetshistoria. Rekommenderar måste snabbt lära sig preferenser från begränsad data för att ge värde.
  • Aktualitet och trending – Dagliga nyhetscykler innebär att rekommendationer måste balansera personligt innehåll med upptäckten av nya, populära berättelser.
  • Ändrade intressen – Läsarnas intressen kan utvecklas över tiden. Systemen måste upptäcka skift och anpassa rekommendationerna därefter.
  • Förklarbarhet – Att ge insyn i varför vissa berättelser rekommenderas bygger användarnas förtroende. Det ideala nyhetsrekommendationssystemet förstår individen och svarar på det bredare nyhetsklimatet och publiken. Att ta itu med dessa utmaningar är nyckeln till att effektivt koppla samman läsarna med innehåll som de tycker är informativt och engagerande.

I det här inlägget beskriver vi hur Amazon Anpassa kan driva en skalbar nyhetsrekommendatorapplikation. Denna lösning implementerades hos en Fortune 500 mediekund under H1 2023 och kan återanvändas för andra kunder som är intresserade av att bygga nyhetsrekommendatorer.

Lösningsöversikt

Amazon Personalize är en utmärkt passform för att driva en nyhetsrekommendationsmotor på grund av dess förmåga att tillhandahålla realtids- och batch-personaliserade rekommendationer i stor skala. Amazon Personalize erbjuder en mängd olika rekommendationsrecept (algoritmer), såsom User Personalization och Trending Now-recepten, som är särskilt lämpliga för att träna nyhetsrekommendatormodeller. Receptet för användaranpassning analyserar varje användares preferenser baserat på deras engagemang med innehåll över tid. Detta resulterar i anpassade nyhetsflöden som visar de ämnen och källor som är mest relevanta för en enskild användare. Receptet Trending Now kompletterar detta genom att upptäcka stigande trender och populära nyhetsartiklar i realtid för alla användare. Genom att kombinera rekommendationer från båda recepten kan rekommendationsmotorn balansera personalisering med upptäckten av aktuella berättelser med högt intresse.

Följande diagram illustrerar arkitekturen för en nyhetsrekommendatorapplikation som drivs av Amazon Personalize och som stöder AWS-tjänster.

Denna lösning har följande begränsningar:

  • Att ge personliga rekommendationer för just publicerade artiklar (artiklar publicerade för några minuter sedan) kan vara utmanande. Vi beskriver hur man mildrar denna begränsning längre fram i det här inlägget.
  • Amazon Personalize har ett fast antal interaktioner och objektdatauppsättningsfunktioner som kan användas för att träna en modell.
  • I skrivande stund ger Amazon Personalize inga rekommendationsförklaringar på användarnivå.

Låt oss gå igenom var och en av huvudkomponenterna i lösningen.

Förutsättningar

För att implementera denna lösning behöver du följande:

  • Historisk och realtidsanvändarklickdata för interactions dataset
  • Historisk och realtidsmetadata för nyhetsartiklar för items dataset

Ta in och förbered data

För att träna en modell i Amazon Personalize måste du tillhandahålla träningsdata. I den här lösningen använder du två typer av Amazon Personalize träningsdatauppsättningar: den interaktionsdataset och objektdatauppsättning. De interactions datauppsättningen innehåller data om interaktioner mellan användarobjekt och tidsstämpel, och items datasetet innehåller funktioner för de rekommenderade artiklarna.

Du kan använda två olika metoder för att få in träningsdata:

  • Gruppintag - Du kan använda AWS-lim att omvandla och inta interaktioner och objektdata som finns i en Amazon enkel lagringstjänst (Amazon S3) in i Amazon Personalize-datauppsättningar. AWS Glue utför extrahera, transformera och ladda (ETL) operationer för att anpassa data med Amazon Personalize datasets schema. När ETL-processen är klar placeras utdatafilen tillbaka i Amazon S3, redo för inmatning i Amazon Personalize via en datauppsättning import jobb.
  • Realtidsintag - Du kan använda Amazon Kinesis dataströmmar och AWS Lambda att mata in realtidsdata stegvis. En Lambda-funktion utför samma datatransformationsoperationer som batchintagsjobbet på individuell postnivå och matar in data i Amazon Personalize med hjälp av PutEvents och PutItems API: er.

I den här lösningen kan du också mata in vissa objekt och interaktionsdataattribut Amazon DynamoDB. Du kan använda dessa attribut under realtidsinferens för att filtrera rekommendationer efter affärsregler. Till exempel kan artikelmetadata innehålla företags- och branschnamn i artikeln. För att proaktivt rekommendera artiklar om företag eller branscher som användare läser om kan du registrera hur ofta läsarna engagerar sig i artiklar om specifika företag och branscher, och använda denna data med Amazon anpassa filter för att ytterligare skräddarsy det rekommenderade innehållet. Vi diskuterar mer om hur man använder objekt och interaktionsdataattribut i DynamoDB senare i det här inlägget.

Följande diagram illustrerar dataintagsarkitekturen.

Träna modellen

Huvuddelen av modellutbildningen bör fokusera på användaranpassningsmodellen, eftersom den kan använda alla tre Amazon Personalize-datauppsättningarna (medan Trending Now-modellen endast använder interactions dataset). Vi rekommenderar att du kör experiment som systematiskt varierar olika aspekter av träningsprocessen. För kunden som implementerade den här lösningen körde teamet över 30 experiment. Detta inkluderade att modifiera interactions och items datauppsättningsfunktioner, justering av längden på interaktionshistoriken som tillhandahålls till modellen, justering av Amazon Personalize-hyperparametrar och utvärdering av om en explicit användares datauppsättning förbättrade offlineprestanda (relativt ökad träningstid).

Varje modellvariation utvärderades baserat på mätvärden som rapporterats av Amazon Personalize på träningsdatan, såväl som anpassade offlinemätvärden på en holdout-testdatauppsättning. Standardmått att överväga inkluderar medelmedelprecision (MAP) @ K (där K är antalet rekommendationer som presenteras för en läsare), normaliserad diskonterad kumulativ vinst, genomsnittlig reciprok rangordning och täckning. För mer information om dessa mätvärden, se Utvärdera en lösningsversion med mätvärden. Vi rekommenderar att du prioriterar MAP @ K av dessa mätvärden, som fångar det genomsnittliga antalet artiklar som en läsare klickade på bland de K-artiklar som rekommenderas dem, eftersom MAP-måttet är en bra proxy för (verkliga) klickfrekvenser för artiklar. K bör väljas baserat på antalet artiklar som en läsare kan se på en dator eller mobil webbsida utan att behöva rulla, vilket gör att du kan utvärdera rekommendationseffektiviteten med minimal läsaransträngning. Implementering av anpassade mätvärden, som rekommendationsunikhet (som beskriver hur unik rekommendationsutdatan var i poolen av kandidatanvändare), kan också ge insikt i rekommendationseffektiviteten.

Med Amazon Personalize låter den experimentella processen dig bestämma den optimala uppsättningen datauppsättningsfunktioner för både User Personalization och Trending Now-modellerna. Trending Now-modellen finns inom samma Amazon Personalize datagrupp som användaranpassningsmodell, så den använder samma uppsättning av interactions datauppsättningsfunktioner.

Generera rekommendationer i realtid

När en läsare besöker ett nyhetsföretags webbsida kommer ett API-anrop att göras till nyhetsrekommendaren via Amazon API Gateway. Detta utlöser en Lambda-funktion som anropar Amazon Personalize-modellernas slutpunkter för att få rekommendationer i realtid. Under slutledning kan du använda filter för att filtrera den initiala rekommendationen baserat på artikel- eller läsarinteraktionsattribut. Till exempel, om "Nyhetsämne" (som sport, livsstil eller politik) är ett artikelattribut, kan du begränsa rekommendationer till specifika nyhetsämnen om det är ett produktkrav. På samma sätt kan du använda filter på läsarinteraktionshändelser, som att exkludera artiklar som en läsare redan har läst.

En viktig utmaning med realtidsrekommendationer är att effektivt inkludera just publicerade artiklar (även kallade kalla artiklar) i rekommendationsutdata. Nyss publicerade artiklar har inga historiska interaktionsdata som rekommendationer normalt förlitar sig på, och rekommendationssystem behöver tillräckligt med handläggningstid för att bedöma hur relevanta just publicerade artiklar är för en specifik användare (även om de bara använder signaler om förhållandet mellan användarobjekt).

Amazon Personalize kan automatiskt upptäcka och rekommendera nya artiklar som tas in i items dataset varannan timme. Men eftersom det här användningsfallet är fokuserat på nyhetsrekommendationer, behöver du ett sätt att rekommendera nya artiklar så snart de har publicerats och redo för läsarnas konsumtion.

Ett sätt att lösa detta problem är genom att utforma en mekanism för att slumpmässigt infoga just publicerade artiklar i den slutliga rekommendationsutgången för varje läsare. Du kan lägga till en funktion för att styra hur många procent av artiklarna i den slutliga rekommendationsuppsättningen som nyss var publicerade artiklar, och i likhet med den ursprungliga rekommendationsutgången från Amazon Personalize kan du filtrera just publicerade artiklar efter artikelattribut (som "Nyhetsämne" ) om det är ett produktkrav. Du kan spåra interaktioner på just publicerade artiklar i DynamoDB när de börjar sippra in i systemet, och prioritera de mest populära just publicerade artiklarna under rekommendationsefterbehandlingen, tills de just publicerade artiklarna upptäcks och bearbetas av Amazon Personalize-modellerna.

När du har din slutliga uppsättning rekommenderade artiklar skickas denna utdata till en annan efterbearbetande Lambda-funktion som kontrollerar utdata för att se om det överensstämmer med förspecificerade affärsregler. Dessa kan inkludera att kontrollera om rekommenderade artiklar uppfyller specifikationerna för webblayout, till exempel om rekommendationer visas i ett webbläsargränssnitt. Om det behövs kan artiklar omplaceras för att säkerställa att affärsregler uppfylls. Vi rekommenderar att ranka om genom att implementera en funktion som gör att artiklar med högre rankning endast kan falla ner i rankningen en plats i taget tills alla affärsregler är uppfyllda, vilket ger minimal relevansförlust för läsarna. Den slutliga listan över efterbehandlade artiklar returneras till webbtjänsten som initierade begäran om rekommendationer.

Följande diagram illustrerar arkitekturen för detta steg i lösningen.

Generera batchrekommendationer

Personliga nyhetsinstrumentpaneler (genom realtidsrekommendationer) kräver att en läsare aktivt söker efter nyheter, men i våra hektiska liv idag är det ibland bara lättare att få dina bästa nyheter skickade till dig. För att leverera personliga nyhetsartiklar som ett e-postsammandrag kan du använda en AWS stegfunktioner arbetsflöde för att generera batchrekommendationer. Arbetsflödet för batchrekommendationer samlar in och efterbearbetar rekommendationer från vår användaranpassningsmodell eller Trending Now-modellens slutpunkter, vilket ger flexibilitet att välja vilken kombination av personliga och trendiga artiklar team vill skicka till sina läsare. Utvecklare har också möjlighet att använda Amazon Personalize parti slutledning funktion; Men i skrivande stund stöder inte skapande av ett Amazon Personalize batch-slutledningsjobb inkludering av objekt som tas in efter att en anpassad Amazon Personalize-modell har tränats, och det stöder inte receptet Trending Now.

Under ett batchinferens Step Functions-arbetsflöde delas listan över läsare upp i batcher, bearbetas parallellt och skickas till ett efterbearbetnings- och valideringslager innan den skickas till e-postgenereringstjänsten. Följande diagram illustrerar detta arbetsflöde.

Skala rekommendationssystemet

För att effektivt skala behöver du också nyhetsrekommendatorn för att ta emot ett växande antal användare och ökad trafik utan att skapa någon försämring av läsarupplevelsen. Amazon Personalize modellslutpunkter inbyggt automatisk våg för att möta ökad trafik. Ingenjörer behöver bara ställa in och övervaka en minimivariabel för provisionerade transaktioner per sekund (TPS) för varje Amazon Personalize-slutpunkt.

Utöver Amazon Personalize är nyhetsrekommendationsapplikationen som presenteras här byggd med hjälp av serverlösa AWS-tjänster, vilket gör att ingenjörsteam kan fokusera på att leverera den bästa läsarupplevelsen utan att behöva oroa sig för underhåll av infrastruktur.

Slutsats

I denna uppmärksamhetsekonomi har det blivit allt viktigare att leverera relevant och aktuellt innehåll för konsumenter. I det här inlägget diskuterade vi hur du kan använda Amazon Personalize för att bygga en skalbar nyhetsrekommendator, och de strategier som organisationer kan implementera för att möta de unika utmaningarna med att leverera nyhetsrekommendationer.

För att lära dig mer om Amazon Personalize och hur det kan hjälpa din organisation att bygga rekommendationssystem, kolla in Amazon Personalize Developer Guide.

Lycklig byggnad!


Om författarna

Bala Krishnamoorthy är Senior Data Scientist på AWS Professional Services, där han hjälper kunder att bygga och distribuera AI-drivna lösningar för att lösa deras affärsutmaningar. Han har arbetat med kunder inom olika sektorer, inklusive media och underhållning, finansiella tjänster, hälsovård och teknik. På fritiden tycker han om att umgås med familj/vänner, hålla sig aktiv, prova nya restauranger, resa och kickstarta dagen med en rykande varm kopp kaffe.

Rishi Jala är en NoSQL-dataarkitekt med AWS Professional Services. Han fokuserar på att arkitektur och bygga mycket skalbara applikationer med hjälp av NoSQL-databaser som Amazon DynamoDB. Han brinner för att lösa kundproblem och levererar skräddarsydda lösningar för att driva framgång i det digitala landskapet.

plats_img

Senaste intelligens

plats_img