The Voxco Answers Anything Blog
Read on for more in-depth content on the topics that matter and shape the world of research.
.jpeg)
Text Analytics & AI
Verbatim Analysis Software - Easily Analyze Open-Ended Questions
Do you want to stay close to your customers? Of course you do!
Improving the customer experience is central to any business. More broadly, any organization needs to stay in touch with its constituents, be they customers, employees, clients, or voters.
In today’s world, getting your hands on the voice of the customer isn’t difficult. Most companies have more comments from their customers than they know what to do with. These can come from internal sources, such as
- E-mails to your support desk.
- Transcriptions from your call center.
- Messages to your customer service staff.
- Notes in your CRM system.
- Comments from website visitors.
For most companies, the problem isn’t lack of feedback. It’s the sheer volume of it. You might have thousands or even hundreds of thousands of new comments from your customers.
The question is, “How do you make sense of it?”
Traditional Survey Research
Traditional survey market research gives us some clues. Market research firms have been using surveys for years to guide their clients to improve customer satisfaction.
They have developed very powerful techniques to analyze comments from customers and turn them into actionable insights. Let’s take a look at how they do it to see whether we can come up with some ways to take our voice of the customer data and find new insights to improve your company.
How Survey Market Researchers Use Verbatim Analysis Software To Deal With Open-Ends
A survey has two fundamental question types: closed-end and open-end. A closed-end question is one where you know the possible set of answers in advance, such as your gender or the state you live in.
When a respondent provides a free form text response to a question it is an open-end: you don’t know just what the respondent is going to say. That’s the beauty of open-ends. They let our customers tell us new things you didn’t know to ask.
Survey researchers call the open-end responses verbatims or text responses. To analyze the responses the researcher has them coded. Humans trained in verbatim coding read the responses and invent a set of tags or codes that capture the important concepts from the verbatims.
In a survey about a new juice beverage the codes might look something like:
- Likes
- Likes flavor
- Likes color
- Likes package
- Dislikes
- Too sweet
- Bad color
- Hard to open
Human coders read each verbatim and tag it with the appropriate codes. When verbatim coding is completed, we can use the data to pose questions like
- What percentage of the respondents like the flavor?
- What is the proportion of overall likes to dislikes?
And if you know other things about the respondents, such as their gender, you can ask
- Do a greater percentage of men or women like the flavor?
The researcher would say that you have turned the qualitative information (verbatims) into quantitative information (codes).
How Can Verbatim Coding Work for You?
The technique of verbatim coding is used to analyze comments from customers, but it has its drawbacks. Verbatim coding is expensive and time consuming. It’s most appropriate when you have high quality data and want the best possible analysis accuracy.
In that circumstance, you can either:
- Have the verbatims coded by a company specializing in the technique, or
- License software so that you can code the verbatims yourself.
Verbatim analysis software, like Ascribe Coder, is used by leading market research companies around the globe to code verbatims. This type of software increases productivity dramatically when compared to using more manual approaches to coding – like working in Excel.
Returning attention to our pile of customer comments, we can see that it would be great to get the benefits of verbatim coding without the cost. It would be great to leverage the computer to limit the cost and timing, with less involvement from human coders.
That’s where text analytics comes in.
Using Text Analytics To Analyze Open Ends
Working with customer comments, text analytics can tell us several things
- What are my customers talking about? (These are topics.)
- What customer feedback am I getting about each topic? (These are expressions about topics.)
- How do they feel about these things? (These are sentiment ratings.)
If you were running a gym, you might get this comment:
- I really like the workout equipment, but the showers are dirty.
Text analysis identifies the topics, expressions and sentiment in the comment:

If we run a few thousand comments about our gym through text analytics, we might get results like this:

These are the things your members are talking about most frequently.
Each topic has an associated frequency (the number of times the topic came up) and a sentiment rating.
The sentiment rating for this analysis ranges from -2 as strong negative to +2 as strong positive. The sentiment scores are the averages for each topic.
Data Analysis: Drilling Into the Data
A good text analytics tool presents much more information than the simple table above. It will let you drill into the data, so you can see exactly what your customers are saying about the topics.
It should also let you use other information about your customers. For example, if you know the gender of each member, you can look at how the women’s opinions of the showers differ from the men’s.
Text Analytics Uncovers Important Insights For Your Business
With your text analytics solution, you can see immediately that your guests are generally positive about the staff. But you seem to have a problem with the lockers and the equipment. This lets you resolve the problem quickly – before any other customers have a bad experience.
Find Out Whether Verbatim Analysis Software Or Text Analytics Is Right For Your Business
Verbatim coding is a very well-developed part of traditional survey research. The coders who lead the analysis are experts in verbatim coding and the verbatim analysis software and play an important role in overseeing the analysis and the results. Verbatim coding produces very high accuracy, but it can also be expensive and time consuming. Text analytics also analyzes open ends, relying more on the computer to analyze the open end comments to uncover insights. While results are not quite as accurate, it does so at a fraction of the time and cost.Ascribe provides both traditional verbatim coding with Coder and advanced text analytics with CX Inspector. To learn more about whether Verbatim Coding or Text Analytics is right for your business, contact us or schedule a demo today.
Read more
Text Analytics & AI
Ascribe Regular Expressions
Ascribe allows the use of regular expressions in many areas, including codes in a codebook and for various search operations. The regular expressions in Ascribe include powerful features not found in standard regular expressions. In this article we will explain regular expressions and the extensions available in Ascribe.
Regular Expressions
A regular expression is a pattern used to match text. Regular expressions patterns are themselves text, but with certain special features that give flexibility in text matching.In most cases, a character in a regular expression simply matches that same character in the text being searched.The regular expressionlove
matches the same four characters in the sentence:I loved the food and service.
We will write:love ⇒ I loved the food and service.
To mean “the regular expression ‘love’ matches the underlined characters in this text”.Here are a few other examples:e ⇒ I loved the food and service.d a ⇒ I loved the food and service.b ⇒ Big Bad John.
Note in the last example that in Ascribe regular expressions are case insensitive. The character ‘b’ matches ‘b’ or ‘B’, and the character ‘B’ also matches ‘b’ and ‘B’.So far regular expressions don’t seem to do anything beyond plain text matching. But not all characters in a regular expression simply match themselves. Some characters are special. We will run through some of the special characters you will use most often.
The . (dot or period) character
A dot matches any character:e. ⇒ I loved the food and service.
To be precise, the dot matches any character except a newline character, but that will rarely matter to you in practice.
The ? (question mark) character
A question mark following a normal character means that character is optional. The pattern will match whether the character before the question mark is in the text or not.dogs? ⇒ A dog is a great pet. I love dogs!
Character classes
You can make a pattern to match any of a set of characters using character classes. You put the characters to match in square brackets:cott[oeu]n ⇒ Cotton shirts, cotten pants, cottun blouse
Both the question mark and character classes are great when trying to match common spelling errors. They can be particularly useful when creating regular expressions to match brand mentions:budw[ei][ei]?ser ⇒ Budweiser, Budwieser, Budwiser, Budweser
Note that the question mark following a character class means that the character class is optional.Some character classes are used so often that there are shorthand notations for them. These begin with a backslash character.The \w
character class matches any word character, meaning the letters of the alphabet, digits, and the _ (underscore) character. It does not match hyphens, apostrophes, or other punctuation characters:t\we ⇒ The tee time is 2:00.
The backslash character can also be used to change a special character such as ?
into a normal character to match:dogs\? ⇒ A dog is a great pet. Do you have any dogs? I love dogs!
Quantifiers
The quantifiers *
and +
mean that the preceding expression can repeat. The *
means the expression can repeat zero or more times, and the +
means the preceding expression can repeat one or more times. So *
means the preceding expression is optional, but if present it can repeat any number of times. While occasionally useful following a normal character, quantifiers are more often used following character classes. To match a whole word, we can write:\w+ ⇒ I don’t have a cat.
Note that the apostrophe is not matched.
Anchors
Anchors don’t match any characters in the text, but match special locations in the text. The most important of these for use with Ascribe is \b
, which matches a word boundary. This is useful for searching for whole words.\bday\b ⇒ Today is the Winter solstice. Each day gets longer, with more hours of daylight.
Combined with \w*
we can find words that start with “day”:\bday\w*\b ⇒ Today is the Winter solstice. Each day gets longer, with more hours of daylight.
or words that contain “day”:\b\w*day\w*\b ⇒ Today is the Winter solstice. Each day gets longer, with more hours of daylight.
Two other useful anchors are ^
and $
, which match the start and end of the text respectively.
Alternation
The vertical bar character |
matches the expressions on either side of it. You can think of this as an OR operation. Here is a pattern to match either the word “staff” or one starting with “perso”:\bstaff\b|\bperso\w+\b ⇒ The staff was friendly. Your support personnel are great!
Regular expression reference
This is just a glimpse into the subject of regular expressions. There are books written on the subject, but to make effective use of regular expressions in Ascribe you don’t need to dig that deep. You can find lots of information about regular expressions on the web. Here is one nice tutorial site:RegexOneThe definitive reference for the regular expressions supported in Ascribe is found here:Regular Expression LanguageYou can also download a quick reference file:Regular Expression Language - Quick Reference
Ascribe Extended Regular Expressions
Ascribe adds a few additional operators to standard regular expressions. These are used to tidy up searching for whole words, and to add more powerful logical operations.
Word matching
As we have mentioned, you can use \b
to find whole words:\bstaff\b|\bperso\w+\b ⇒ The staff was friendly. Your support personnel are great!
But those \b
’s and \w
's make things hard to read. Ascribe allows you to use these notations instead:NotationStandard regex equivalentMeaning<(\b
Start of word>\b)
End of word<<(\b\w*
Word containing ...>>\w*\b)
... to end of wordWe can now write:<as>
(the word “as”)<as>>
(a word starting with “as”)<<as>
(a word ending with “as”)<<as>>
(a word containing “as”)Examples:<staff>|<perso>> ⇒ The staff was friendly. Your support personnel are great!<bud> ⇒ Bud, Bud light, Budweiser, Budwieser<bud>> ⇒ Bud, Bud light, Budweiser, Budwieser<<ser> ⇒ Bud, Bud light, Budweiser, Budwieser<<w[ei]>> ⇒ Bud, Bud light, Budweiser, Budwieser
If you look in the table above, you will note that each of the standard regular expression equivalents have a parenthesis in them. Yes, you can use parentheses in regular expressions, much as in algebraic formulas. It’s an error in the regular expression to have a mismatched parenthesis. So, the pattern:<as
is not legal. The implied starting parenthesis has no matching closing parenthesis. This forces you to use these notations in pairs, which is the intended usage.The use of these angle brackets does not add any power to regular expressions, they just make it easier to read your expressions. The logical operators I describe next do add significant new power.
Logical operators
We have seen that it is easy to search for one word or another:<staff>|<personnel>
matches either of these words. What if we want to search for text that contains both the words “cancel” and “subscription”? This is not supported in standard regular expressions, but it is supported in Ascribe. We can write<cancel>&&<subscription>
This matches text that contains both words, in either order. You can read &&
as “AND”.We can also search for text that contains one word and does not contain another word. This expression:<bud>>&~<light>|<lite>
matches text that contains a word starting with “bud” but does not contain “lite” or “light”. You can read &~
as “AND NOT”.The &&
and &~
operators must be surrounded on either side by valid regular expressions, except that the &~
operator may begin the pattern. We can rewrite the last example as:&~<light>|<lite>&&<bud>>
which means exactly the same thing.Pay attention to the fact that these logical operators require that the expressions on either side are valid on their own. This pattern is illegal:(<cancel>&&<subscription>)
because neither of the expressions(<cancel><subscription>)
are legal when considered independently. There are mismatched parentheses in each.
Pattern prefixes
There are two prefixes you can use that change the meaning of the match pattern that follows them. These must be the first character of the pattern. The prefixes are:*
Plain text matching>
Standard regular expression matching, without the Ascribe extensionsThese prefixes are useful when you are trying to match one of the special characters in regular expressions. Suppose we really want to match “why?”. Without using a prefix gives:why? ⇒ What are you doing and why? Or why not?
But with the *
prefix we can match the intended word only (with the question mark):*why? ⇒ What are you doing and why? Or why not?
The >
prefix is useful if you are searching for an angle bracket or one of the Ascribe logical operators:>\d+ < \d+ ⇒ The algebraic equation 22 < 25 is true.
It helps to know that \d
matches any digit.
Summary
Regular expressions are a powerful feature of Ascribe. Spending a little time getting used to them will pay off as you use Ascribe. The Ascribe extensions to regular expressions make searching for words easier, and support logical AND and NOT operations.
Read more
Text Analytics & AI
Brand disambiguation using the Ascribe Coder API
Asking respondents to recall brand names is a common survey technique. Often this is done by asking the respondent to pick brands from a list. Such aided brand awareness questions can introduce bias. We can remove this bias by asking the respondent to type the brand name without providing a list. These unaided brand awareness questions can provide superior results, at the cost of trying to disambiguate the often incorrectly spelled brand names.In this post I will describe a technique to disambiguate brand mentions automatically. We will use a taxonomy to map brand misspellings to the correct brand name, then automatically code the responses using a codebook constructed from the taxonomy. This technique makes use of the Ascribe Coder API. It stores and automatically codes the brand mentions and returns the disambiguated brands to the API client. The API client can therefore use these corrected brand mentions for branch logic in the survey.
Summary of the Technique
The Ascribe Coder API can be used to automatically code responses. But coupled with Rule Sets it can also help automate curating brand mentions, improving the ease and accuracy of auto-coding.The approach we will take involves these key components:
- Manually build a taxonomy that groups brand misspellings to the correct brand names.
- Construct a Rule Set that maps incorrectly spelled brand mentions to the correct brand name using the taxonomy.
- Using the Ascribe Coder API:
- Setup up the study and questions in Ascribe.
- Use the taxonomy to populate the codebook of the unaided brand awareness question.
- While the survey is in the field, send new responses for the unaided brand awareness question to the API for storage, brand disambiguation, and automated coding.
Brand Disambiguation
Imagine you have an unaided brand awareness question: “What brand of beer did you most recently drink?” Let’s suppose one of the brands you want to identify is Bud Light. Your will get responses like:
- Bud Light
- Bud Lite
- Budweiser light
- Budwiser lite
- Bud lt
- Budlite
And many more. The creativity of respondents knows no bounds! Ideally you would like to both correctly code these responses as “Bud Light”, but also curate them such that they are all transcribed to “Bud Light”. How can we make this happen?
Building a Brand Taxonomy
Observe that the list of variations of Bud Light above can be thought of as a set of synonyms for Bud Light. We can make a taxonomy that maps each of these to Bud Light. Bud Light is the group, and the variations are the synonyms in that group. We can do this similarly for all the brands we are considering.
Obtaining the correct brand list
Wikipedia provides this list of brands and sub-brands for Budweiser:
- Budweiser
- Bud Light
- Bud Light Platinum
- Bud Light Apple
- Bud Light Lime
- Bud Light Lime-A-Ritas
- Budweiser Select
- Budweiser Select 55
- Budweiser 66
- Budweiser 1933 Repeal Reserve
- Bud Ice
- Bud Extra
- Budweiser/Bud Light Chelada
- Budweiser Prohibition Brew
- Budweiser NA
These become the groups in our taxonomy. We need to build synonyms for each group to capture the expected misspellings of the brand.
Creating the Synonyms
When building a taxonomy, it is good practice to start with the more specific brand names and progress to the less specific. I will demonstrate with the first three brands in the list above. Start with the most specific brand, “Bud Light Platinum”. We can construct a synonym to match this brand with these rules:
- The mention should contain three words
- The first word must start with “bud” (case insensitive)
- The second word must start with either “lig” or “lit”
- The third word must start with “plat”
- The words must be separated with at least one whitespace character
Let’s build a regular expression that conforms to these rules. Here is the portion of the regular expression that will match a word starting with “bud”:bud\w*The \w*
matches any number of word characters. The match pattern for the third word is constructed similarly.To match the second word, we want to match a word that starts with “lig” or “lit”:li[gt]\w*The [gt]
matches either the character “g” or “t”. Putting these three word patterns together gives:bud\w* li[gt]\w* plat\w*This will match any mention that has a word containing “bud” followed by a white space character, then a word that starts with “lig” or “lit”, followed by a white space character, then a word that starts with “plat”. This is not exactly what we want. This pattern will match:
- Bud Light Platinum
- Bud light platnum
- Budweiser lite platinum
But it will also match
- Redbud light platinum Stella Artois
To assure that we match mentions that contain only the synonym pattern we need to surround the regular expression with the start of string and end of string operators:^bud\w* li[gt]\w* plat\w*$Finally, we should tolerate any number of whitespace characters between the words. The expression \s+
will match one or more whitespace characters. Hence our finished synonym is:^bud\w*\s+li[gt]\w*\s+plat\w*$
Using Multiple Synonyms in a Group
We may well want to map the response “budlite platinum” to our group, but the synonym we created above will not do that. There is no space between “bud” and “lite”. We can fix this in one of two ways. First, we can try to make the synonym we created above also match this response. Second, we can make a new synonym to handle this case. For this simple example it is not hard to make the existing synonym also match this response, but in general it is better to add a new synonym rather than trying to make a single “one size fits all” synonym. The regular expression patterns are already hard enough to read without making them more complicated! Here is a second synonym that will do the job:^budli[gt]\w*\s+plat\w*$
Using the Group Process Order
We may well want to make our taxonomy match “Budweiser” if a response starts with “bud”, but only if it does not match any of the more specific groups. Groups with a lower Process Order are checked for matches before groups with higher process order. Groups with the same Process Order value are checked for matches in indeterminant order, so it is important to design the synonyms for groups with the same process order such that no two in different groups match the same string.We can create a Budweiser group to match any single word that starts with “bud” by giving it a single regular expression synonym with this pattern:^bud\w*$Assuming the other groups in the taxonomy have the default Process Order of 100, we can assign a Process Order to this group with any value greater than 100. This group will now match single words that start with “bud” only if no other group matches the string.
Creating the Rule Set
You create Rule Sets in Ascribe as a manual operation. We want to create a Rule Set that can be used by the Ascribe Coder API to disambiguate our brand mentions. Given our brand taxonomy, its job is to map the response provided by the respondent to the corrected brand name. Fortunately, our Rule Set can be used with any taxonomy, so we need only one Rule Set which can be used with any brand list taxonomy.Create a new Rule Set in Ascribe. It initially contains no rules. We want to populate it with a Modify Response on Load rule to map responses to the correct beer brand using our new taxonomy.Let’s make a Modify Response on Load rule to map the user specified brand to our curated brand. It looks like this:// Replace response with group
if (f.taxonomy) {
var group = f.taxonomy.Group(f.r);
if (group) {
f.r = group;
}
}This rule says: if a taxonomy is passed to the rule, map the response to a group using the taxonomy. If there is a resulting group, replace the response with the group. The result is that the misspelled brand mention is replaced with the correctly spelled brand name.
Using the Ascribe Coder API
Armed with this taxonomy and Rule Set we have the hard part done. Now we need to make use of it to automatically code responses. The Ascribe Coder API supports the use of Rule Sets, which in turn allow access to a taxonomy.
Setting up the Study from Survey Metadata
If you wish, you can use the Ascribe Coder API to create the study and questions in Ascribe from the survey metadata, as described in this post. Alternatively, you can create the study and questions in Ascribe using the Ascribe web site.
Query for Resources by ID
When we created the taxonomy and Rule Set in Ascribe, we gave each of them an ID. Via the API we can query the Taxonomies and RuleSets resources to find the key for each.For example, we can query for the taxonomy list with a GET tohttps://webservices.goascribe.com/coder/TaxonomiesThe JSON response has this form:{
"taxonomies": [
…
{
"key": 190,
"id": "Beers",
"description": "Beer brand disambiguation",
"countGroups": 35,
"countSynonyms": 47
},
…
],
"errors": null
}If we know that that we named our taxonomy “Beers” we now know that its key is 190. While the ID of the taxonomy may be changed by the user, the key will never change. It is therefore safe to store this key away for any future use of the taxonomy.Keys can be found for other objects from their ID in a similar fashion by querying the appropriate resource of the API. In this manner we can find the keys for our Rule Set, and for any study and question in that study given their respective IDs.
Creating the Codebook from the Taxonomy
We are using our taxonomy and Rule Set to disambiguate brands as responses are loaded. If we create the Codebook properly we can automatically code these corrected responses as they are loaded. As a bonus, we can use the taxonomy to create the codebook automatically.Once we have our taxonomy key, we can query the Taxonomies resource for the groups and synonyms if the taxonomy. The response body has this form:{
"groups": [
{
"key": 22265,
"name": "Bud Light Platinum",
"synonyms": [
{
"key": 84539,
"text": "^bud\\w*\\s+li[gt]\\w*\\s+plat\\w*$",
"isRegEx": true
},
{
"key": 84540,
"text": "^budli[gt]\\w*\\s+plat\\w*$",
"isRegEx": true
}
]
},
{
"key": 225,
"name": "Budweiser",
"synonyms": [
{
"key": 8290,
"text": "^bud\\w*$",
"isRegEx": true
}
]
}
],
"key": 190,
"id": "Beers",
"username": "cbaylis",
"description": "Beer brand disambiguation",
"errors": null
}Note that the group names are what we want as codes in our codebook. These are the correctly spelled brands. Now, to automatically code the corrected responses, all we need to do is provide a regular expression for each code in the codebook with the correct brand name, surrounded by the start and end of string operators, for example ^Budweiser$
.We POST to the Codebooks resource to create the codebook. The request body has this form:{
"codebook": [
{
"description": "Bud Light Platinum",
"regexPattern": "^Bud Light Platinum$"
},
{
"description": "Budweiser",
"regexPattern": "^Budweiser$"
}
]
}We have created our codebook from the taxonomy and have prepared it for regular expression coding of the correctly spelled brand names.As a defensive programming note, you should escape any regular expression operators that may appear in the brand name. This would include such characters as [.$*+?]
.
Loading and Automatically Coding Responses
We now have all the tools in place to load and automatically code responses. We can do this after data collection is completed, or in real time while the survey is in field.We can put the responses into an Ascribe study with a POST to the Responses resource of the API, as described here: https://webservices.goascribe.com/coder/Help/Api/POST-Responses-QuestionKey. In the body of the POST we send the responses, and specify our Rule Set and taxonomy, and that we want to automatically code responses using regular expression matching to the codes in the codebook. The body of the POST has this form:{
"responses": [
{
"rid": "100",
"verbatim": "budwiser",
"transcription": "budwiser"
},
{
"rid": "101",
"verbatim": "bud lite platnum",
"transcription": "bud lite platnum"
}
],
"autoCodeByRegex": true,
"ruleSetKey": 6,
"taxonomyKey": 190
}Note that we provide the text of the response for both the verbatim and transcription of each response. The combination of our taxonomy and Rule Set will change the verbatim to the corrected brand name. By including the original response in the transcription, it is available in Ascribe Coder to see the original response text.The response body has this form:{
"codebookKey": 1540228,
"responsesAdded": 2,
"existingResponsesUnchanged": 0,
"responsesModifiedByRuleSet": 2,
"responsesVetoedByRuleSet": 0,
"responsesCodedByTextMatch": 0,
"responsesCodedByInputId": 0,
"responsesCodedByRegex": 2,
"addedResponses": [
{
"rid": "100",
"codes": [
{
"codeKey": 915872,
"description": "Budweiser"
}
]
},
{
"rid": "101",
"codes": [
{
"codeKey": 915873,
"description": "Bud Light Platinum"
}
]
}
],
"errors": null
}The rid values in the response correspond to those in the request. We see that we have mapped the misspelled brand names to their correct spellings, and automatically applied the code for those corrected brand names. The codeKey values correspond to the code in our codebook.If you are using the Ascribe Coder API directly from the survey logic, the codeKey and/or description can be used for branching logic in the survey.
Summary
We have seen how to use the Ascribe Coder API in conjunction with a taxonomy to correct brand name misspellings and automatically code the responses. While we have limited our attention to brand names, this technique is applicable whenever short survey responses in a confined domain need to be corrected and coded.
Read more
Text Analytics & AI
Why Choose Ascribe for Text Analytics
Choosing the Right Text Analytics and Sentiment Analysis Tool to Analyze Your Open-Ended Responses
Open-ended responses provide some of the most valuable insights for guiding business decisions, yet are often underutilized (or outright ignored) when analyzing market research surveys and other datasets with open-ended or textual responses. By leaving this key data on the table, customer loyalty metrics, employee engagement data, innovation research, and more go untold. Critical opportunities are lost or—at best—acted on with limited insight.
Market researchers often report feeling frustrated that the data they’re collecting, and know to hold key understandings, goes unused—its potential untapped because to analyze would be a long, arduous process that they don’t have the time or resources to execute.
Ascribe CX Inspector was designed to meet the need for an efficient text analytics tool. With CX Inspector, gaining insight from verbatim comments is not only possible… It’s simple. Manually analyzing the open-ended responses sitting on your desk could take days or even weeks, but with Ascribe CX Inspector, a leading tool for sentiment analysis, that data becomes usable knowledge in a matter of minutes.
Analyze Large Amounts of Open-Ended Responses from Datasets Quickly and Easily
Ascribe CX Inspector is a customizable text analytics software that allows users to gather and sift through open-ended data quickly and easily. CX Inspector integrates structured and unstructured data using topic and sentiment analysis to better understand the responses provided in customer satisfaction, employee engagement, concept idea tests, and other valuable datasets.
X-Score
CX Inspector uses a patented tool called X-Score to efficiently measure satisfaction and sentiment and identify the key drivers of positive and negative sentiment, or satisfaction and dissatisfaction. A score between 0-100 indicates positive sentiment or satisfaction, while -100 to 0 indicates negative sentiment or dissatisfaction. X-Score helps businesses uncover crucial next steps for improving the score and driving real business results, and can be used to benchmark results over time.
Driven by Sentiment and Topic Analysis
CX Inspector’s interactive and customizable dashboards empower market researchers to explore their data by filtering through key variables to better understand who or what is being affected—zero in on individual comments or focus on the top-level themes that matter most to you and your business. You can also analyze and create reports, like crosstabs and co-occurrences, to uncover knowledge to improve your understanding of the data.
Ease of Use
Ascribe CX Inspector is a leading text analytics tool for insight professionals and market researchers who have large datasets with open-ended comments that they would like to analyze, but haven’t found the time, money, nor right solution to do so. CX Inspector empowers you to analyze thousands—even hundreds of thousands—of open-ended responses in minutes (compared to hours, days, or weeks).
CX Inspector includes user-friendly features such as:
- Interactive, customizable dashboard
- ‘Drag and Drop’ grouping capabilities
- Ability to click through and see individual comments
- Translation from 100 languages
- Ability to filter by any variable
- PII removal and profanity clean-up
- Import and export of data is quick and easy
Ascribe CX Inspector uses advanced AI and NLP to smoothly integrate data and generate swift and accurate results. And if data integration is an issue, Ascribe offers custom API services to support data importing.
How to Use CX Inspector for Text Analytics and Sentiment Analysis
As any business owner knows, it costs more to gain a new customer or onboard a new employee than it does to retain an existing one. Text analytics and sentiment analysis from CX Inspector bridges the gaps between your business and your customers or employees by uncovering key sentiment, engagement, and loyalty insights.
But CX Inspector isn’t just limited to customer satisfaction and employee engagement datasets—in fact, it can be used to analyze open-ended responses from:
- NPS studies
- VOC research
- Advertising copy tests
- Various tracking studies
- Innovation research
- Concept idea tests
- And more
Whatever your data represents, CX Inspector empowers you to ask the valuable open-ended questions that previously felt off-limits due to time-consuming, costly, and complicated analysis. Already swimming in a sea of data? Finally make it work for you by analyzing it in a matter of minutes, and interpret it in a variety of meaningful ways that support your business.
CX Inspector is Your Solution to Analyzing Open-Ended Responses
With key insights that could inform critical business decisions on the line, analyzing and understanding open-ended survey results is more important than ever. Whether you need to gauge customer satisfaction or employee engagement, test advertising copy or concept ideas, Ascribe CX Inspector is the text analytics tool for the job. Analyze your datasets in minutes, visualize and export results in whichever way is most meaningful, and uncover key insights to help guide your business decisions.
Analyze open-ended responses and gain key business insights with CX Inspector
https://www.youtube.com/watch?v=ng2NmoOwgc4
Read more
Text Analytics & AI
Using Swagger Documentation and Postman with the Ascribe APIs
The Ascribe APIs provide documentation both as static html pages and an interactive Swagger page. The static documentation is more convenient for looking over the API, but the Swagger documentation provides powerful features for interaction with the API. We will use examples from the Ascribe Coder API, but the same techniques apply to the Ascribe CXI API.
To open the documentation page for the API, navigate to the root URL of the API in your browser. For the Ascribe Coder API this is https://webservices.goascribe.com/coder. The top of the page looks like this:

Click the Documentation link in the toolbar to open the static help pages, or the Swagger link to open the Swagger documentation. The top of the Swagger documentation page looks like this:

The REST resources available are laid out on the page like this:

Two resources are shown here, Codebooks and Companies. Each of these has one GET operation and one POST operation. Click on the operation to show details. For example, if we click the POST operation for the Companies resource we see:

The example response produced by Swagger is a bit confusing. Swagger wraps the response example in an object that specifies the content type, in this case application/json. The actual response body is the value of this property, or in this case:
{
"key": 3,
"id": "ACME"
}
This POST operation accepts parameters in the body of the request, as described in the Parameters section in the operation above. To get details about the fields of the response or request bodies, click on the Model link above the example. In this case for the Response body we see:

And for the Request body we find:

Experimenting with the API from the Swagger page
You can experiment with the API directly from the Swagger page. To do so, the first step is to obtain a bearer token for authentication as detailed in this post. To obtain the token, POST to the Session resource. Expanding the POST operation of the Sessions resource we find:

Click on the request example to copy it to the request body:

Now edit the values for the request body, providing your credentials. I’ll log in to an Ascribe account called “Development”:

Now click the Try it Out! button. Scroll down to the Response Body section to find:

The API has provided two tokens, either of which can be used for client interactions with the API. You can elect to use either token, but don’t use both. The tokens have different semantics. The authenticationToken
should be passed in a header with key authentication
. The bearer token should be passed in a header with key authorization
. The word bearer
and the space following it should be included in the value of the authorization
header.
The authentication token will remain valid for thirty minutes after the last request to the API using this token. In other words, it will remain valid indefinitely provided you make a request with this token at least once every thirty minutes. The bearer token never expires, but will become invalid if the account, username, or password used to obtain the token change.
The bearer token (but not the authentication token) can be used for experimentation with the API from the Swagger page. To use the bearer token, copy it from the response body. It is long, so it is easiest to copy the response body and paste it into a text document. Then get rid of everything except the value of the bearer token. This means everything within the quotation marks, including the word bearer, but not including the quotation marks. You can save this value for future use so that you don’t have to go through this each time you experiment with the API.
Now, armed with your bearer token, paste it into the api_key
box at the top of the Swagger documentation page:

Now you are ready to work out with the API. For example, you can expand the GET operation of the Companies resource and click Try it Out!
Assuming you have one or more companies in your account, you will get a response like:
{
"companies": [
{
"key": 11288,
"id": "Language Logic"
},
{
"key": 11289,
"id": "Saas-fee rentals"
},
{
"key": 11291,
"id": "ACME"
}
],
"errors": null
}
Using Postman
The Swagger documentation page is handy for simple experimentations, but you will probably want a better API development tool as you develop your own API client. Postman is one such tool. You can easily import the API from Ascribe into Postman. To do so, open Postman and click the Import button in the toolbar:

In the Import dialog, select Import from link
. Paste in the URL from the toolbar of the Ascribe Swagger documentation page:

Click Import, and Postman will import the API like so:

Adding the bearer token
That did a lot of work for you, but you still must tell Postman about your bearer token. Edit the new Ascribe Coder API collection:

Select the Authorization tab and set the type to Bearer Token. In the Token box, paste the value of the bearer token without the leading word bearer
and the space following it:

Completing setup in Postman
Now you are ready to work out with the API in Postman. Most of the operations are set up for you, but there are a few details to be aware of.
First, those operations that require a request body will not have that body properly populated. You can either edit these by hand or copy the example body from the Swagger documentation into Postman as a starting point.
Second, be aware that Postman will create variables for operations that accept parameters in the request path and query string. An example is the GET /Studies operation. This operation accepts three parameters in the query portion of the url: idFilter
, statusMask
, and clientCompanyKey
. If we try this operation in Postman using initial configuration after importing the Coder API we get the response:
{
"studies": [],
"errors": null
}
Where are our studies? You might expect to see all the studies for your account listed. To understand why they are not listed, open the Postman console. In the View menu in Postman, select Show Postman Console:

Now, with the Postman console displayed, try the GET /Studies operation again. In the Postman console we see:

This is the actual GET request URL sent to the API. The request accepts three variables as parameters, and we have not supplied these variables. We can tell Postman not to send these parameters by opening the Params
section of the GET request in Postman:

Clear the checkbox to the left of each of these parameters, then send the request again. The Postman console now displays:

and the response body contains a list of all studies on our account. To query only for studies that are complete, set the statusMask
parameter value to c
:

The console shows that the request now contains the desired status mask:

and the response body contains only those studies that are complete.
Using Swagger to Generate the API Client
The Swagger documentation can also be used to generate the initial code for your API client automatically. Visit https://swagger.io/tools/swaggerhub/ for more information. The code generation tools on this site can create API client code in a wide variety of languages and frameworks, including Python, Ruby, Java, and C#.
Summary
The Swagger documentation for Ascribe APIs does far more than simply documenting the API. It can be used to create a test platform for API client development using Postman. It can also be used to generate stub code for your API client.
Read more
Text Analytics & AI
Automating Coding Workflow with the Ascribe Coder API
The Ascribe Coder API allows your company to send survey responses to Ascribe and retrieve back the codebooks and coded responses. Using the Ascribe Coder API you can create a study, create questions in the study, load responses to be coded to the question, and get the results of the coding.Before you can interact with the Ascribe Coder API you must authenticate. See this post for details.The API interactions for this workflow are:
- POST /StudiesCreate a new study. Its key is returned.
- POST /Questions/{StudyKey}Create a new question in the study. Its key is returned.
- POST /Responses/{QuestionKey}Put responses to be coded into the question.
- Humans code the responses, creating a codebook as they code.
- GET /Studies/{StudyKey}Query for completion of the coding work. Repeat at intervals until coding is complete.
- GET /Codebooks/Question/{QuestionKey}Get the codebook constructed by the coders.
- GET /Responses/{QuestionKey}Get the coding results.
Let’s go through each of these operations a step at a time.
Create a Study with the Ascribe Coder API
Assuming that we want to create a new study in Ascribe we POST to the /Studies resource. The body of the request looks like this:{
"id": "S458-3"
}This creates a new study with the ID S458-3. The ID can be any text. The API responds with:{
"key": 544,
"id": "S458-3",
"status": "p"
}The status of "p"
means that coding is in progress. This is an indication to the coding team that this job needs to be coded. The key returned is important. That is how we will refer to the study in subsequent interactions with the API.If we don’t want to create a study, but would rather add a new question to an existing study, we can query the /Studies resource to find the study key given the study ID.
Create a Question with the Ascribe Coder API
Armed with our study key, 544 in the example above, we can create a question in the study. To create the question, we POST to the /Questions/{StudyKey} resource, so in our case we POST to /Questions/544. The body of the request looks like this:{
"id": "Q1",
"type": "o",
"text": "What did you like about the product?"
}This creates a new Open question ("type": "o"
), with ID “Q1”. The response has this form:{
"key": 3487,
"id": "Q1",
"type": "o",
"text": "What did you like about the product?"
}Now we have the key for the newly created question, and we are ready to load it with responses to be coded.
Load Responses to Code with the Ascribe Coder API
To load responses, we POST to the /Responses/{QuestionKey} resource, so for the example above we would POST to /Responses/3487. The body of the request would look like this:{
"responses": [
{
"rid": "34-22907",
"verbatim": "I do not like the red color"
},
{
"rid": "34-22988",
"verbatim": "This is a fantastic product"
}
]
}And the response:{
"responsesAdded": 2,
"existingResponsesUnchanged": 0
}Each response in the array of responses sent to the API must have the rid
(respondent ID) and verbatim
properties set to strings of one character or more. The rid
values must be unique within the array of responses. If the rid
value for a given response is already present in the question in Ascribe the response will be ignored. If we do exactly the same POST again to the API, the response would be:{
"responsesAdded": 0,
"existingResponsesUnchanged": 2
}This is because the respondent ID’s are already present in the question.You should limit the number of responses sent in a single POST to 1000 or so. If you have more responses to load into the question than that, send them in separate POST operations.
Human Coding
The coding team can now get to work on the question. As the coders do their work they will add codes to the codebook for the question. Once coding of all the questions in the study is complete the coding team will set the status of the study to Completed.When the coding team has set the status of the study to Completed it is the signal that the coding results are available for retrieval via the API.
Polling for Completion of Coding with the Ascribe Coder API
You can test for completion of the coding work with a GET to the /Studies/{StudyKey} resource. Our study key is 544, so we need to GET from /Studies/544. The response looks like this:{
"key": 544,
"id": "S458-3",
"status": "p"
}Whoops! The coding is not yet complete, because the status is "p"
, meaning coding in progress. Wait for a while and try again, until the status is "c"
, meaning completed. Now we can get the coding results.
Retrieving a Codebook with the Ascribe Coder API
We need two things to collect the results of coding. The codebook and the codes applied to each response. We can retrieve these in either order. To get the codebook we GET from the /Codebooks/Question/{QuestionKey} resource. In our example we would GET /Codebooks/Question/3487. The response has this form:{
"codebookKey": 1499,
"codebook": [
{
"key": 528,
"description": "Not like red",
"outputId": "201"
},
{
"key": 529,
"description": "Fantastic product",
"outputId": "202"
}
]
}This codebook contains only two codes. Each has a key
, textual description
as displayed in the codebook, and an outputId
. The output ID identifies the code for the tab department. But to associate these codes with the coding results from the API we want the code keys, 528 and 529.
Retrieving Coding Results with the Ascribe Coder API
The final operation in our workflow is to get the results of the coding. We GET from the /Responses/{QuestionKey} resource. The response has this form:{
"responses": [
{
"rid": "34-22907",
"codeKeys": [
528
]
},
{
"rid": "34-22988",
"codeKeys": [
529
]
}
]
}The coders have applied code 528, “Not like red”, to respondent "34-22907". 528 is the key of the code in the codebook. The other respondent has received the “Fantastic product” code. While each response in this example has only one code applied, in general any number of code keys can be returned in the codeKeys
arrays.Note that the text of the responses is not included in the response to reduce the payload size. If you want the response text you can set the includeText
property in the request body to true
. The response would then look like this:{
"responses": [
{
"rid": "34-22907",
"text": "I do not like the red color",
"codeKeys": [
528
]
},
{
"rid": "34-22988",
"text": "This is a fantastic product",
"codeKeys": [
529
]
}
]
}
Summary
The Ascribe Coder API can be used to automate the workflow in your coding department. You can send responses to be coded to Ascribe and retrieve the results of the coding operation.See the Ascribe Coder API documentation for information on how to automate coding of responses as they are sent to Ascribe.
Read more
Text Analytics & AI
Authentication with Ascribe APIs
The various Ascribe™ APIs, such as the Ascribe Coder API, share a common authentication operation. You authenticate with the API by a POST to the /Sessions resource. To interact with any of the other resources in the APIs you must include a token returned in the POST response in an HTTP header.
Obtaining an Authentication Token
To obtain an authentication token, POST to the /Sessions resource. The body of the POST request contains the login credentials for an Ascribe user: Account, Username, and Password. The body of the POST request has this form:{
"account": "MyAscribeAccount",
"userName": "apiuser",
"password": "--------"
}Here we are authenticating as with the user name apiuser
, on the MyAscribeAccount
. We recommend that you create an Associate in Ascribe exclusively for the API. This is because the time accounting features of Ascribe will attribute activity initiated via the API to this user. This makes interpretation of the time accounting reports easier.The POST response has this form:{
"authenticationToken": "0e2338c4-adb4-474a-a26a-b9dbe1b32ac8",
"bearerToken": "bearer eyJhbGciOiJSUzI1NiIsInR5cC ... WiiVzXPhdgSWNvH1hNOIirNmg"
}The value of the bearerToken
property is actually much longer than shown here. You can use either of these tokens (but not both) in subsequent operations with the API.
Differences between the Token Types
The authenticationToken
returned by the /Sessions resource expires after 30 minutes of inactivity with the API. In other words, you must perform an operation with the API at least once every 30 minutes. After that you must obtain another token from the /Sessions resource. The token will remain valid indefinitely if you do make a request at least once every 30 minutes.The bearerToken
does not expire. Once you have obtained a bearerToken
it will remain valid until the login credentials of the user are changed.
Using Authentication Tokens
To use the authenticationToken
returned by the /Sessions resource, include it in an HTTP header. The key of the header is authentication
, and the value is the authenticationToken
. The raw HTTP request looks like this:GET /coder/studies
accept: application/json, text/json, application/xml, text/xml
authentication: 207e5be1-c3fa-4ff6-bbc7-475a367ec095
cache-control: no-cache
host: webservices.languagelogic.net
accept-encoding: gzip, deflateTo use the bearerToken
, use an HTTP header whose key is “authorization” and value the bearerToken
. The raw HTTP request looks like this:GET /coder/Studies
accept: application/json, text/json, application/xml, text/xml
authorization: Bearer eyJhbGciOiJSUzI1NiI ... lJqc7nPxcFdU3s90BkOPlPF6wTxkzA
cache-control: no-cache
host: webservices.languagelogic.net
accept-encoding: gzip, deflate
Summary
The Ascribe APIs require the remote client to authenticate. The remote client authenticates by providing user credentials, and uses one of the two tokens returned in subsequent operations with the API.See the Ascribe Coder API documentation, and the Ascribe CX Inspector API documentation for more information.
Read more
Text Analytics & AI
Verbatim Coding for Open Ended Market Research
Coding Open-Ended Questions
Verbatim coding is used in market research to classify open-end responses for quantitative analysis. Often, verbatims are coded manually through software such as Excel, however, there are verbatim coding solutions and coding services available to streamline this process and easily categorize verbatim responses.
Survey Research is an important branch of Market Research. Survey research poses questions to a constituency to gain insight into their thoughts and preferences through their responses. Researchers use surveys and the data for many purposes: customer satisfaction, employee satisfaction, purchasing propensity, drug efficacy, and many more.
In market research, you will encounter terms and concepts in data specific to the industry. We will share some of those with you here, and the MRA Marketing Research Glossary can help you understand any unknown terms you encounter later.
Seeking Answers by Asking Questions
Every company in the world has the same goal: they want to increase their sales and make a good profit. For most companies, this means they need to make their customers happier — both the customers they have and the customers they want to have.
Companies work toward this goal in many ways, but for our purposes, the most important way is to ask questions and plan action based on the responses and data gathered. By “ask questions,” we mean asking a customer or potential customer about what they care about and taking action based on the customer feedback.
One way to go about this is to simply ask your customers (or potential customers) to answer open ended questions and gather the responses:
Q: What do you think about the new package for our laundry detergent?
A: It is too slippery to open when my hands are wet.
This technique is the basis of survey research. A company can conduct a questionnaire to get responses by asking open ended questions.
In other cases, there may be an implied question and response. For example, a company may have a help desk for their product. When a customer calls the help desk there is an implied question:
Q: What problem are you having with our offering?
The answers or responses to this implied question can be as valuable (or more!) as answers and responses to survey questions.
Thinking more broadly, the “customer” does not necessarily have to be the person who buys the company’s product or service. For example, if you are the manager of the Human Resources department, your “customers” are the employees of the company. Still, the goal is the same: based on the feedback or response from employees, you want to act to improve their satisfaction.
Open, Closed, and Other Specify
There are two basic types of data to gather responses in survey research: open and closed. We also call these open-end and closed-end questions.
A closed-end question is one where the set of possible responses is known in advance. These are typically presented to the survey respondent, who chooses among them. For example:

Open-end questions ask for an “in your own words” response:

The response to this question will be whatever text the user types in her response.
We can also create a hybrid type of question that has a fixed set of possible responses, but lets the user make an answer or response that was not in the list:

We call these Other Specify questions (O/S for short). If the user types a response to an O/S question it is typically short, often one or two words.
Just as we apply the terms Open, Closed, and O/S to questions, we can apply these terms to the answers or responses. So, we can say Male is a closed response, and The barista was rude is an open response.
What is an Answer vs a Comment?
If you are conducting a survey, the meaning of the term answer is clear. It is the response given by the respondent to the question posed. But as we have said, we can also get “answers” to implied questions, such as responses to what a customer tells the help desk. For this reason, we will use the more generic term comment to refer to some text or responses that we want to make an examination for actionable insight.
In most cases, comments are electronic text, but they can also be images (handwriting) and voice recording responses.
You need to be aware of some terminology that varies by industry. In the marketing research industry, a response to a question is called either a response or a verbatim. So, when reading data in survey research we can call these responses, verbatims, or comments interchangeably. They are responses to open-end questions. As we will see later, we don’t call the responses to an open-end question answers. We will find that these verbatims are effectively turned into answers by the process of verbatim coding.
Outside of survey research, the term verbatim is rarely used. Here the term comment is much more prevalent. In survey research the word verbatim is used as a noun, meaning the actual text given in response to a question.
Survey Data Collection
In the survey research world, verbatims are collected by fielding the survey. Fielding a survey means putting it in front of a set of respondents and asking them to read it and fill it out.
Surveys can be fielded in all sorts of ways. Here are some of the different categories of surveys marketing research companies might be using:
- Paper surveys
- Mailed to respondents
- Distributed in a retail store
- Given to a customer in a service department
- In-person interviews
- In kiosks in shopping malls
- Political exit polling
- Door-to-door polling
- Telephone interviews
- Outbound calling to households
- Quality review questions after making an airline reservation
- Survey by voice robot with either keypad or voice responses
- Mobile device surveys
- Using an app that pays rewards for completed surveys
- In-store surveys during the shopping experience
- Asking shoppers to photograph their favorite items in a store
- Web surveys
- Completed by respondents directed to the survey while visiting a site
- Completed by customers directed to the survey on the sales receipt
There are many more categories of survey responses. The number of ways to field surveys the ingenious market research industry has come up with is almost endless.
As you can see, the form of the data collected can vary considerably. It might be:
- Handwriting on paper
- Electronic text
- Voice recording responses
- Electronic data like telephone keyboard button presses
- Photographs or other images
- Video recording responses
And so on. In the end, all surveys require:
- A willing respondent
- A way of capturing the responses
The way of capturing the responses is easy. The first takes us to the area of sample we will consider soon.
Looping and Branch Logic
Data collection tools can be very sophisticated. Many data collection tools have logic built in to change the way that the survey is presented to the respondent based on the data or responses given.
Suppose for example you want to get the political opinions of Republican voters. The first question might make the respondent provide his political party affiliation. If he responds with an answer other than “Republican,” the survey ends. The survey has been terminated for the respondent, or the respondent is termed. This is a simple example of branch logic. A more sophisticated example would be to direct the respondent to question Q11 if she answers A, or to question Q32 if she answers B.
Another common bit of data collection logic is looping. Suppose we make our respondents participate in an evaluation of five household cleaning products. We might have four questions we want to ask the respondents about each product, the same four for each product. We can set up a loop in our data collection tool. It loops through the same four questions five times, once for each product.
There are many more logic features of data collection tools, such as randomization of the ordering of questions and responses to remove possible bias for the first question or answer presented.
The Survey Sample
A sample can be described simply as a set of willing respondents. There is a sizable industry around providing samples to survey researchers. These sample providers organize collections of willing respondents and provide access to these respondents to survey researchers for a fee.
A panel is a set of willing respondents selected by some criteria. We might have a panel of homeowners, a panel of airline travelers, or a panel of hematologists. Panelists almost always receive a reward for completing a survey. Often this is money, which may range from cents to hundreds of dollars, however, it can be another incentive, such as coupons or vouchers for consumer goods, credits for video purchases, or anything else that would attract the desired panelists. This reward is a major component of the cost per complete of a survey: the cost to get a completed survey.
Sample providers spend a lot of time maintaining their panels. The survey researcher wants assurance that the sample she purchases is truly representative of the market segment she is researching. Sample providers build their reputation on the quality of sample they provide. They use statistical tools, trial surveys, and other techniques to measure and document the sample quality.
Trackers and Waves
Many surveys are fielded only once, a one-off survey. Some surveys are fielded repeatedly. These are commonly used to examine the change in the attitude of the respondents over time. Researching the change in attitude over time is called longitudinal analysis. A survey that is fielded repeatedly is called a tracker. A tracker might be fielded monthly, quarterly, yearly, or at other intervals. The intervals are normally evenly spaced in time. Each fielding of a tracker is called a wave.
Verbatim Coding
In the survey research industry responses to open-end questions are called verbatims. In a closed-end question the set of possible responses from the respondent is known in advance. With an open-end question, the respondent can say anything. For example, suppose a company that sells laundry detergent has designed a new bottle for their product. The company sends a sample to 5,000 households and conducts a survey after the consumers have tried the product. The survey will probably have some closed-end responses to get a profile of the consumer, but to get an honest assessment of what the consumer thinks of the new package the survey might have an open-end question:
What do you dislike about the new package?
So, what does the survey researcher do with the responses to this question? Well, she could just read each verbatim. While that could provide a general understanding of the consumers’ attitudes, it’s really not what the company that is testing the package wants. The researcher would like to provide more specific and actionable advice to the company. Things like:
22% of women over 60 thought the screw cap was too slippery.
8% of respondents said the bottle was too wide for their shelves.
This is where verbatim coding, or simply coding, comes in. Codes are answers, just like for closed-end questions. The difference is that the codes are typically created after the survey is conducted and responses are gathered. Coders are people trained in the art of verbatim coding and often on a coding platform, such as Ascribe Coder. Coders read the verbatims collected in the survey and invent a set of codes that capture the key points in the verbatims. The set of codes is called a codebook or code frame. For our question, the codebook might contain these codes:
- Screw cap too slippery
- Bottle too wide
- Not sufficiently child-proof
- Tends to drip after pouring
The coders read each verbatim and assign one or more codes to it. Once completed, the researcher can now easily read each one of the coded responses and see what percentage of respondents thought the cap was too slippery. You can see that armed with information from the closed-end responses the researcher could then make the statement:
22% of women over 60 thought the screw cap was too slippery.
Now you can see why the responses to open-end questions are called verbatims, not answers. The answers are the codes, and the coding process turns verbatims into answers. Put another way, coding turns qualitative information into quantitative information.
Codebooks, Codes, and Nets
Let’s look at a real codebook. The question posed to the respondent is:
In addition to the varieties already offered by this product, are there any other old-time Snapple favorites that you would want to see included as new varieties of this product?
And here is the codebook:
- VARIETY OF FLAVORS
- like apple variety
- like peach variety
- like cherry variety
- like peach tea variety (unspecified)
- like peach iced tea variety
- like raspberry tea variety
- like lemon iced tea variety
- other variety of flavors comments
- HEALTH/ NUTRITION
- good for dieting/ weight management
- natural/ not contain artificial ingredients
- sugar free
- other health/ nutrition comments
- MISCELLANEOUS
- other miscellaneous comments
- NOTHING
- DON’T KNOW
Notice that the codebook is not a simple list. It is indented and categorized by topics, called nets, and the other items are codes. Nets are used to organize the codebook. Here the codebook has two major categories, one for people whose responses are that they like specific flavors and the other for people mentioning health or nutrition.
In this example, there is only one level of nets, but nets can be nested in other nets. You can think of it like a document in outline form, where the nets are the headers of the various sections.
Nets cannot be used to code responses. They are not themselves answers or responses to questions and instead are used to organize the answers (codes).
Downstream Data Processing
Once the questions in a study are coded they are ready to be used by the downstream data processing department in the survey research company. This department may be called data processing, tabulation, or simply tab. In tab, the results of the survey are prepared for review by the market researcher and then to the end client.
The tab department uses software tools to analyze and organize the results of the study. These tools include statistical analysis which can be very sophisticated. Normally, this software is not interested in the text of the code. For example, if a response is coded “like apple variety” the tab software is not interested in that text but wants a number like 002. From the tab software point of view, the respondent said 002, not “like apple variety”. The text “like apple variety” is used by the tab software only when it is printing a report for a human to read. At that time, it will replace 002 with “like apple variety” to make it human-readable. Before the data are sent to the tab department each code must be given a number. The codebook then looks like this:
- 001 VARIETY OF FLAVORS
- 002 like apple variety
- 003 like peach variety
- 004 like cherry variety
- 021 like peach tea variety (unspecified)
- 022 like peach iced tea variety
- 023 like raspberry tea variety
- 024 like lemon iced tea variety
- 025 other variety of flavors comments
- 026 HEALTH/ NUTRITION
- 027 good for dieting/ weight management
- 028 natural/ not contain artificial ingredients
- 029 sugar free
- 030 other health/ nutrition comments
- 031 MISCELLANEOUS
- 032 other miscellaneous comments
- 998 NOTHING
- 999 DON’T KNOW
The tab department may impose some rules on how codes are numbered. In this example the code 999 always means “don’t know”.
Choose Ascribe For Your Verbatim Coding Software Needs
When it comes to verbatim coding for open-ended questions in market research surveys, Ascribe offers unparalleled solutions to meet your needs. Our sophisticated coding platform, Ascribe Coder, is designed to streamline the process of categorizing and analyzing open-ended responses, transforming qualitative data into quantitative results. Whether you are dealing with responses from customer satisfaction surveys, employee feedback, or product evaluations, Ascribe provides the tools necessary for efficient and accurate verbatim coding.
If you are short on time or need further assistance with your verbatim coding projects, Ascribe Services can complete the coding project for you. They also offer additional services like Verbatim Quaity review, AI Coding with human review, and translation with human review. Many of the top market research firms and corporations trust Ascribe for their verbatim coding needs. Contact us to learn more about coding with Coder.
Read more
Text Analytics & AI
Text Analytics for CX Management
You hear the term text analytics a lot these days. It seems to be used in so many different ways it is hard to pin down just what it means. I’ll try to clear it up a bit.
The basic idea is that a computer looks at some text to accomplish some goal or provide some service. Just what those goals and services might be we will get to in a moment. First note that text analytics works with text and analyzes it in some way. That’s the analytics part. When I say text, I mean electronic text, like this blog page or some comments from your customers stored in a spreadsheet. Text analytics does not work with voice recordings, videos, or pictures.
Because text analytics examines text written in a natural language (like English or French), it uses techniques from the sciences of Natural Language Processing (NLP) and Linguistic Analysis. The computer techniques used include machine learning, word databases (like a dictionary in a database), taxonomies, part of speech tagging, sentence parsing, and so on. You don’t need to understand these techniques to understand what text analytics does, or how to use it.
Just what can we use text analytics for? Some of the more common uses are:
- Document classification and indexing – Given a bunch of documents, the computer can figure out the key concepts and let you search a library of documents by these. A sophisticated example of this is E-Discovery used in legal practice, which seeks to use the computer to assist in discovery in legal proceedings.
- National security – Governments use computers to monitor web postings for information or discussions of interest to national security.
- Ad serving – We are all experienced with the uncanny ability of some web sites to show us ads that are relevant to our needs and interests. Text analytics applied to the pages we are viewing is a big part of this magic.
- Business intelligence – For most of us this is the big one! We can the computer to give us insights into how to improve our service, retain customers, and give us a competitive advantage.
Text analytics for business intelligence is a rapidly growing market. Using the right tool, you can analyze thousands of customer comments in minutes. If the tool does a good job of presenting the results it is amazing how quickly you can figure out what they care about, their pain points and plaudits, your weaknesses and strengths.
Choosing a Text Analytics Tool
How do you find the right software product for your needs? Well, there are many providers of raw linguistic analysis capabilities. Google, Microsoft, Amazon, SAP, IBM, and many others provide such services via an API. But this takes an engineering effort on your part, and you still need to figure out how to navigate the results of the analysis.
There are several vendors of complete text analytics packages for customer experience management. As you evaluate these consider:
- Does the vendor specialize in customer experience feedback?
- Are the results of the analysis clear and insightful?
- Is text analytics a core competency or a side product?
- Are multiple languages supported?
- Is automatic translation between languages supported?
- How easy is it to tailor the text analytics to your specific business?
Navigating the Linguistic Analysis Results
Suppose you have a database of feedback from your customers. If you run 10,000 customer comments through a linguistic analysis engine it will produce a mountain of data. To gain insight from this data it needs to be organized and navigable. A good text analytics tool will organize the results and display them in a manner that helps you to find the actionable insights in the comments. Optimally the tool will help you pinpoint the strengths and weaknesses of your company from the customer's viewpoint.
Reducing the Raw Linguistic Analysis Data
Let's look at a specific example to gain an understanding of what is involved in organizing and presenting the results of linguistic analysis. As I described in Linguistic Analysis Explained, sentence parsing is one tool in the NLP analytics bag of tricks. Google has a very well regarded sentence parser, and it is available via an API. You can try it out at https://cloud.google.com/natural-language/. It's a fun way to get some insight into the complexities of presenting the results of linguistic analysis. Try running this comment through the API:
The support staff are helpful, but slow to respond.
Now and take a look at the Syntax results. These are the results of the sentence parser. You find:

Wow, that's a lot of data, but hardly actionable insight! You can see that the sentence has been broken into tokens (words and punctuation). Each token has been tagged with its part of speech (slow is an adjective). Each token has also been assigned a parse label, indicating how it is used in the sentence (slow is used as a conjunction). The green arrows show how the token are interrelated. Imagine how much data would be generated by running 10,000 customer comments through the sentence parser!
The job of text analytics is to distill this pile of data down. In this case the analysis might go something like this:
- "Support staff" is the nominal subject of the root verb. That's a topic the customer has mentioned.
- "Helpful" is an adjectival complement (acomp) of the subject. The customer has said the staff are helpful.
- "Support staff" is further described by the customer by the coordinating conjunction (cc) "but", as "slow" (conj).
So we find that the support staff are both helpful and slow. We have extracted a topic of "support staff", with expressions of "helpful" and "slow" associated with it. This reduction of the raw data from linguistic analysis has resulted in what we are interested in knowing. Our customer thinks the support staff is helpful, but also slow! This is a single finding from linguistic analysis.
Presentation of the Reduced Data
Now that we have extracted the desired nuggets from the raw linguistic analysis data we need to present it in a way that helps you find the insights you seek. An actual analysis of 10,000 customer comments may well produce 50,000 findings. To navigate these the findings need to be organized in a way that emphasises the important insights, and allows you to explore the findings quickly and intuitively. A good text analytics tools will assist you in ways such as:
- Grouping similar topics, preferably automatically or with a custom taxonomy you control.
- Ranking topics by frequency of occurrence or other metrics such as sentiment.
- Allowing you to filter the results in various ways, such as by demographic data.
- Showing trends across time or other variables.
Summary
Text analytics for customer experience management reduces and organizes the results of linguistic analysis. If done well, the results are presented to you, the user, such that you can find actionable insights quickly, and explore the data to help formulate an action plan for improvement.
Read more
.jpeg)
Text Analytics & AI
Measuring & Understanding Sentiment Analysis Score
Editor’s note: This post was originally published on Ascribe in October 2020 and has been updated to reflect the latest data.
Sentiment analysis (or opinion mining) is used to understand the emotion or sentiment behind comments and text, allowing data analysts to gain actionable insights from verbatim comments. While measuring and understanding sentiment analysis scores is more involved than analyzing closed questions, it offers a valuable source of metric data.
What Does Sentiment Mean?
Audiences will have opinions on products, services, and more, that are either positive, negative, or neutral in tone. Companies can use this information to better understand the feedback given by audiences on products or how effective or ineffective messaging has been. Sentiment analysis provides your business with a way to quantify these emotions to discover the overall answer polarity and insights into your customer feedback.
Because customer sentiment is provided in the person’s voice, and not based on a set response or keywords, you need a way for your computers to understand it. Natural Language Processing (NLP), combined with machine learning, allows your sentiment analysis solution to look at a data set and pull more meaning from it. It does this by scoring each response based on whether the algorithm thinks that it’s positive, negative, or neutral.
While applying a sentiment score to the entire response can be useful, it does have problems. For example, would you say that this comment is positive or negative?
The food was great but the service was awful.
More sophisticated sentiment analysis can apply sentiment scores to sections of a response:
Food-great: positive
Service-awful: negative
Analyzing versus Interpreting
While analysis and interpretation are often used interchangeably, they have two different meanings, especially within data science and sentiment analysis work. Interpreting sentiment in a series of responses is more of a qualitative assessment. If you are manually processing verbatim comments to determine the sentiment, your overall sentiment results could contain unique biases and possible errors. With sentiment analysis tools, this bias potential and possible interpretation errors are severely diminished in favor of a faster, automated, analysis program.
Sentiment analysis programs have a standardized approach that gets the same results regardless of the person running the process. It’s difficult to achieve this manually, but computer-aided methods make it possible.
Positive and Negative Keywords
Positive Words
These text analysis words are representative of positive sentiment. However, despite lists like this existing, these words are subject to change and machine learning models are incredibly sensitive to context. This makes the framing of the comment incredibly important. With these machine learning models, however, companies are able to find out what people like about products, and services while highlighting their experiences. This is a good way to see what you’re doing right and areas where you compare favorably to the competition. You can build on these successes as you move forward as a company.
Here are some of these words:
- Acclaim
- Brilliant
- Convenient
- Durable
- Enjoyable
- Ethical
Negative Words
These words are commonly associated with negative sentiment. These sentiments can indicate areas where you’re failing to deliver on expectations. It’s also a good way to see whether a product or service has a widespread problem during a rollout, to identify issues in the customer experience, and to find other areas of improvement that you can prioritize.
Here are some of these words:
- Dishonest
- Failure
- Gruesome
- Hazardous
- Imbalance
- Lackadaisical
Neutral Sentiment Words
Neutral sentiments are driven by context, so it’s important to look at the whole comment. Excelling in the customer experience means going beyond “okay” and moving in a positive direction. These middle-of-the-road sentiments are useful in determining whether your company is noteworthy in a product or service category.
Positive to Negative Comment Ratio
A ratio in sentiment analysis is a score that looks at how negative sentiment comments and positive sentiment comments are represented. Generally, this is represented on a scale of -1 to 1, with the low end of the scale indicating negative responses and the high end of the scale indicating positive responses. You may need to adjust how you evaluate the score to account for trends in your audience as some may be more negative than the standard population. For example, if you were conducting a survey that focused on dissatisfied customers, then you would be dealing with a tone that’s more negative than usual.
What is a Good Sentiment Score?
A good sentiment score depends on the scoring model that you’re using. Set minimum scores for your positive and negative threshold so you have a scoring system that works best for your use case.
How Accurate is Sentiment Analysis?
The accuracy of sentiment analysis depends on the method that you’re using to work with your verbatim comments, the quality of the data that you’ve given the computer, and the subjectivity of the sentiment. You want the most accurate results possible, which typically means that you’ll want to have a computer assisting your researchers with this process. The automated system can reduce the potential for bias and also use a standardized set of rules for going through the data. If there are any problems with accuracy, you can feed more data into the sentiment analysis solution to help it learn what you’re looking for.
What Algorithm is Best for Sentiment Analysis?
The algorithm that works best for sentiment analysis depends on your resources and your business needs. There are three major categories in algorithms: machine learning, lexicon-based, and those that combine both machine learning algorithms and lexicons.
Machine learning is one of the most popular Algorithms in both Data Science and Text Analytics and is an application of artificial intelligence. It allows your sentiment analysis solution to keep up with changing language in real-time. Because data scientists can’t predict when the next shift in colloquial slang and voice will occur and completely change what is negative and what is positive. They’ve begun to use machine learning with operational data provided to understand natural language and current vernacular. This is a core component of sentiment analysis and is an example of supervised learning, where you’re feeding it representative results so it can learn from them. Unsupervised learning refers to machine learning that is not based on data specifically designed to train it. Deep learning refers to the complexity of machine learning, with this moniker usually referring to complex neural networks.
A lexicon-based algorithm relies on a list of words and phrases and whether they’re positive or negative. It’s difficult to update the lexicon with the latest trends in language.
Ascribe’s dedication to Sentiment Analysis
If you are looking to leverage sentiment analysis when analyzing verbatim comments and open-ended text responses to uncover insights and empower decision-making, check out Ascribe’s text analytics offering, CX Inspector.
CX Inspector is a customizable and interactive text analytics tool with compatible APIs and unique machine learning techniques that provide topic and sentiment analysis from verbatim comments automatically. Analyze everything from the success of marketing campaigns, product feedback results, product reviews, social media platform comments, and more.
For a more comprehensive solution for sentiment analysis, use X-Score which is a feature within CX Inspector that provides a sentiment score from open-ended comments. X-Score is a great measure of customer satisfaction, and also identifies the largest drivers of positive and negative sentiment.
Read more