Implement text analysis solutions Study Guide — AI-103

13% of the exam · domain 4 of 5 · Microsoft Azure AI Apps and Agents Developer Associate · Free Implement text analysis solutions practice questions

0 of 58 topics covered
What the exam asks here — tap to tick off0 / 8 covered
Domain 4 of 5

Implement text analysis solutions

This domain (13% of AI-103, roughly 6–8 scored items) tests whether you can pick and configure the right Microsoft service — Language in Foundry Tools (Azure AI Language), Translator, Speech, Content Safety, and Foundry Models (Azure OpenAI) — to extract meaning from text and audio, and to wire those capabilities into agentic solutions. Expect questions phrased as short business scenarios ending in "which service/feature/parameter should you use?", plus SDK/REST fragments where one property is missing. Microsoft has rebranded Azure AI services capabilities as Foundry Tools inside Microsoft Foundry / Azure AI Foundry; the exam may use either name, so memorise the mapping.

Legacy / classic nameFoundry-era nameCore jobs
Azure AI Language (Text Analytics)Language in Foundry ToolsSentiment, NER, PII, key phrases, summarisation, custom NER/classification
Azure AI TranslatorTranslator in Foundry ToolsText, document, custom translation
Azure AI SpeechSpeech in Foundry ToolsSTT, TTS, speech translation, custom speech/voice, Voice Live
Azure AI Content SafetyContent Safety in Foundry ToolsHarm categories, Prompt Shields, groundedness, protected material
Azure OpenAI ServiceFoundry Models / Azure OpenAI in Foundry ModelsGPT-4o/4.1/o-series, Whisper, realtime audio

Extracting entities, topics, summaries and structured JSON

Prebuilt Language capabilities (no training, REST/SDK)

FeatureReturnsSync docs/requestNotes
Language detectionISO 639-1 code, name, confidence1,000Returns (Unknown) + NaN when undetermined; countryHint improves accuracy
Key phrase extractionList of phrases, no confidence scores10Not topic modelling, not summarisation
Named entity recognition (NER)Category, subcategory, offset, length, confidence5Categories: Person, PersonType, Location, Organization, Event, Product, Skill, Address, PhoneNumber, Email, URL, IP, DateTime, Quantity
Entity linkingWikipedia URL + unique ID5Disambiguation, English-centric
PII detectionEntities + redactedText5domain=phi for health; piiCategories filter
Text analytics for healthUMLS-linked entities, relations, assertions10 (hosted) / 25 (container)Async only
Extractive summarisationRanked source sentences25 (async job)sentenceCount default 3, sortBy = Offset or Rank
Abstractive summarisationNewly generated prose25 (async job)summaryLength = short / medium / long
Conversation summarisationAspects: issue, resolution, chapterTitle, narrative, recap, follow-up tasks1 conversationUses /language/analyze-conversations/jobs

Hard limits you must recall: 5,120 characters per document (synchronous); 125,000 characters total per async request; F0 free tier = 5,000 transactions / 30 days, Standard S = 1,000 requests per minute. Sync operations POST to /language/:analyze-text?api-version=...; long-running operations (summarisation, health, custom, multi-task) POST to /language/analyze-text/jobs and return an Operation-Location header you poll.

There is no prebuilt topic-modelling API. Topics, themes, and open-ended taxonomy extraction are generative tasks — use a chat completion model with a prompt, not key phrase extraction.

Custom Language features

  • Custom NER and custom text classification (single-label or multi-label) require an Azure Storage account for training documents, a project in Foundry/Language Studio, labelling, training (with automatic or manual train/test split), evaluation (precision, recall, F1, confusion matrix), then deployment to a named deployment before you can call it.
  • Calls to custom features are always asynchronous and require projectName + deploymentName in the body.
  • Custom features are not available on F0 at production scale and require a Language resource created with custom features enabled plus the storage connection.

Generative extraction and structured JSON

For entity/topic/summary extraction where the schema is domain-specific or the label set changes often, use a Foundry Model with prompting:

TechniqueWhat it doesWhen the exam wants it
JSON mode — response_format={"type":"json_object"}Guarantees valid JSON, not a specific shape. You must also say "JSON" in the prompt"Output must parse as JSON"
Structured Outputs — response_format={"type":"json_schema", "json_schema":{..., "strict":true}}Guarantees the response matches your JSON Schema exactly"Every response must contain exactly these fields" / "no missing properties"
Function / tool callingModel emits a tool call with typed argumentsModel must trigger an action or downstream API
Few-shot prompting2–5 labelled examples in the system/user messageImprove consistency without fine-tuning
Fine-tuningTrains weights on hundreds+ examplesPersistent style/format, latency & token savings, no schema guarantee

Structured Outputs requires gpt-4o (2024-08-06) or later and API version 2024-08-01-preview or later. strict: true requires additionalProperties: false and every property listed in required. Set temperature 0 (and optionally seed) for deterministic extraction.

Diagram caption: choosing between prebuilt Language skills, custom Language models, and generative prompting.

Common traps

  • Key phrase extraction ≠ summarisation ≠ topic modelling. Key phrases return noun phrases only, with no scores.
  • Extractive vs abstractive: "must use only wording from the original document / auditable" → extractive. "Must read as a concise new paragraph" → abstractive.
  • sentenceCount applies to extractive summarisation; summaryLength applies to abstractive.
  • Sync max is 5,120 characters per document, not per request; the per-request character cap is 125,000 for async.
  • Custom NER cannot be called synchronously; distractors offer :analyze-text for custom models.
  • JSON mode does not enforce a schema — only Structured Outputs does.
  • Entity linking returns Wikipedia URLs; NER does not.

Worked scenario

A bank must pull loan-application fields (applicant name, loan amount, property type, risk flags) from free-text emails into a fixed JSON record consumed by a downstream API that rejects unknown fields. Prebuilt NER returns generic categories, not propertyType. Custom NER could work but needs labelled data and returns spans, not a document-level object. Correct answer: a Foundry chat model with Structured Outputs (json_schema, strict: true, additionalProperties: false) at temperature 0, because the requirement is guaranteed schema conformance with no unknown fields.


Unlock with a paid plan

10 more sections (about 3,710 words) continue below. Every paid plan unlocks all AI-103 study guides, the full question bank and mock exams, from $4.97/month.