---
title: Understanding natural language processing and machine learning in the EMS's automatic categorization feature
description: NLP and ML are complex. We hope this article will help demystify them.
---

[Skip to content](https://help.indiegraf.com/understanding-natural-language-processing-and-machine-learning-in-the-emss-automatic-categorization-feature#main-content)

English

Show submenu for translations

[Publisher Portal](https://portal.indiegraf.com/tickets?hsLang=en)

[![Indiegraf-PrimaryLogo-FullColor-1](https://help.indiegraf.com/hs-fs/hubfs/Indiegraf-PrimaryLogo-FullColor-1.png?width=262&height=60&name=Indiegraf-PrimaryLogo-FullColor-1.png)](https://help.indiegraf.com/?hsLang=en)

Open main navigation

Close main navigation

- English
  
  Show submenu for translations
- [Publisher Portal](https://portal.indiegraf.com/tickets)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Indiegraf](https://help.indiegraf.com/?hsLang=en)
2. [Hearken](https://help.indiegraf.com/hearken?hsLang=en)
3. [Automatic categorization](https://help.indiegraf.com/hearken?hsLang=en#automatic-categorization)

March 26, 2026

# Understanding natural language processing and machine learning in the EMS's automatic categorization feature

## NLP and ML are complex. We hope this article will help demystify them.

The EMS's categorization feature uses something called natural language processing to sort audience submissions into groups based on their similarity to one another.

But our algorithm isn't perfect, and the process of categorizing pieces of text (called “clustering”) is an obscure process. When something doesn’t work the way we want or expect it to, it can be a mystery as to why.

Here’s a brief introduction to natural language processing to help us understand how the EMS’s categorization feature works and why it has its limitations.

 

#### **Vectorization**

We start with a bunch of EMS submissions—sentences of human language—that we need to sort according to their similarity. Computers are entirely mathematical creatures, so the first step is to turn human language into computer language: numbers!

The process of turning human language into numbers is called vectorization. There are different ways to vectorize a bunch of text (which is formally called a "corpus," from the Latin for body) depending on what you are trying to accomplish, but we use a method called the Universal Sentence Encoder (UES).

The UES takes a sentence—in the EMS’s case, sometimes multiple sentences—and turns it into 512 numbers. How it does this, I frankly don’t understand, and we don’t need to understand it for this explainer. We just need to know that for each sentence we have a list of 512 numbers that mathematically represent different qualities of the sentence—a 512-dimensional vector.

 

#### **Clustering**

Next, the computer compares the vectors of our sentences to one another, determines how similar they are, and categorizes (or "cluster") them according to their similarity.

While it’s hard to imagine how this happens in 512 dimensions, we can visualize how it happens in 2 or 3:

![](https://downloads.intercomcdn.com/i/o/371349783/8a18bb6f1372a29fa1b9a339/kmeans3d-2.png?expires=1772740800&signature=3b23525e29e775c7bb77cad4eb816e20c732e3a10dd5332bd03015b291a80b7b&req=dycmFc13molcFb4f3HP0gNN7neP4mNGHfBVvrJrENfCuny6ZkV2mmFLMNEeL%0AYb6i06ttEX%2BsPxYE5g%3D%3D%0A)

In the illustration on the left, each sentence, represented by a dot, has a 2-dimensional vector (a list of two numbers: one number for the X-axis and one for the Y-axis). On the right, each one has a 3-dimensional vector (three numbers: one each for the X-, Y-, and Z-axes). In each case, the clustering algorithm has tried its best to place each sentence in one of three clusters.

From these illustrations alone, we can already begin to imagine how messy this can get. In the 2-dimensional illustration, what about all the sentences in the red and green clusters that are almost overlapping—how does it know for sure which sentence belongs to which cluster? In the 3-dimensional illustration, the sentences that are outliers in their clusters—is it best to include them in clusters at all, or are they just noise?

If we use a 2-dimensional example with more complex topography, we can see how many different ways there are for different clustering algorithms to cluster a given set of data:

![](https://downloads.intercomcdn.com/i/o/371349887/4aae3054f11144e681ec9027/comparing_clustering_algorithms.jpg?expires=1772740800&signature=c3089b5ddc94fa69f2b8ce7ab0bd9344a62b52f3409b24276de66a6979af9290&req=dycmFc13lYlYFb4f3HP0gNZny1ECrLtsCrTNenjM%2BZyRwhIyNxK0rns%2BY5ug%0AfxF9pDvVpXoIFUgdmQ%3D%3D%0A)

Remember—in the EMS, the Universal Sentence Encoder has to work with 512 dimensions for each sentence, not just 2 or 3. It's so complex that it doesn't get everything right on its own. That's where it needs your help.

 

#### **Machine learning**

Machine learning is the process by which the EMS's automatic categorization system can learn from from your feedback and improve over time.

The automatic categorization system has a complex of rules it uses to determine how important each of each sentence's 512 dimensions are for sorting that sentence into a cluster.

To help us illustrate that process, here are a bunch of emojis. Each of the following emoji objects has numerous properties: size, weight, texture, shape, material, edibility, are they grown or manufactured, etc. These properties are like the dimensions associated with the sentences in the EMS.

![](https://downloads.intercomcdn.com/i/o/371857825/6d1a1732632621943cdf934a/dimensions.png?expires=1772740800&signature=a6a3b935743cad5c3a1e89f4934237094c6b28597f9dcb1cf2f3bba1424f81d3&req=dycmHsx5lYNaFb4f3HP0gA1tfRUjGqyWeuhf3qS%2FES2xDyKwZoUw84g7uobk%0ASipK2Kq4%2Fzh5BNtsMA%3D%3D%0A)

Let's say we run all these emojis through a clustering process and among the results get the following clusters:

1. 🍑🍊🏀
2. 🍋🥎🥑
3. ⚽️🥥🏐

We can guess based on the output that the algorithm has determined that two properties are most important: shape and color. These clusters don't make sense in other contexts. If we humans sorted according these objects to their similarity, it would probably make more sense to sort them into these two clusters:

1. 🍑🍊🍋🥑🥥
2. 🏀🥎⚽️🏐

So we re-cluster them and send them back to the algorithm for consideration. When we manually re-cluster the emojis (or in the case of the EMS, sentences of text), we teach the algorithm which properties are most important for identifying clusters. In this case, we teach it that an object's status as a fruit and an object's status as a ball used in sports are more important properties than an object's shape or an object's color. (Did you know coconuts are fruit??)

Using machine learning, the clustering algorithm then incorporates our feedback and changes its rules so that it can cluster future submissions appropriately:

1. 🍐🍏🍅🥝🍑🍊🍋🥑🥥
2. 🏈🎾🏉⚾️🏀🥎⚽️🏐

In the EMS's categorization interface, when you create new categories, delete old categories, or move audience submissions from one category, you're performing the same teaching process for the EMS's clustering algorithm so it can make better sense of the questions your audience asks you. You're helping it determine how important each of the 512 dimensions it measures for each submission is.

If the categories the automatic categorization feature generates are imperfect, or if it incorrectly places audience submissions in the wrong category, just remember that the system is working with an incredibly complex dataset and that it needs your help to get better.

There's plenty more to learn about natural language processing and machine learning, but we hope that this is enough to make them more accessible and make the EMS's automatic categorization feature make more sense.

- [Welcome to Indiegraf](https://help.indiegraf.com/welcome-to-indiegraf?hsLang=en)
- [Onboarding](https://help.indiegraf.com/onboarding?hsLang=en#main-content)

    - [Quick Start Guide](https://help.indiegraf.com/onboarding?hsLang=en#quick-start-guide)
- [Indie Website](https://help.indiegraf.com/indie-website?hsLang=en#main-content)

    - [Analytics & Growth](https://help.indiegraf.com/indie-website?hsLang=en#analytics-growth)
    - [Audience Engagement & Forms](https://help.indiegraf.com/indie-website?hsLang=en#audience-engagement-forms)
    - [Configuring your Homepage](https://help.indiegraf.com/indie-website?hsLang=en#configuring-your-homepage)
    - [Content Creation & Management](https://help.indiegraf.com/indie-website?hsLang=en#content-creation-management)
    - [Design & Page Layout](https://help.indiegraf.com/indie-website?hsLang=en#design-page-layout)
    - [Indiegraf Pay](https://help.indiegraf.com/indie-website?hsLang=en#indiegraf-pay)
    - [Media & Visual Assets](https://help.indiegraf.com/indie-website?hsLang=en#media-visual-assets)
    - [Paywall Solution: Pelcro](https://help.indiegraf.com/indie-website?hsLang=en#paywall-solution-pelcro)
    - [SEO and Google Tools](https://help.indiegraf.com/indie-website?hsLang=en#seo-and-google-tools)
    - [Site Administration](https://help.indiegraf.com/indie-website?hsLang=en#site-administration)
    - [Technical Questions](https://help.indiegraf.com/indie-website?hsLang=en#technical-questions)
- [Indie Email](https://help.indiegraf.com/indie-email?hsLang=en#main-content)

    - [Quickstart Video Guide: Indie Email](https://help.indiegraf.com/indie-email?hsLang=en#quickstart-video-guide-indie-email)
    - [Account Setup & Foundations](https://help.indiegraf.com/indie-email?hsLang=en#account-setup-foundations)
    - [Contact Management](https://help.indiegraf.com/indie-email?hsLang=en#contact-management)
    - [Creating Campaigns](https://help.indiegraf.com/indie-email?hsLang=en#creating-campaigns)
    - [Sending Campaigns & Automation](https://help.indiegraf.com/indie-email?hsLang=en#sending-campaigns-automation)
    - [Troubleshooting & Deliverability](https://help.indiegraf.com/indie-email?hsLang=en#troubleshooting-deliverability)
    - [Analytics](https://help.indiegraf.com/indie-email?hsLang=en#analytics)
- [Indie Ads Manager (IAM)](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#main-content)

    - [Reporting & Statistics](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#reporting-statistics)
    - [Essential Articles](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#essential-articles)
    - [Native Ad Templates](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#native-ad-templates)
    - [Quick Start Guide](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#quick-start-guide)
    - [Payment Solutions](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#payment-solutions)
- [Hearken](https://help.indiegraf.com/hearken?hsLang=en#main-content)

    - [Planning and Preparing to Launch with Hearken](https://help.indiegraf.com/hearken?hsLang=en#planning-and-preparing-to-launch-with-hearken)
    - [Collecting Questions](https://help.indiegraf.com/hearken?hsLang=en#collecting-questions)
    - [Collecting Votes](https://help.indiegraf.com/hearken?hsLang=en#collecting-votes)
    - [Reporting an Answer](https://help.indiegraf.com/hearken?hsLang=en#reporting-an-answer)
    - [Spreading Hearken Across Your Organization](https://help.indiegraf.com/hearken?hsLang=en#spreading-hearken-across-your-organization)
    - [Creating and Customizing an Embed](https://help.indiegraf.com/hearken?hsLang=en#creating-and-customizing-an-embed)
    - [Workflow Features](https://help.indiegraf.com/hearken?hsLang=en#workflow-features)
    - [Platform Features](https://help.indiegraf.com/hearken?hsLang=en#platform-features)
    - [Setting Up Notifications and Alerts](https://help.indiegraf.com/hearken?hsLang=en#setting-up-notifications-and-alerts)
    - [Setting up APIs and webhooks](https://help.indiegraf.com/hearken?hsLang=en#setting-up-apis-and-webhooks)
    - [Data collection and exporting](https://help.indiegraf.com/hearken?hsLang=en#data-collection-and-exporting)
    - [Automatic categorization](https://help.indiegraf.com/hearken?hsLang=en#automatic-categorization)
    - [Social, outreach, and marketing](https://help.indiegraf.com/hearken?hsLang=en#social-outreach-and-marketing)
    - [Events and In-Person Engagement](https://help.indiegraf.com/hearken?hsLang=en#events-and-in-person-engagement)
    - [Monetizing your Hearken work](https://help.indiegraf.com/hearken?hsLang=en#monetizing-your-hearken-work)
- [Indiegraf Experts](https://help.indiegraf.com/indiegraf-experts?hsLang=en)
- [Indiegraf Product Release Notes](https://help.indiegraf.com/indiegraf-product-release-notes?hsLang=en#main-content)

    - [Product Demo Videos](https://help.indiegraf.com/indiegraf-product-release-notes?hsLang=en#product-demo-videos)
- [General](https://help.indiegraf.com/general?hsLang=en)
- [RevEngine](https://help.indiegraf.com/revengine?hsLang=en#main-content)

    - [Getting Started with RevEngine](https://help.indiegraf.com/revengine?hsLang=en#getting-started-with-revengine)
    - [International giving](https://help.indiegraf.com/revengine?hsLang=en#international-giving)
    - [RevEngine Core](https://help.indiegraf.com/revengine?hsLang=en#revengine-core)
    - [Organization management](https://help.indiegraf.com/revengine?hsLang=en#organization-management)
    - [Working with Stripe](https://help.indiegraf.com/revengine?hsLang=en#working-with-stripe)
    - [Contribution page basics](https://help.indiegraf.com/revengine?hsLang=en#contribution-page-basics)
    - [Customizing your page](https://help.indiegraf.com/revengine?hsLang=en#customizing-your-page)
    - [Branding and images](https://help.indiegraf.com/revengine?hsLang=en#branding-and-images)
    - [Advanced page settings & features](https://help.indiegraf.com/revengine?hsLang=en#advanced-page-settings-features)
    - [Portal & contribution management](https://help.indiegraf.com/revengine?hsLang=en#portal-contribution-management)
    - [Contribution data](https://help.indiegraf.com/revengine?hsLang=en#contribution-data)
    - [Analytics and Reporting](https://help.indiegraf.com/revengine?hsLang=en#analytics-and-reporting)
    - [Best Practices and Recommendations](https://help.indiegraf.com/revengine?hsLang=en#best-practices-and-recommendations)
    - [Receipts, reminders and transactional communications](https://help.indiegraf.com/revengine?hsLang=en#receipts-reminders-and-transactional-communications)
    - [Security & Legal](https://help.indiegraf.com/revengine?hsLang=en#security-legal)
    - [Common issues](https://help.indiegraf.com/revengine?hsLang=en#common-issues)

[![Indiegrf](https://help.indiegraf.com/hs-fs/hubfs/Indiegraf-SecondaryLogo-DarkNavy-2.png?width=260&height=130&name=Indiegraf-SecondaryLogo-DarkNavy-2.png "Indiegrf")](https://help.indiegraf.com/?hsLang=en)

Indiegraf is on a mission to make local news entrepreneurship a great career and life choice for journalists everywhere.

<https://www.instagram.com/indiegrafmedia> <https://www.twitter.com/indiegrafmedia> <https://www.facebook.com/indiegrafmedia> <https://www.linkedin.com/indiegraf-media> [mailto:support@indiegraf.com](mailto:support@indiegraf.com)

Copyright © 2025, Indiegraf Media