# Language Services - Text Analytics for Sentiment and Key Phrases **Last updated:** 2026-04 | Verified: MCP 2026-04 **Status:** GA (deler avvikles 2029-03-31) > **ADVARSEL — TJENESTER AVVIKLES (2029-03-31):** Sentiment Analysis, Opinion Mining og Custom Text Classification avvikles 31. mars 2029. Migrer til Azure AI Foundry-modeller. PII Detection, Key Phrase Extraction og Language Detection er ikke berørt. **Category:** Azure AI Services (Foundry Tools) --- ## Introduksjon Azure AI Language er en samling av forhåndsopplærte språkmodeller som gjør det mulig å utføre avansert tekstanalyse uten å bygge egne maskinlæringsmodeller. Tjenesten tilbyr flere kjernekapabiliteter for text analytics: **Sentiment Analysis** (med opinion mining), **Key Phrase Extraction**, **Named Entity Recognition (NER)**, og **Language Detection**. Disse kapabilitetene er tilgjengelige både som cloud-baserte REST API-er, SDK-er (C#, Java, Python, JavaScript), og Docker-containere for on-premises deployment. Tjenesten integreres sømløst med Azure AI Foundry, Azure Synapse Analytics, Power BI, og Microsoft Fabric, noe som gjør den egnet for både interactive playgrounds og produksjonsworkflows. Text analytics-funksjonene er stateless — ingen data lagres i kontoen din, og resultater returneres umiddelbart etter analyse. For batch-operasjoner er resultatene tilgjengelige i 24 timer før de slettes automatisk. Tjenesten støtter 94+ språk for key phrase extraction, med bred språkstøtte også for sentiment analysis og NER. --- ## Kjernekomponenter / Nøkkelegenskaper ### Sentiment Analysis Analyserer tekst og returnerer sentiment labels (`positive`, `negative`, `neutral`, `mixed`) med confidence scores (0–1) på både setnings- og dokumentnivå. | Funksjonalitet | Beskrivelse | |----------------|-------------| | **Sentiment labels** | Positive, negative, neutral (setningsnivå); mixed tilgjengelig på dokumentnivå | | **Confidence scores** | 0.0–1.0 per label (summer alltid til 1.0) | | **Opinion Mining** | Identifiserer target-aspect (substantiv/verb) og tilhørende assessment (adjektiv) | | **Beste use case** | Små tekstblokker (høyere kvalitet enn store) | | **Språkstøtte** | [Omfattende liste](https://learn.microsoft.com/en-us/azure/ai-services/language-service/sentiment-opinion-mining/language-support) inkl. norsk | **Eksempel (Opinion Mining):** ``` Input: "The room was great, but the staff was unfriendly." Output: - Target: "room" → Assessment: "great" (positive) - Target: "staff" → Assessment: "unfriendly" (negative) - Document sentiment: mixed ``` ### Key Phrase Extraction Evaluerer ustrukturert tekst og returnerer en liste over viktigste key phrases. | Funksjonalitet | Beskrivelse | |----------------|-------------| | **Input-optimalisering** | Fungerer best på **større tekstblokker** (motsatt av sentiment) | | **Output** | Liste med key phrases, sortert av modellens interne ranking | | **Språkstøtte** | 94 språk (inkl. norsk, samisk, finsk, svensk, dansk) | | **Use case** | Rask identifikasjon av hovedpoeng i dokumentsamlinger | **Eksempel:** ``` Input: "Dr. Smith has a very modern medical office, and she has great staff." Output: ["modern medical office", "Dr. Smith", "great staff"] ``` ### Named Entity Recognition (NER) Identifiserer og kategoriserer entities i tekst (person, lokasjon, organisasjon, dato, etc.). | Entity-kategori | Typer (eksempler) | |-----------------|-------------------| | **Person** | Person, PersonType (rolle) | | **Organization** | Organization, OrganizationMedical, OrganizationSports, OrganizationStockExchange | | **Location** | City, CountryRegion, State, GPE (geopolitical entity), Airport, Continent | | **DateTime** | Date, Time, DateRange, TimeRange, Duration, Set | | **Quantity** | Number, Percentage, Currency, Age, Temperature, Speed, Weight, Volume, Area, Length | | **Event** | Event, NaturalEvent, CulturalEvent, SportsEvent | | **Contact** | Email, PhoneNumber, URL, IpAddress, Address | | **Product** | Product, ComputingProduct | | **Other** | Skill, Information | **Metadata-resolutionsupport:** Mange quantity-entities returnerer strukturert metadata (f.eks. Currency → ISO-kode, normalized verdi). ### Language Detection Evaluerer tekst og returnerer språk-identifier (ISO 639-1) med confidence score (0.0–1.0). | Funksjonalitet | Beskrivelse | |----------------|-------------| | **Output** | Language name, ISO 6391 code, confidence score | | **Use case** | Automatisk språkdeteksjon for content stores med mixed-language data | | **Default** | Engelsk hvis ikke spesifisert | --- ## Arkitekturmønstre ### Mønster 1: REST API med Fabric/Synapse (Batch Processing) **Use case:** Prosesser store volumer av dokumenter fra data lake (f.eks. kundefeedback, supporttickets). **Fordeler:** - Sømløs integrasjon med Azure Storage og Azure AI Search - SynapseML gir Spark-optimalisert batch processing - Built-in authentication via Fabric workspace credentials **Ulemper:** - Krever Spark-kompetanse for SynapseML - Batch-mode medfører latency (ikke real-time) **Eksempel (Fabric REST API):** ```python # Auto-authenticated via Fabric payload = { "kind": "SentimentAnalysis", "parameters": {"modelVersion": "latest", "opinionMining": "True"}, "analysisInput": {"documents": [{"id": "1", "language": "en", "text": "..."}]} } response = requests.post(service_url, json=payload, headers=auth_headers) ``` ### Mønster 2: SDK-basert integrasjon (Client Library) **Use case:** Real-time tekstanalyse i web/mobile apps, chatbots, eller Power Apps. **Fordeler:** - Typed responses (C#, Java) reduserer parsing-bugs - Async support for skalerbare apps - Enklere feilhåndtering enn raw REST **Ulemper:** - SDK versioning (må holde tritt med API-versjoner) - Større binary footprint enn REST **Eksempel (C# SDK):** ```csharp var client = new TextAnalyticsClient(endpoint, new AzureKeyCredential(key)); var response = await client.AnalyzeSentimentAsync("The service was excellent!"); Console.WriteLine($"Sentiment: {response.Value.Sentiment}"); ``` ### Mønster 3: Docker Container (On-Premises) **Use case:** Compliance-krav som krever data residency i Norge, eller air-gapped environments. **Fordeler:** - Full datakontroll (ingen data sendes til cloud) - Lav latency (lokal processing) - Støtter Sentiment, Language Detection, Key Phrase, Custom NER, Text Analytics for Health **Ulemper:** - Krever egne compute-ressurser (CPU/minne) - Ingen automatiske modelloppdateringer (må manuelt oppdatere container images) - Free F0 tier støttes ikke (kun Standard S tier) --- ## Beslutningsveiledning ### Når bruke Sentiment Analysis vs. Opinion Mining | Scenario | Anbefaling | |----------|-----------| | Trenger kun overordnet positive/negative/neutral? | **Sentiment Analysis** (uten opinion mining-flag) | | Må identifisere *hva* kunder liker/misliker? | **Opinion Mining** (sett `opinionMining=true`) | | Analyserer produktanmeldelser med attributter? | **Opinion Mining** (target = produkt-feature, assessment = vurdering) | ### Vanlige feil | Feil | Løsning | |------|---------| | Lav kvalitet på sentiment for lange dokumenter | Del opp tekst i mindre chunks (maks 5000 tegn per record) | | Key phrases mangler kontekst | Gi større tekstblokker (key phrase fungerer bedre på større input enn sentiment) | | NER feiltolker domene-spesifikke entities | Vurder Custom NER (trener egen modell på dine data) | | Mixed sentiment når både positive og negative setninger | Dette er forventet — bruk Opinion Mining for granularitet | ### Røde flagg - **Ikke bruk** for medisinsk diagnostikk (selv om Text Analytics for Health finnes — krever spesialistkompetanse) - **Ikke bruk** for PII-deteksjon i produksjon uten også å enable [PII Detection feature](https://learn.microsoft.com/en-us/azure/ai-services/language-service/personally-identifiable-information/overview) - **Ikke bruk** default English language hvis du vet teksten er på andre språk (spesifiser `language` parameter) ### Beslutningstabell: SDK vs. REST vs. Container | Krav | SDK | REST API | Container | |------|-----|----------|-----------| | Real-time app-integrasjon | ✅ Beste valg | ⚠️ Fungerer, mer boilerplate | ❌ Overkill | | Batch processing (millioner dokumenter) | ⚠️ Mulig, men batch APIs bedre | ✅ Med SynapseML | ⚠️ Infrastruktur-overhead | | Data residency krav (Norge) | ❌ Må bruke EU-regioner | ❌ Må bruke EU-regioner | ✅ Full kontroll | | Lavest kostnads-overhead | ✅ Pay-per-call | ✅ Pay-per-call | ⚠️ Egen infrastruktur | --- ## Integrasjon med Microsoft-stakken ### Azure AI Foundry Language Services er integrert i Foundry Playground med visuell testing av sentiment, key phrases, og NER uten kode. **Workflow:** 1. Opprett Language resource i Foundry 2. Velg "Analyze sentiment" eller "Key phrase extraction" fra banneret 3. Lim inn tekst, velg API-versjon, språk, og kjør 4. Se resultater med confidence scores og opinion mining-targets ### Power BI Power BI Desktop kan integrere direkte med Key Phrase Extraction via Power Query custom functions. **Use case:** Analyser kundefeedback fra Excel/CSV, visualiser key phrases som word cloud. **Tutorial:** [Extract key phrases from Power BI](https://learn.microsoft.com/en-us/azure/ai-services/language-service/key-phrase-extraction/tutorials/integrate-power-bi) ### Azure Synapse Analytics / Microsoft Fabric SynapseML (tidligere MMLSpark) gir native Spark support for Language Services. **Fordeler:** - Batch processing av DataFrames - Auto-authentication i Fabric notebooks (ingen API keys nødvendig) - Sømløs integrasjon med lakehouse data **Eksempel (SynapseML for Key Phrases):** ```python from synapse.ml.cognitive.language import AnalyzeText model = AnalyzeText().setTextCol("text").setKind("KeyPhraseExtraction") result = model.transform(df).select("text", "keyPhrases") ``` ### Copilot Studio Language Services kan brukes i custom Copilot Studio skills for å analysere brukersentiment i conversations før routing til riktig agent. **Use case:** Automatisk eskaler negative sentiment til human agent, neutral til FAQ bot. ### Azure Cognitive Search Language Services entities kan indekseres i Azure AI Search som facets, noe som muliggjør entity-basert search filtering (f.eks. "finn dokumenter om Microsoft som organisasjon"). --- ## Offentlig sektor (Norge) ### GDPR og Schrems II | Risiko | Mitigering | |--------|-----------| | Data sendes til Azure EU-regioner (Vest-Europa, Nord-Europa) | ✅ Bruk EU-regioner for Language resource | | Potensielle concerns om US Cloud Act | ✅ Bruk Docker containers on-premises for følsom data | | PII i tekst (personnummer, navn, e-post) | ✅ Anonymiser først, eller bruk PII Detection-feature | | Data retention i 24 timer (batch mode) | ✅ Synkron modus lagrer ikke data (stateless) | ### AI Act (EU) Language Services klassifiseres som **lav-risiko AI** (ikke høyrisiko) så lenge det ikke brukes til: - Biometric identification - Critical infrastructure - Law enforcement (uten human oversight) **Krav:** - Dokumenter hvordan sentiment/entity detection brukes - Vurder bias (trent på hovedsakelig engelske datasett, kan være mindre nøyaktig for norsk) ### Forvaltningsloven og transparens Ved bruk i saksbehandling: - **Ikke la sentiment score alene avgjøre saker** (kun som beslutningsstøtte) - **Logg alle analyser** (hvem, hva, når, resultat) for etterprøvbarhet - **Informer brukere** hvis deres tekst analyseres (f.eks. feedback-forms) ### Datasuverenitet **Azure Norway datacenters** (Oslo, Stavanger) støtter ikke Language Services per 2026-02. Nærmeste regioner: - **West Europe** (Nederland) - **North Europe** (Irland) For full datasuverenitet: **Bruk Docker containers** (Sentiment, Language Detection, Key Phrase, Custom NER) hosted i Norge. --- ## Kostnad og lisensiering ### Prismodell (Azure Language) Language Services bruker **pay-per-call** modell (per text record). | Tier | Pris per 1000 text records | Bruksscenario | |------|----------------------------|---------------| | **Free F0** | 0 NOK (5000 gratis/måned) | Testing, POC, lav-volum apps | | **Standard S** | Varierer per region (~$1–2 USD / 1000 records) | Produksjon | **Viktige detaljer:** - **Maks 5000 tegn per record** (større dokumenter må splittes) - **Opinion Mining** inkludert i Standard tier (ingen ekstra kostnad) - **Batch mode** (asynchronous) har samme pris som synchronous - **Docker containers** krever Standard tier (Free F0 støttes ikke) ### Kostnadseksempel (norsk offentlig virksomhet) **Scenario:** Analyserer 100 000 brukerhenvendelser/måned med sentiment + key phrases (2 API-kall per henvendelse). | Komponent | Kostnad (estimat) | |-----------|-------------------| | 200 000 text records × $1.50 / 1000 | $300 USD/måned (~3200 NOK) | | Azure Language resource (S tier) | Ingen fast månedskostnad (kun per-call) | | Azure Storage (hvis batch mode) | ~$20 USD/måned for 1TB (~210 NOK) | | **Total** | **~3400 NOK/måned** | ### Optimaliseringstips 1. **Batch asynkront** — Hvis du kan vente 24 timer, bruk asynchronous API (ingen prisforskjell, men enklere infrastruktur) 2. **Filtrer ut tom tekst** — Ikke send records uten innhold (koster like mye som reelle records) 3. **Kombiner features i én request** — Sentiment + Key Phrases + Entities kan kjøres i én `analyze-text` call (sparer HTTP-overhead, ikke pris) 4. **Bruk containers for høy-volum** — Hvis >1M records/måned, vurder self-hosted containers med Reserved VM Instances --- ## For arkitekten (Cosmo) ### Spørsmål å stille kunden 1. **Volum og latency:** - Hvor mange dokumenter skal analyseres (per dag/måned)? - Kreves real-time respons (<500ms) eller er batch OK (24t)? 2. **Språk og multispråklighet:** - Er all tekst på norsk, eller blandet språk? - Trenger dere automatisk språkdeteksjon? 3. **Datakompleksitet:** - Er tekstene lange (>5000 tegn) eller korte (f.eks. tweets, SMS)? - Inneholder teksten sensitive personopplysninger (navn, personnummer)? 4. **Detaljnivå:** - Trenger dere kun overordnet sentiment, eller må dere vite *hva* som er positivt/negativt (opinion mining)? - Skal entities kobles til eksterne knowledge bases (entity linking)? 5. **Infrastruktur og compliance:** - Kan data sendes til Azure EU-regioner, eller kreves on-premises? - Har dere eksisterende Azure Synapse / Fabric infrastructure? 6. **Integrasjoner:** - Skal resultatene visualiseres i Power BI, eller bare lagres i database? - Brukes det i en eksisterende app (web/mobile), eller ny løsning? 7. **Fremtidig utvidelse:** - Vil dere senere trenge custom entities (f.eks. organisasjonsspesifikke termer)? - Planlegges det translation workflows (Azure Translator integrasjon)? ### Fallgruver | Fallgruve | Forklaring | Mitigering | |-----------|------------|------------| | **"Sentiment = sannhet"** | Sentiment score er en prediktering, ikke en fasit | Alltid ha human-in-the-loop for kritiske beslutninger | | **Overfitting til engelsk** | Modellen er best på engelsk, kan være mindre presis på norsk | Test med representative norske datasett før produksjon | | **Ignorere PII** | Key phrases kan inneholde personnavn eller sensitiv info | Kjør PII Detection først, eller anonymiser tekst før analyse | | **Glemme cost caps** | Per-call pricing kan eskalere ved bugs (infinite loops) | Sett Azure Cost Management alerts på Language resource | | **Forvente perfekt NER** | NER kan feiltolke domene-spesifikke entities | Vurder Custom NER hvis standard entities ikke er presise nok | ### Anbefalinger per modenhetsnivå #### Nivå 1: Exploring (POC, <1000 records/måned) - **Anbefaling:** Free F0 tier + Azure AI Foundry Playground - **Verktøy:** REST API via Postman eller Foundry web UI - **Fokus:** Teste om sentiment/key phrases gir verdi for use case - **Advarsler:** Ikke bygg produksjonsapp på Free tier (5000 records/mnd cap) #### Nivå 2: Building (Pilot, 1000–100K records/måned) - **Anbefaling:** Standard S tier + SDK (C#/Python) + Azure App Service - **Verktøy:** Azure Language SDK, Application Insights for monitoring - **Fokus:** Real-time integrasjon i app, feilhåndtering, retry-logikk - **Advarseler:** Implementer circuit breaker pattern (unngå API throttling ved 429 errors) #### Nivå 3: Scaling (Produksjon, >100K records/måned) - **Anbefaling:** Standard S tier + SynapseML / Fabric + Batch API - **Verktøy:** Azure Synapse Pipelines, Azure Data Lake, Azure AI Search (for entity indexing) - **Fokus:** Batch processing, cost optimization, data governance - **Advarseler:** Vurder Docker containers hvis kostnad >$1000/måned #### Nivå 4: Optimizing (Enterprise, >1M records/måned) - **Anbefaling:** Docker containers on Azure Kubernetes Service (AKS) + Custom NER - **Verktøy:** AKS, Azure Monitor, Custom Text Classification (Language Studio) - **Fokus:** Self-hosted inference, custom models for domene-spesifikke entities - **Advarsler:** Container-licensing krever Standard tier — test kostnad mot cloud API --- ## Kilder og verifisering ### Microsoft Learn-dokumentasjon (Verified via MCP) | Kategori | URL | Konfidensnivå | |----------|-----|---------------| | **Sentiment Analysis Overview** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/sentiment-opinion-mining/overview | ✅ Verified (2026-02) | | **Sentiment Analysis How-To** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/sentiment-opinion-mining/how-to/call-api | ✅ Verified (2026-02) | | **Key Phrase Extraction How-To** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/key-phrase-extraction/how-to/call-api | ✅ Verified (2026-02) | | **NER Entity Categories** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/named-entity-recognition/concepts/named-entity-categories | ✅ Verified (2026-02) | | **Fabric Text Analytics** | https://learn.microsoft.com/en-us/fabric/data-science/ai-services/how-to-use-text-analytics | ✅ Verified (2026-02) | | **Key Phrase Language Support** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/key-phrase-extraction/language-support | ✅ Verified (2026-02) | | **Sentiment Language Support** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/sentiment-opinion-mining/language-support | ✅ Verified (2026-02) | | **Custom Text Classification** | https://learn.microsoft.com/en-us/azure/ai-services/language-service/custom-text-classification/overview | ✅ Verified (2026-02) | ### Konfidensnivå per seksjon | Seksjon | Konfidens | Kilde | |---------|-----------|-------| | Introduksjon | ✅ Verified | Microsoft Learn docs (MCP-fetched) | | Kjernekomponenter | ✅ Verified | REST API examples + model outputs fra docs | | Arkitekturmønstre | ✅ Verified | Fabric tutorial + Synapse docs + SDK samples | | Beslutningsveiledning | ⚠️ Baseline | Best practices (modellkunnskap), ikke eksplisitt dokumentert | | Integrasjon med MS-stakken | ✅ Verified | Power BI tutorial + SynapseML docs + Foundry quickstarts | | Offentlig sektor (Norge) | ⚠️ Baseline | GDPR-analyse (modellkunnskap) + Azure datacenter geografi | | Kostnad og lisensiering | ⚠️ Baseline | Generell Azure pricing structure (ikke eksakte NOK-priser hentet) | | For arkitekten (Cosmo) | ⚠️ Baseline | Arkitekturerfaringer (modellkunnskap), ikke dokumentert av Microsoft | **Notater:** - Prisestimater er basert på generell Azure-prisstruktur — alltid sjekk [Azure Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/) for eksakte priser. - Norge datacenter-status per 2026-02 — verifiser i Azure portal før arkitekturavgjørelser. - Custom NER og Custom Text Classification er separate features med egne prismodeller (ikke dekket detaljert her).