What it does
A suite of NLP capabilities for understanding and processing text:
Sentiment Analysis — positive/negative/neutral scoring at document and sentence level.
Named Entity Recognition (NER) — extracts people, places, organisations, dates, etc.
Key Phrase Extraction — identifies the main topics in a block of text.
Text Summarisation — abstractive and extractive summaries.
Custom Text Classification / Custom NER — train on your own labelled data for domain-specific tasks.
Conversational Language Understanding (CLU) — intent and entity extraction for bot/agent scenarios.
Question Answering — builds a knowledge base from FAQs or documents and answers natural-language questions.
When you'd use it
You need to classify, tag, or extract meaning from large volumes of unstructured text.
You are building a chatbot and need to understand user intent without using a full LLM.
You want automated summarisation or sentiment reporting on customer feedback.
Sample use case
A telecoms company processes thousands of customer service transcripts per day. Azure AI Language runs sentiment analysis and key phrase extraction on each transcript. Results are aggregated in a Power BI dashboard, giving the operations team a daily view of which topics are driving negative sentiment and require process changes.
Example reference architecture
.png)
Pricing & How Costs Work
Azure AI Language is priced per 1,000 text records. A text record is defined as up to 1,000 characters of text (including whitespace). Text longer than 1,000 characters is split into multiple records and billed accordingly.
Feature | Pricing unit | Notes |
|---|---|---|
Sentiment Analysis | Per 1,000 text records | Document-level and sentence-level scoring |
Key Phrase Extraction | Per 1,000 text records | |
Named Entity Recognition (NER) | Per 1,000 text records | |
Entity Linking | Per 1,000 text records | |
PII Detection | Per 1,000 text records | |
Language Detection | Per 1,000 text records | Very cheap; minimal compute |
Text Summarisation | Per 1,000 text records | Abstractive summarisation is at a higher rate than extractive |
Custom Text Classification | Per 1,000 text records (inference) | Training: per training hour + per hosted model per hour |
Custom NER | Per 1,000 text records (inference) | Training: per training hour + per hosted model per hour |
Conversational Language Understanding (CLU) | Per 1,000 text records | Intent + entity recognition for bot scenarios |
Orchestration Workflow | Per 1,000 text records | Routes between CLU, QnA, and LUIS models |
Question Answering (QnA) | Per 1,000 text records (inference) | Custom question answering: per hosted deployment hour |
Key pricing mechanics:
Free tier (F0): 5,000 text records/month for most features.
Standard tier (S): Per-1,000-record pricing with volume discounts at higher tiers.
Custom model hosting: Custom Text Classification, Custom NER, and Question Answering incur a continuous hosting charge (per hour) when a trained model is deployed — this cost accumulates even with zero inference traffic.
Multi-feature calls: Calling multiple features (e.g. sentiment + NER) on the same text in a single API call batches the records but each feature is billed separately. The SDK's
analyzeendpoint can run multiple operations; each operation generates its own record count.Character counting: A 500-character string = 1 record. A 1,500-character string = 2 records. This makes long documents significantly more expensive.
What Drives Costs
Cost driver | Why it matters |
|---|---|
Text volume (characters) | The fundamental driver. More characters = more records = higher cost. |
Number of features called | Each feature (NER, sentiment, key phrases) is billed independently, even on the same text. |
Average text length per call | Long documents are split into multiple records and billed per record. |
Custom model hosting hours | A deployed custom model accrues cost continuously, regardless of traffic. |
Custom model training frequency | Each training run is charged by compute hours. |
Abstractive vs extractive summarisation | Abstractive costs more per record than extractive. |
Cost optimization levers:
Truncate text to the relevant portion before sending to the API if full-document analysis is not needed.
Combine multiple features in a single
analyzecall (batching) to reduce overhead.Undeploy custom models when not actively receiving traffic — hosting charges stop when a deployment is deleted.
Cache results for identical or duplicate text inputs.
Use language detection selectively — only run it when the language is genuinely unknown.
Azure Cost Data — Meters & Meter Subcategories
Azure AI Language appears under the Cognitive Services service family. Resource type: Microsoft.CognitiveServices/accounts with kind TextAnalytics.
Meter name | Meter subcategory | What it counts |
|---|---|---|
Text Records | Standard S | Records processed by standard NLP features (sentiment, NER, key phrases, etc.) |
Custom Text Classification Records | Standard S | Records processed by a deployed custom classification model |
Custom NER Records | Standard S | Records processed by a deployed custom NER model |
Custom Text Analytics Training | Standard S | Compute hours consumed during a training run |
Custom Text Analytics Hosting | Standard S | Hourly charge for each deployed custom model endpoint |
Conversational Language Understanding Records | Standard S | Records processed by a CLU project |
Question Answering Records | Standard S | Records processed against a deployed QnA knowledge base |
Question Answering Hosting | Standard S | Hourly charge for a deployed QnA endpoint |
Meter subcategory notes:
Standard NLP features (sentiment, NER, key phrases, language detection, summarisation) all roll up into the same Text Records meter. To see a breakdown by feature, you need to use Azure Monitor Metrics on the Cognitive Services resource (the
ProcessedTextRecordsmetric, filtered byFeatureName).Custom model hosting meters accumulate 24×7 while a deployment exists, making them visible as a flat daily cost in billing exports even on days with zero inference volume.
The
Tagson the Cognitive Services resource are inherited by all billing rows, making resource tagging (e.g.env=prod,team=nlp) a key mechanism for cost allocation.
Common Developer Mistakes That Drive Up Costs
Sending long documents to the API without truncating to the relevant portion. A text record is up to 1,000 characters. A 10,000-character document costs 10 records. If only the first 2,000 characters are relevant (e.g. the executive summary of a report), submitting the full text costs 5× more than necessary.
Calling multiple features on the same text without considering whether all are needed. Each feature (sentiment, NER, key phrases, language detection) is billed independently. Running all five features on every document when only sentiment is used downstream means paying for four features on every call that go unused.
Leaving custom model deployments running when not in active use. Custom Text Classification, Custom NER, and Question Answering deployments incur an hourly hosting fee even with zero traffic. Teams that deploy models for a proof-of-concept and don't remove the deployment continue paying indefinitely.
Calling language detection on content where the language is already known. If the application already knows the source language (e.g. a form where the user selects their language), calling the language detection API on every document is unnecessary cost.
Not caching results for frequently repeated text. In pipelines processing recurring content (e.g. daily re-analysis of product descriptions that rarely change), re-calling the API on every pipeline run charges for the same records repeatedly.
Using abstractive summarisation when extractive would suffice. Abstractive summarisation costs more per record than extractive. For use cases where the goal is identifying the key sentences rather than generating a novel summary, extractive is a cheaper alternative.
What Could Make Your Bill Go Up or Down Next Month
Could go UP:
A new data pipeline begins processing a backlog of historical documents, generating a large one-time spike in text record consumption.
The average document length increases (e.g. processing full contracts instead of abstracts), multiplying records per document.
A new feature enables two additional NLP features (e.g. NER + key phrases) on the same documents that previously only had sentiment analysis.
A custom model deployment is created for a pilot and not removed at pilot end, accruing hosting charges.
User-generated content volume on the platform grows significantly (e.g. following a marketing campaign).
Could go DOWN:
Text is truncated to the relevant portion before submission, reducing average records per document.
Custom model deployments for inactive pilots or seasonal features are deleted.
Results are cached for content that is re-processed on recurring pipeline runs.
Language detection calls are removed from pipelines where the source language is already known from metadata.
Abstractive summarisation is replaced with extractive for use cases where extractive output quality is acceptable.
Most Common Optimization Techniques
Technique | Mechanism | Typical saving |
|---|---|---|
Truncate text to the relevant portion | Submit only the characters that contribute to the analysis; skip boilerplate, headers, and footers | Proportional to the ratio of relevant to total text — often 30–70% on long documents |
Call only the features you use downstream | Audit which NLP features' outputs are actually consumed by the application; remove unused feature calls | Reduces cost by 1/N per unused feature removed from each call |
Delete idle custom model deployments | Remove deployments for inactive pilots, seasonal features, or completed projects | Eliminates 100% of hosting cost for idle deployments |
Cache results for recurring content | Store analysis results keyed on content hash; skip API call on cache hit | Eliminates cost for unchanged content re-processed on recurring runs |
Skip language detection when language is known | Use metadata (user locale, form selection) to bypass language detection calls | Eliminates one text record per document for known-language pipelines |
Use extractive instead of abstractive summarisation where appropriate | Extractive costs less per record; evaluate whether the quality difference matters for your use case | Meaningful per-record rate difference on summarisation-heavy workloads |