Analysera nyhetsflöden med analys i nära realtid med hjälp av bild- och bearbetning av naturligt språk

Azure Cosmos DB
Azure Functions
Azure Service Bus
Azure Translator Text
Azure Face

Det här exempelscenariot beskriver en pipeline för massinmatning och nästan realtidsanalys av dokument som kommer från offentliga RSS-nyhetsflöden. Den använder Azure Cognitive Services för att ge användbara insikter baserat på textöversättning, ansiktsigenkänning och sentimentidentifiering. Mer specifikt kopplas bearbetningsstegen för avbildningar och naturligt språk ihop i en meddelandepipeline baserat på Azure Service Bus. Utdata från pipelinen är ett meddelande som innehåller insikten eller analysen.

Arkitektur

Arkitekturdiagram: mata in och analysera RSS-feeds med bild- och textbearbetning och skicka meddelanden.Ladda ned en Visio-fil med den här arkitekturen.

Dataflöde

Data flödar genom lösningen på följande sätt:

  1. Ett RSS-nyhetsflöde fungerar som en generator som hämtar data från ett dokument eller en artikel. Med en artikel innehåller data till exempel vanligtvis en rubrik, en sammanfattning av det ursprungliga innehållet i nyhetsobjektet och ibland bilder.

  2. En generator- eller inmatningsprocess infogar artikeln och eventuella associerade avbildningar i en Azure Cosmos DB-samling.

  3. Ett meddelande utlöser en inmatningsfunktion i Azure Functions som lagrar artikeltexten i Azure Cosmos DB och artikelavbildningarna (om sådana finns) i Azure Blob Storage. Artikeln skickas sedan till nästa kö.

  4. En översättningsfunktion utlöses av köhändelsen. Den använder API:et Translate Text i Azure Cognitive Services för att identifiera språket, översätta vid behov och samla in sentiment, nyckelfraser och entiteter från brödtexten och rubriken. Sedan skickas artikeln till nästa kö.

  5. En identifieringsfunktion utlöses från den köade artikeln. Den använder Visuellt innehåll-tjänsten för att identifiera objekt, landmärken och skrivna ord i den associerade bilden och skickar sedan artikeln till nästa kö.

  6. En ansiktsfunktion utlöses från den köade artikeln. Tjänsten Azure Face API används för att identifiera ansikten för kön och ålder i den associerade bilden och skickar sedan artikeln till nästa kö.

  7. När alla funktioner är klara utlöses aviseringsfunktionen. Den läser in de bearbetade posterna för artikeln och söker igenom dem efter önskade resultat. Om det hittas flaggas innehållet och ett meddelande skickas till det system som du väljer.

Vid varje bearbetningssteg skriver funktionen resultatet till Azure Cosmos DB. I slutändan kan data användas som önskat. Du kan till exempel använda den för att förbättra affärsprocesser, hitta nya kunder eller identifiera problem med kundnöjdhet.

Komponenter

Följande lista över Azure-komponenter används i det här exemplet.

  • Azure Storage används för att lagra råa bild- och videofiler som är associerade med en artikel. Ett sekundärt lagringskonto skapas med Azure App Service och används som värd för Azure-funktionskoden och loggarna.

  • Azure Cosmos DB innehåller information om artikeltext, bild och videospårning. Resultatet av Cognitive Services-stegen lagras också här.

  • Azure Functions kör funktionskoden som används för att svara på kömeddelanden och transformera inkommande innehåll. Azure App Service är värd för funktionskoden och bearbetar posterna seriellt. Det här scenariot innehåller fem funktioner: Mata in, transformera, identifiera objekt, ansikte och meddela.

  • Azure Service Bus är värd för de Azure Service Bus köer som används av funktionerna.

  • Azure Cognitive Services tillhandahåller AI för pipelinen baserat på implementeringar av tjänsten Visuellt innehåll, ansikts-API och översättningstjänsten för textöversättning.

  • Azure Application Insights tillhandahåller analyser som hjälper dig att diagnostisera problem och förstå funktionerna i ditt program.

Alternativ

  • I stället för att använda ett mönster baserat på kömeddelanden och Azure Functions kan du använda ett ämnes- och prenumerationsmönster för det här dataflödet. Azure Service Bus Ämnen kan användas för att bearbeta de olika delarna av artikeln parallellt, till skillnad från den seriell bearbetning som görs i det här exemplet. Mer information finns i jämföra köer och ämnen.

  • Använd Azure Logic Apps för att implementera funktionskoden och implementera låsning på postnivå, till exempel den som tillhandahålls av Redlock-algoritmen (som behövs för parallell bearbetning tills Azure Cosmos DB stöder partiella dokumentuppdateringar). Mer information finns i Jämföra Funktioner och Logic Apps.

  • Implementera den här arkitekturen med anpassade AI-komponenter i stället för befintliga Azure-tjänster. Du kan till exempel utöka pipelinen med hjälp av en anpassad modell som identifierar vissa personer i en bild i motsats till antalet generiska personer, kön och åldersdata som samlas in i det här exemplet. Om du vill använda anpassade maskininlärnings- eller AI-modeller med den här arkitekturen skapar du modellerna som RESTful-slutpunkter så att de kan anropas från Azure Functions.

  • Använd en annan indatamekanism i stället för RSS-feeds. Använd flera generatorer eller inmatningsprocesser för att mata in Azure Cosmos DB och Azure Storage.

  • Azure Cognitive Search är en AI-funktion i Azure Search som också kan användas för att extrahera text från bilder, blobar och andra ostrukturerade datakällor.

Scenarioinformation

Det här scenariot innehåller exempel på engelska, ryska och tyska nyhetsflöden, men du kan enkelt utöka det till andra RSS-flöden och andra språk. För enkel distribution baseras datainsamlingen, bearbetningen och analysen helt på Azure-tjänster.

Potentiella användningsfall

Även om det här scenariot baseras på bearbetning av RSS-feeds är det relevant för alla dokument, webbplatser eller artiklar där du skulle behöva:

  • Översätta text till ett val av språk.
  • Hitta nyckelfraser, entiteter och användarsentiment i digitalt innehåll.
  • Identifiera objekt, text och landmärken i bilder som är associerade med en digital artikel.
  • Identifiera personer efter kön och ålder i bilder som är associerade med digitalt innehåll.

Överväganden

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

För enkelhetens skull använder det här exempelscenariot bara några av de tillgängliga API:erna och tjänsterna från Azure Cognitive Services. Text i bilder kan till exempel analyseras med hjälp av api:et Textanalys. Målspråket i det här scenariot antas vara engelska, men du kan ändra indata till valfritt språk som stöds.

Skalbarhet

Azure Functions skalning beror på vilken värdplan du använder. Den här lösningen förutsätter en förbrukningsplan där beräkningskraften automatiskt allokeras till funktionerna vid behov. Du betalar bara när dina funktioner körs. Ett annat alternativ är att använda en dedikerad plan som gör att du kan skala mellan nivåer för att allokera en annan mängd resurser.

Med Azure Cosmos DB är nyckeln att distribuera din arbetsbelastning ungefär jämnt mellan ett tillräckligt stort antal partitionsnycklar. Det finns ingen gräns för den totala mängden data som en container kan lagra eller den totala mängden dataflöde som en container kan stödja.

Hantering och loggning

Den här lösningen använder Application Insights för att samla in information om prestanda och loggning. En instans av Application Insights skapas med distributionen i samma resursgrupp som de andra tjänster som behövs för den här distributionen.

Så här visar du loggarna som genereras av lösningen:

  1. Gå till Azure Portal och gå till resursgruppen som skapades för distributionen.

  2. Välj Application Insights-instansen .

  3. I avsnittet Application Insights navigerar du till Undersök\Sök och söker efter data.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Azure Cosmos DB använder en säker anslutning och signatur för delad åtkomst via C#SDK som tillhandahålls av Microsoft. Det finns inga andra externt riktade ytor. Läs mer om rekommenderade säkerhetsmetoder för Azure Cosmos DB.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra driftseffektiviteten. Mer information finns i Översikt över grundpelare för kostnadsoptimering.

Azure Cosmos DB är kraftfullt men medför den största kostnaden i den här distributionen. Du kan använda en annan lagringslösning genom att omstrukturera den Azure Functions kod som tillhandahålls.

Prissättningen för Azure Functions varierar beroende på vilken plan den körs i.

Distribuera det här scenariot

Anteckning

Du måste ha ett befintligt Azure-konto. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

All kod för det här scenariot är tillgänglig på GitHub-lagringsplatsen . Den här lagringsplatsen innehåller källkoden som används för att skapa generatorprogrammet som matar pipelinen för den här demonstrationen.

Nästa steg

Ytterligare analysarkitekturer: