In this section, we aim to provide functionalities to have visual representation of embeddings. In this first version, we provide a wrapper class for the sklearn.manifold.TSNE, reducing, by default, the dimensionality of embeddings to two dimensions.

To use this model, we assume we already have some embedding vectors and some labels for each of them. For this example, let’s create random vectors:

from numpy import array, random

embeddings = random.rand(100, 100)
names = [f"name_{i}" for i in range(100)]
classes = [1,2,3]
labels = [random.choice(classes) for _ in range(100)]

name_to_embedding = dict(zip(names, embeddings))
name_to_label = dict(zip(names, labels))


Notice that the previous code is generating synthetic data. In real application of mOWL, the embeddings would come from a trained model and the labels can come from either the ontology or any other external source. Furthermore, the names would be ontology entities (classes, individuals, …).

import mowl

from mowl.visualization import TSNE

tsne = TSNE(name_to_embedding, name_to_label)
tsne.generate_points(250, workers=4)

(Source code, png, hires.png, pdf)