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.
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.
| Field | What it records |
|---|---|
| Sentiment and topicOverall sentiment | the true valence of the stay, read from the words, not the star |
| Trip type | who the guest is: family, business, couple, group, extended stay |
| Primary topic | the dominant subject of the conversation |
| Primary friction | the one thing that went wrong, by a fixed severity order |
| The two break axesFee or billing signal | surprise resort, parking, occupancy, amenity fees, and billing errors |
| Cleanliness signal | spotless, minor lapse, broadly dirty, pests, or odor |
| Room condition signal | modern, dated, worn, or broken, a spend signal, not a cleaning one |
| Trust or honesty signal | praised transparency, or an alleged deception or hidden fee |
| The peopleStaff interaction | named praise, named blame, or unnamed, on the service moment |
| Staff named | the actual employee a guest praises or blames |
| Staff role | front desk, housekeeping, food and beverage, concierge, manager |
| Praise driver | what a happy guest credits: service, cleanliness, value, a person |
| Loyalty, outcome and routingLoyalty signal | elite recognition given, ignored, or a guest leaving the brand |
| Recommendation | recommend, warn-others, loyal-repeat, or will-not-return |
| Issue resolution | whether a problem was fixed, made worse, or escalated |
| Competitor mention | a rival named, and which way the guest leaned |
| Issue severity | minor, moderate, or a serious safety or financial failure |
| Actionability lever | the operational owner of the fix |
| Evidence, verbatimPain-point phrase | the single worst thing, in the guest’s own language |
| Delight phrase | the single best thing, same discipline |
| Sentiment verbatim | an exact, unedited quote that captures the stay |
| Stay summary | one neutral sentence: who, what, outcome |
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

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.
| Method | What it returned |
|---|---|
| Clustering (TF-IDF, k-means)What you getOne cluster per review, named by its top words | On 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 review | On 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 review | On 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 |
When each one works
| Situation | Better fit |
|---|---|
| A new data source and no idea what is in it | Topic modeling or clustering, to learn the vocabulary |
| Looking for themes nobody has named yet | Topic modeling, rerun from time to time |
| A weekly or monthly report on the same issues | Fixed schema |
| Comparing locations, teams, channels or periods | Fixed schema, so the definitions do not move |
| Ranking issues by their effect on ratings, churn or cost | Fixed schema, joined to the outcome |
| Counting several problems in one record | Fixed schema (LDA gives a mixture, clustering gives one label) |
| Very large volumes on a tight budget | Embeddings 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.