Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Neat (Neural Attention) Vision, is a visualization tool for the attention mechanisms of deep-learning models for Natural Language Processing (NLP) tasks. (framework-agnostic)
| Date | Stars |
|---|---|
| 2026-07-31 | 251 |
| 2026-08-06 | 251 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# NeAt-Vision
> NeAt (Neural Attention) Vision, is a visualization tool
for the attention mechanisms of deep-learning models
for Natural Language Processing (NLP) tasks.
#### Features
- Visualize the attention scores, with lots of options.
- Export the visualization to SVG format. This is very convenient if you
want to use the visualization in an academic paper. However, you may have
to convert the SVG to PDF.
- Visualize the models predictions. Show the posterior distribution over the
classes, the error in regression tasks and more. Useful for debugging your
models and inspecting their behavior.
- Support for classification, multilabel classification and regression.
_neat-vision_ is made for visualizing the weights of attention mechanisms
for Natural Language Processing (Tasks) tasks.
At this moment, _neat-vision_ only supports the visualization of
self-attention mechanisms, operating on the sentence-level
and for the following tasks:
- Regression: predict a single continuous value.
- Multi-class Classification: a classification task with more than two classes.
Each sample belongs to one of `N` classes.
- Multi-label Classification: we have `N` classes
and each sample may belong to more than one classes.
Essentially, it is a binary classification task for each class.
However in the future there are plans for
supporting document-level models (hierarchical) and seq2seq models,
such as in Neural Machine Translation (NMT).
**Website (live)**: https://cbaziotis.github.io/neat-vision/
<p style="text-align:center;">
<img src="./static/video.gif" alt="demo" style="width: 800px; max-width=100%;"/>
</p>
## Documentation
### Overview
_neat-vision_ takes as input 2 kinds of `json` files:
- **Data file**. This file contains (1) the text (tokenized),
(2) the attention scores and (3) the models predictions.
- **Label file** (optional).
This is needed only in classifications tasks
and if provided, it is used for mapping each class label
to a user-defined description.
### Input Format
Here you will find a detailed overview of
how to properly format the output files, for each task.
Besides the necessary data needed for visualizing the attention weights,
in _neat-vision_ you can also visualise the predictions of the model
and gain insights in its behavior. However, it is not required that you provide
such data (e.g. posterior probabilities).
In any case, in `\samples` you will find some examples,
containing the predictions of our team (NTUA-SLP) in Semeval 2018.
You can use them to test _neat-vision_ and to check the format of the data files.
**Notes**
- the posteriors don't have to be normalized, which means you can simply
use the logits (before the softmax). _neat-vision_ will normalize the logits
for you. This is convenient for PyTorch users.
- its ok to include the zero padded attention weights.
It simply matches each token with the corresponding attention weight,
so the zero padded timesteps in the attention weigths don't matter.
#### Regression
The structure of the data file for a classification task is the following:
```
{
"text": [], \\ list of strings - the tokens (words, chars) in the text. (required)
"label": 0, \\ float - the actual value. (required)
"prediction": 0, \\ float - the predicted value. (required)
"attention": [], \\ list of floats - the attention weigths. (required)
"id": "sample_11" \\ string - a unique id assigned to each sample. (required)
}
```
Here is an example of a sample in a data file:
```
{
"text": [
"i",
"have",
"never",
"been",
"so",
"excited",
"to",
"start",
"a",
"semester",
"!"
],
"label": 0.969,
"prediction": 0.8037105202674866,
"attention": [
0.030253062024712563,
0.04317276179790497,
0.12440750747919083,
0.018600208684802055,
0.0239230021834373Excerpt of 9,676 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:e3c3d2d44d5eea0e, topic:nlp, topic:natural-language-processing, desc:natural language processing