Skip to content

Semantic similarity measures from Babylon Health

License

Notifications You must be signed in to change notification settings

babylonhealth/simba

Repository files navigation

simba 🦁

Similarity measures from Babylon Health.

Installation

$ pip install simba

You can also checkout this repository and install from the root folder:

$ pip install .

Many of the similarity measures in simba rely on pre-trained embeddings. If you don't have your own encoding logic already, you can register your embedding files to use them easily with simba, as long as they're in the standard text format for word vectors (as described here). For example, if you want to use fastText vectors that you've saved to /path/to/fasttext, you can just run

$ simba embs register --name fasttext --path /path/to/fasttext

and simba will recognise them under the name fasttext.

You can do something similar for frequencies files (like these):

$ simba freqs register --name wiki --path /path/to/wiki/counts

Usage

from simba.similarities import dynamax_jaccard
from simba.core import embed

sentences = ('The king has returned', 'Change is good')

# Assuming you've registered fasttext embeddings as described above
x, y = embed([s.split() for s in sentences], embedding='fasttext')
sim = dynamax_jaccard(x, y)

There are more examples, including comparing different similarity metrics on a dataset of pairs, in the examples directory.

Similarity Measures

This library contains implementations of the following methods in simba.similarities. Please consider citing the corresponding papers in your work if you find them useful.

Method Description Paper
avg_cosine Average vector compared with cosine similarity -
batch_avg_pca Average vector with principal component removal [1]
fbow_jaccard_factory Factory method for general fuzzy bag-of-words given a universe matrix [2]
max_jaccard Max-pooled vectors compared with Jaccard coefficient [2]
dynamax_{jaccard, otsuka, dice} DynaMax using Jaccard, Otsuka-Ochiai, and Dice coefficients [2]
gaussian_correction_{tic, aic} Takeuchi and Akaike Information Criteria (TIC and AIC) for Gaussian likelihood [3]
spherical_gaussian_correction_{tic, aic} TIC and AIC for spherical Gaussian likelihood [3]
von_mises_correction_{tic, aic} TIC and AIC for von Mises Fisher likelihood [3]
avg_{pearson, spearman, kendall} Average vector compared with Pearson, Spearman, and Kendall correlation [4]
max_spearman Max-pooled vectors compared with Spearman correlation [5]
cka_factory Factory method for general Centered Kernel Alignment (CKA) [5]
cka_{linear, gaussian} CKA with linear and Gaussian kernels [5]
dcorr CKA with distance kernel (distance correlation) [5]

Papers:

  1. Arora et al., ICLR 2017. A Simple but Tough-to-Beat Baseline for Sentence Embeddings
  2. Zhelezniak et al., ICLR 2019. Don't Settle for Average, Go for the Max: Fuzzy Sets and Max-Pooled Word Vectors
  3. Vargas et al., ICML 2019. Model Comparison for Semantic Grouping
  4. Zhelezniak et al., NAACL-HLT 2019. Correlation Coefficients and Semantic Textual Similarity
  5. Zhelezniak et al., EMNLP-IJCNLP 2019. Correlations between Word Vector Sets

Contact

About

Semantic similarity measures from Babylon Health

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages