Updates across all 5 skills: ms-ai-advisor, ms-ai-engineering, ms-ai-governance, ms-ai-security, ms-ai-infrastructure. Key changes: - Language Services (Custom Text Classification, Text Analytics, QnA): retirement warning 2029-03-31, migration guides to Foundry/GPT-4o - Agentic Retrieval: 50M free reasoning tokens/month (Public Preview) - Computer Use: Claude Sonnet 4.5 (preview) + OpenAI CUA models - Agent Registry: Risks column (M365 E7), user-shared/org-published types - Declarative agents: schema v1.5 → v1.6, Store validation requirements - MLflow 3: 13 built-in LLM judges, production monitoring, Genie Code - AG-UI HITL: ApprovalRequiredAIFunction (C#) + @tool(approval_mode) (Python) - Entra ID Ignite 2025: Agent ID Admin/Developer RBAC roles, Conditional Access - Security Copilot: 400 SCU/month per 1000 M365 E5 licenses, auto-provisioned - Fast Transcription API: phrase lists, 14-language multi-lingual transcription - Azure Monitor Workbooks: Bicep support, RBAC specifics - Power Platform Copilot: data residency (Norway/Europe → EU DB, Bing → USA) - RAG security-rbac: 4-approach table (GA + 3 preview access control methods) - IaC MLOps: Well-Architected OE:05 principles, Bicep/Terraform patterns - Translator: image file batch translation Preview (JPEG/PNG/BMP/WebP) All 106 files: Last updated 2026-04 | Verified: MCP 2026-04 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 KiB
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 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):
# 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):
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
- Ikke bruk default English language hvis du vet teksten er på andre språk (spesifiser
languageparameter)
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:
- Opprett Language resource i Foundry
- Velg "Analyze sentiment" eller "Key phrase extraction" fra banneret
- Lim inn tekst, velg API-versjon, språk, og kjør
- 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
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):
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
- Batch asynkront — Hvis du kan vente 24 timer, bruk asynchronous API (ingen prisforskjell, men enklere infrastruktur)
- Filtrer ut tom tekst — Ikke send records uten innhold (koster like mye som reelle records)
- Kombiner features i én request — Sentiment + Key Phrases + Entities kan kjøres i én
analyze-textcall (sparer HTTP-overhead, ikke pris) - 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
-
Volum og latency:
- Hvor mange dokumenter skal analyseres (per dag/måned)?
- Kreves real-time respons (<500ms) eller er batch OK (24t)?
-
Språk og multispråklighet:
- Er all tekst på norsk, eller blandet språk?
- Trenger dere automatisk språkdeteksjon?
-
Datakompleksitet:
- Er tekstene lange (>5000 tegn) eller korte (f.eks. tweets, SMS)?
- Inneholder teksten sensitive personopplysninger (navn, personnummer)?
-
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)?
-
Infrastruktur og compliance:
- Kan data sendes til Azure EU-regioner, eller kreves on-premises?
- Har dere eksisterende Azure Synapse / Fabric infrastructure?
-
Integrasjoner:
- Skal resultatene visualiseres i Power BI, eller bare lagres i database?
- Brukes det i en eksisterende app (web/mobile), eller ny løsning?
-
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)
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 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).