Source code for fee.reports.word_report

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from ..utils import get_g
from ..metrics import DirectBias, ProxBias
from ..visualize import NeighbourPlot, NBWordCloud
from .biased_neighbours import NeighboursAnalysis
 

[docs]class WordReport(): """`WordReport` class""" def __init__(self, E, g=None): """Generate a word level report for some word in `E`. This report computes and prints direct bias, proximity bias and neighbours of a word along with their bias by projection (same as direct bias). Additionally, the report includes tSNE visualization for the neighbourhood of word color coded by bias by projection. Finally, the report also plots the WordCloud of the given word size coded by bias by projection. Args: E (WE class object): Word embeddings object g (np.array): gender direction """ if g is None: g = get_g(E) assert len(g) == E.dim self.g = g self.E = E
[docs] def generate(self, word, n=50, figsize=None, dpi=100): """Generate the wordreport for word `word`. Args: word (str): Word to show the report for n (int): number of neighbours of `word` to consider figsize (tuple): size of figures in (HxW) dpi (int): dpi of the figures """ direct_bias = DirectBias(self.E).compute(word) prox_bias = ProxBias(self.E).compute(word) neighbours_bias = NeighboursAnalysis(self.E).generate(word, n=n) print("==============================") print(f"Direct bias (Bias by projection on the PCA based gender direction): {direct_bias}") print("==============================") print(f"Proximity bias (Ratio of biased neighbours by Indirect Bias): {prox_bias}") print("==============================") print(f"Neighbour Analysis: \n{neighbours_bias}") print("==============================") NeighbourPlot(self.E).run(word, annotate=True, figsize=figsize, dpi=dpi, n=n, title=f"tSNE plot for neighbours of {word} (color coded by bias by projection)") NBWordCloud(self.E).run(word, figsize=figsize, dpi=dpi, title=f"Wordcloud for neighbours of {word} (size coded by bias by projection)")