Skip to content
Product
PlatformPricingDimensionsIntegrationsSecurityCompare
Solutions · by use case
Customer, guest and fan experienceProduct feedback and prioritizationRevenue, churn and retentionAgenciesContact center performanceAI agent and chatbot analyticsMulti-location performanceReviews and competitive benchmarking
Solutions · by industry
Hotels and hospitalityRestaurants and food serviceFitness and leisureRetail and e-commerceSports and live entertainmentInsuranceBanking and financial servicesSoftware and SaaSAutomotiveConsumer products and CPGContact centers and BPOsPublic sector and nonprofitReal estateGaming and betting
Learn
Artifacts GalleryCustomer storiesResearchBlogThought leadershipLessons Log in Start now
Blog

Topic Modeling vs LLM Classification for Customer Feedback

Topic models discover themes; fixed-schema LLM labels apply the ones you define to every record. We ran clustering, LDA and a 23-field schema on the same 8,504 hotel reviews.

Topic modeling discovers themes in customer feedback without being told what to look for, while LLM classification applies a fixed set of labels that you define to every record. Use topic modeling to explore a new pile of text and learn its vocabulary; use a fixed schema of labels when you need to count, track, compare and test the same things every week.

Below we run both on the same 8,504 hotel reviews , show what each returns, and list when each one is the right tool. How clustering works step by step is covered in Semantic Clustering Demystified; this post is about the choice between discovering topics and assigning them.

Two families of methods

Topic models and clustering learn structure from the text itself. Latent Dirichlet Allocation (LDA) treats each document as a mixture over a set of topics, where each topic is a distribution over words. Clustering puts each document in one group of similar documents. BERTopic sits between the two: it embeds documents with a language model, clusters the embeddings and describes each cluster with a class-based TF-IDF. You choose the number of topics or a clustering setting, and the method chooses what they are.

Fixed-schema classification works the other way round. You write the questions first: did this review mention a fee, was the room clean, was a staff member named, and if so, praised or blamed? A language model answers every question for every record, and each answer is stored as a typed field. We call those fields Dimensions. One review can carry many of them at once.

A worked example: 8,504 hotel reviews

Public Google reviews of 45 Marriott-family hotels in the Orlando metro, January 2025 to July 2026. 8,504 carry a star rating; 1,967 of those are one or two stars.

Clustering

Our earlier run used TF-IDF and k-means with eight clusters. Six of the eight were built on tone words like "amazing" and "great location" and held 59.5% of reviews. Almost every complaint landed in one remaining cluster of 3,199 reviews, which held 1,789 of the 1,967 bad reviews (91%) in that run.

We reran the same setup on 2026-10-26 with five different random seeds. With a current library version the cluster sizes came out differently from the first run, and the seeds disagreed with each other too: the adjusted Rand index between the seed-7 run and the other four ranged from 0.43 to 0.51, where 1 would mean identical groupings. The biggest complaint cluster held anywhere from 1,204 to 1,490 bad reviews depending on the seed. A count that moves this much between runs cannot be tracked week to week.

LDA

LDA with eight topics did better at separating problems. It produced a topic built on parking, charge, fee and resort, and another built on desk, told, check and said, the vocabulary of front-desk stories. It also produced a general "room, bed, shower, night" topic that held 745 of the bad reviews, and a topic that was simply the Spanish-language reviews.

Dimension Labs analysis

LDA finds a fees topic and a front-desk topic, and leaves most complaints in a general room pile

Eight LDA topics on 8,504 rated reviews, each review counted under its strongest topic. Bars: one- and two-star reviews in the topic, out of all reviews in it. Labels are each topic's top words.

room, hotel, rooms, night, bed, shower
745 of 1,717
room, desk, told, check, said
554 of 934
marriott, stay, experience, service, issues
289 of 407
parking, charge, fee, pay, resort
236 of 537
Spanish-language reviews
73 of 460
great, pool, nice, disney, breakfast
37 of 1,572
great, staff, amazing, friendly, clean
24 of 2,360
experience, truly, orlando, ritz
9 of 517
0250500750
Run by Dimension Labs on 2026-10-26: scikit-learn LatentDirichletAllocation, 8 topics, word counts with English stop words removed, random_state 7, on public Google reviews of 45 Marriott-family hotels in Orlando. Dark bars: the two topics that look like specific problems.

Because LDA gives each review a mixture, it also shows how mixed the reviews are: 56% of reviews had two or more topics at a weight of at least 0.2, and a quarter had no topic above 0.5. Two runs with different seeds agreed on each review's strongest topic only weakly (adjusted Rand index 0.27). And the topics are still word groups. Its fee topic is one pile of words about parking, charges, fees and the resort; nothing in it separates a fee the guest did not expect from a charge that was simply wrong.

A fixed schema

The published hotel brief used 23 Dimensions, extracted in one pass over each of 9,446 reviews. Each field is a question with a fixed set of answers, and the same question is asked of every review.

From the hotel brief

A fixed schema asks every review the same questions

The fields the brief's Meaning Layer dictionary lists by name (22 of the 23 Dimensions), grouped as the brief groups them. Each is answered for every one of 9,446 reviews in one pass.

FieldWhat it records
Sentiment and topicOverall sentimentthe true valence of the stay, read from the words, not the star
Trip typewho the guest is: family, business, couple, group, extended stay
Primary topicthe dominant subject of the conversation
Primary frictionthe one thing that went wrong, by a fixed severity order
The two break axesFee or billing signalsurprise resort, parking, occupancy, amenity fees, and billing errors
Cleanliness signalspotless, minor lapse, broadly dirty, pests, or odor
Room condition signalmodern, dated, worn, or broken, a spend signal, not a cleaning one
Trust or honesty signalpraised transparency, or an alleged deception or hidden fee
The peopleStaff interactionnamed praise, named blame, or unnamed, on the service moment
Staff namedthe actual employee a guest praises or blames
Staff rolefront desk, housekeeping, food and beverage, concierge, manager
Praise driverwhat a happy guest credits: service, cleanliness, value, a person
Loyalty, outcome and routingLoyalty signalelite recognition given, ignored, or a guest leaving the brand
Recommendationrecommend, warn-others, loyal-repeat, or will-not-return
Issue resolutionwhether a problem was fixed, made worse, or escalated
Competitor mentiona rival named, and which way the guest leaned
Issue severityminor, moderate, or a serious safety or financial failure
Actionability leverthe operational owner of the fix
Evidence, verbatimPain-point phrasethe single worst thing, in the guest’s own language
Delight phrasethe single best thing, same discipline
Sentiment verbatiman exact, unedited quote that captures the stay
Stay summaryone neutral sentence: who, what, outcome
Redrawn from section 06 of What your CX tools can't tell you. All 23 Dimensions are extracted in a single enrichment pass over each review, then queried like any other column.

Because a "surprise or hidden fee" and "a wrong or disputed charge" are separate fields, they could be measured separately against the rating. A surprise fee raised the chance of a one- or two-star review by 19 points (438 reviews). A wrong or disputed charge raised it by 44 (98 reviews). A front-desk mention, the theme LDA and clustering both surfaced as a large complaint group, came in at about 2 points, not significant. In the LDA run, fees and charges shared one topic and front-desk stories had another, and a topic weight cannot enter a causal model as a clean yes-or-no driver.

From the report: What your CX tools can't tell you

Exhibit C of the What your CX tools can't tell you. Split into separate fields, a wrong charge does more than twice the damage of a surprise fee
Exhibit C of the published report. Open the full report

Same 8,504 reviews, three methods

What each approach returned on the Orlando hotel reviews

Clustering from our earlier run; LDA and the rerun checks run 2026-10-26; the schema from the published brief.

MethodWhat it returned
Clustering (TF-IDF, k-means)What you getOne cluster per review, named by its top wordsOn these reviews6 of 8 clusters sorted by tone; one cluster held 91% of bad reviews in the first run, 61% to 76% on rerunsSame result on a rerun?Agreement between seeds (ARI) 0.43 to 0.51Tested against the rating?Cluster size only
Topic model (LDA)What you getA mix of topics per reviewOn these reviewsFound a fees topic and a front-desk topic; 56% of reviews mix two or more topicsSame result on a rerun?Top-topic agreement between seeds (ARI) 0.27Tested against the rating?Loosely, through topic weights
Fixed schema (LLM Dimensions)What you getEvery field answered for every reviewOn these reviews23 fields, including fee or billing, cleanliness, staff named and recommendationSame result on a rerun?Definitions stay fixed; checked on a 49-review QA sampleTested against the rating?Eight fee, cleanliness, staff and reservation signals were tested as drivers, each with a 95% range
ARI is the adjusted Rand index: 1 means two runs grouped the reviews identically, 0 means no better than chance. Clustering from Semantic Clustering Demystified; schema from What your CX tools can't tell you.

When each one works

SituationBetter fit
A new data source and no idea what is in itTopic modeling or clustering, to learn the vocabulary
Looking for themes nobody has named yetTopic modeling, rerun from time to time
A weekly or monthly report on the same issuesFixed schema
Comparing locations, teams, channels or periodsFixed schema, so the definitions do not move
Ranking issues by their effect on ratings, churn or costFixed schema, joined to the outcome
Counting several problems in one recordFixed schema (LDA gives a mixture, clustering gives one label)
Very large volumes on a tight budgetEmbeddings and clustering are cheaper per record; a schema can run on a smaller model once it has been checked

The two approaches work best in sequence. Run a topic model on a sample to see what customers talk about. Write the schema from what you find, in the words your business uses ("resort fee", "reservation not honored", "named staff member"). Check the labels on a sample, then run the schema on everything and add fields when new themes appear.

What a fixed schema costs you

  • It only finds what you asked about. A theme outside the schema stays invisible, which is why it pays to keep a free-text field such as "the single worst thing, in the customer's words" and to rerun discovery now and then.

  • The labels need checking. A model can apply a definition inconsistently, especially on edge cases. Before the hotel run, a 49-review stratified sample was checked by script: zero labels outside the allowed values, zero quotes that were not exact passages from the review, and one ambiguous case (a withheld refund after an unhonored reservation) that led to a rule change. Rule checks like these are a start; agreement with a human reviewer is the real test, covered in how to tell if your AI tagging is accurate.

  • Someone has to write it. A good schema uses the operator's words and maps each field to the team that owns the fix.

FAQ

Is BERTopic better than LDA for customer feedback?

For short texts like reviews and chat messages, embedding-based methods usually group paraphrases better than word counts do. Both still give you themes chosen by the algorithm, and both need a human to name and check them.

Can an LLM do topic discovery too?

Yes. You can ask a model to read a sample and propose themes. Treat the output the same way as a topic model's, as a draft list to turn into a schema.

How many fields should a schema have?

The hotel brief used 23 and the café brief 27. Start with the issues you would act on and the context you need to compare fairly, and add more as questions come up.

Dimension Labs builds hundreds of business-specific Dimensions from your tickets, chats, calls, emails, reviews and surveys, applies them to every record, joins them to CRM, billing and usage data, and shows which ones move ratings, retention and cost. The agent then produces the reports, decks and alerts on a schedule. See review intelligence and hospitality, or start with one file.

Dimension Labs/Start with one file From $299 a month

Stop reporting. Start understanding.

Start with one file. Ask why a number moved. Plans from $299 a month, no demo and no contract on monthly plans.