Natural Language Processing (NLP)

Neo4j offers powerful querying capabilities for structured data, but a lot of the world’s data exists in text documents. NLP techniques can help to extract the latent structure in these documents. This structure could be as simple as nodes representing tokens in a sentence or as complicated as nodes representing entities extracted using a named entity recognition algorithm.

Why NLP?

Extracting structure from text documents and storing it in a graph enables several different use cases, including:

  • Content based recommendations

  • Natural Language search

  • Document similarity

Neo4j NLP Tools and Products

There are two tools available for doing NLP analysis in Neo4j. We’ll learn about them in this section.


APOC is Neo4j’s standard library. It contains procedures that call the Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure Natural Language APIs, and create a graph based on the results returned.

These procedures support entity extraction, key phrase extraction, sentiment analysis, and document classification.

This library is a good choice for your first graph based NLP project.

GraphAware Natural Language Processing

This is a Neo4j plugin that offers Graph Based Natural Language Processing capabilities and runs on top of the Stanford NLP and OpenNLP libraries. It provides a common interface for underlying text processors as well as a Domain Specific Language built atop stored procedures and functions making your Natural Language Processing workflow developer friendly.

The library supports text extraction, key word extraction, TextRank summarization, word embeddings using Word2Vec, and more. It is available as an open sourced community version as well as an enterprise version via the Hume Graph-Powered Insights Engine.

Only the enterprise version of the library is being actively developed and supported.

This library is very powerful, but also has a steeper learning curve. It is a good choice if you’re doing a serious graph based NLP project.