Skip to content

Instantly share code, notes, and snippets.

@jamescalam
Created December 26, 2021 05:52
Show Gist options
  • Save jamescalam/15b48b1d9689e70ab9073e374ba3dc4a to your computer and use it in GitHub Desktop.
Save jamescalam/15b48b1d9689e70ab9073e374ba3dc4a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All datasets have two sentence features, we will calculate the ngram similarity by comparing A to A and B to B."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n",
"The tokenizer class you load from this checkpoint is 'BertTokenizer'. \n",
"The class this function is called from is 'PreTrainedTokenizerFast'.\n"
]
}
],
"source": [
"from transformers import PreTrainedTokenizerFast\n",
"\n",
"tokenizer = PreTrainedTokenizerFast.from_pretrained('bert-base-uncased')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['hello', 'world', '!']"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tokenizer.tokenize('hello world!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*(We can also remove stopwords but it makes very little difference to the numbers and just seems to subtract ~0.01 from each score)*"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# initialize stopwords list\n",
"#import nltk\n",
"\n",
"#nltk.download('stopwords')\n",
"#stopwords = set(nltk.corpus.stopwords.words('english'))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def make_ngrams(feature: list, n: int = 1):\n",
" feature = ' '.join(feature).lower()\n",
" # tokenize\n",
" feature = tokenizer.tokenize(feature)\n",
" # remove stopwords (if wanted)\n",
" #feature = [word for word in feature if word not in stopwords]\n",
" # what n in n-gram?\n",
" ngrams = []\n",
" for j in range(0, len(feature), n):\n",
" ngrams.append(' '.join(feature[j:j+n]))\n",
" return ngrams"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def jaccard(x: list, y: list, n=1):\n",
" x = set(make_ngrams(x, n))\n",
" y = set(make_ngrams(y, n))\n",
" shared = x.intersection(y)\n",
" total = x.union(y)\n",
" return len(shared) / len(total)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"## Calculate Jaccard Similarity"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Reusing dataset glue (C:\\Users\\James\\.cache\\huggingface\\datasets\\glue\\stsb\\1.0.0\\dacbe3125aa31d7f70367a07a8a9e72a5a0bfeb5fc42e75c9db75b96da6053ad)\n",
"Reusing dataset glue (C:\\Users\\James\\.cache\\huggingface\\datasets\\glue\\rte\\1.0.0\\dacbe3125aa31d7f70367a07a8a9e72a5a0bfeb5fc42e75c9db75b96da6053ad)\n",
"Reusing dataset glue (C:\\Users\\James\\.cache\\huggingface\\datasets\\glue\\mrpc\\1.0.0\\dacbe3125aa31d7f70367a07a8a9e72a5a0bfeb5fc42e75c9db75b96da6053ad)\n",
"Reusing dataset glue (C:\\Users\\James\\.cache\\huggingface\\datasets\\glue\\qqp\\1.0.0\\dacbe3125aa31d7f70367a07a8a9e72a5a0bfeb5fc42e75c9db75b96da6053ad)\n"
]
}
],
"source": [
"from datasets import load_dataset\n",
"\n",
"stsb = load_dataset('glue', 'stsb', split='train')\n",
"rte = load_dataset('glue', 'rte', split='train')\n",
"mrpc = load_dataset('glue', 'mrpc', split='train')\n",
"qqp = load_dataset('glue', 'qqp', split='train')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"\n",
"with open('data/med_qp_train.json', 'r') as fp:\n",
" med_json = json.load(fp)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2753/2753 [00:00<00:00, 2773035.28it/s]\n"
]
},
{
"data": {
"text/plain": [
"5506"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tqdm.auto import tqdm\n",
"\n",
"med_qp = []\n",
"for row in tqdm(med_json['data']):\n",
" med_qp.append(row['question_1'])\n",
" med_qp.append(row['question_2'])\n",
"len(med_qp)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dataset({\n",
" features: ['sentence1', 'sentence2', 'label', 'idx'],\n",
" num_rows: 5749\n",
"})"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stsb"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dataset({\n",
" features: ['sentence1', 'sentence2', 'label', 'idx'],\n",
" num_rows: 2490\n",
"})"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rte"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dataset({\n",
" features: ['sentence1', 'sentence2', 'label', 'idx'],\n",
" num_rows: 3668\n",
"})"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mrpc"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dataset({\n",
" features: ['question1', 'question2', 'label', 'idx'],\n",
" num_rows: 363846\n",
"})"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qqp"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"stsb = stsb['sentence1'] + stsb['sentence2']\n",
"rte = rte['sentence1'] + rte['sentence2']\n",
"mrpc = mrpc['sentence1'] + mrpc['sentence2']\n",
"qqp = qqp['question1'] + qqp['question2']"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 0\n",
"0 1\n",
"0 2\n",
"0 3\n",
"0 4\n",
"1 0\n",
"1 1\n",
"1 2\n",
"1 3\n",
"1 4\n",
"2 0\n",
"2 1\n",
"2 2\n",
"2 3\n",
"2 4\n",
"3 0\n",
"3 1\n",
"3 2\n",
"3 3\n",
"3 4\n",
"4 0\n",
"4 1\n",
"4 2\n",
"4 3\n",
"4 4\n"
]
}
],
"source": [
"import numpy as np\n",
"\n",
"datasets = [stsb, rte, mrpc, qqp, med_qp]\n",
"scores = np.zeros((len(datasets), len(datasets)))\n",
"\n",
"for i, data in enumerate(datasets):\n",
" for j, data in enumerate(datasets):\n",
" print(i, j)\n",
" scores[i, j] = jaccard(datasets[i], datasets[j])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 0.48143475, 0.5335803 , 0.40662604, 0.28063831],\n",
" [0.48143475, 1. , 0.50830565, 0.51366664, 0.26585589],\n",
" [0.5335803 , 0.50830565, 1. , 0.43344368, 0.2791901 ],\n",
" [0.40662604, 0.51366664, 0.43344368, 1. , 0.21304331],\n",
" [0.28063831, 0.26585589, 0.2791901 , 0.21304331, 1. ]])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"sns.heatmap(scores, annot=True)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.4066260413452638"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"jaccard(qqp, stsb)"
]
}
],
"metadata": {
"interpreter": {
"hash": "5188bc372fa413aa2565ae5d28228f50ad7b2c4ebb4a82c5900fd598adbb6408"
},
"kernelspec": {
"display_name": "Python 3.8.8 64-bit ('ml': conda)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
@kshirsagarsiddharth
Copy link

Where the make_ngrams function is used ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment