Skip to content

Instantly share code, notes, and snippets.

@erogol
Last active February 5, 2019 14:35
Show Gist options
  • Save erogol/b06864d0612e00eb6c93badb195973d2 to your computer and use it in GitHub Desktop.
Save erogol/b06864d0612e00eb6c93badb195973d2 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This code tries to pick sentences from a given corpus with an optimized phoneme coverage"
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [],
"source": [
"import argparse\n",
"import phonemizer\n",
"import re\n",
"import numpy as np\n",
"from tqdm import tqdm_notebook as tqdm\n",
"from phonemizer.phonemize import phonemize\n",
"from collections import Counter\n",
"\n",
"# Regular expression matchinf punctuations, ignoring empty space\n",
"_punctuations = '!\\'(),-.:;? '\n",
"pat = r'['+_punctuations[:-1]+']+'\n",
"\n",
"def text2phoneme(text, language):\n",
" '''\n",
" Convert graphemes to phonemes.\n",
" '''\n",
" seperator = phonemizer.separator.Separator(' |', '', '|',)\n",
" #try:\n",
" punctuations = re.findall(pat, text)\n",
" ph = phonemize(text, separator=seperator, strip=False, njobs=1, backend='espeak', language=language)\n",
"# print(ph)\n",
" # Replace \\n with matching punctuations.\n",
" if len(punctuations) > 0:\n",
" ph = ph.replace('\\n', '')\n",
" return ph\n",
"\n",
"\n",
"def load_csv(file_path):\n",
" \"\"\"Load csv file as in LJSpeech\"\"\"\n",
" items = []\n",
" with open(file_path, 'r') as ttf:\n",
" for line in ttf:\n",
" cols = line.split('|')\n",
" text = cols[1]\n",
" items.append(text)\n",
" return items\n",
"\n",
"\n",
"def ngrams(texts, n):\n",
" \"\"\"\n",
" Computes phoneme frequencies and phoneme to text index\n",
" \"\"\"\n",
" freqs = Counter()\n",
" inverted_index = {}\n",
" for idx, text in enumerate(tqdm(texts)):\n",
" ph = text2phoneme(text, 'en-us')\n",
" ph = ph.split(' |')\n",
" for ph_word in ph:\n",
" ph_word = ph_word.split('|')\n",
" ph_word = [p for p in ph_word if p is not \"\"]\n",
" for i in range(len(ph_word)-n+1):\n",
" g = ' '.join(ph_word[i:i+n])\n",
" freqs.setdefault(g, 0)\n",
" freqs[g] += 1\n",
" inverted_index.setdefault(g, [])\n",
" inverted_index[g] += [idx]\n",
" inverted_index[g] = list(set(inverted_index[g]))\n",
" return freqs, inverted_index\n",
"\n",
"\n",
"def create_index(inverted_index):\n",
" \"\"\"\n",
" Create index from text id to phonemes\n",
" \"\"\"\n",
" index = {}\n",
" for key in inverted_index.keys():\n",
" for text_idx in inverted_index[key]:\n",
" index.setdefault(text_idx, [])\n",
" index[text_idx] += [key]\n",
" return index\n",
"\n",
"\n",
"def score_texts(texts, index, inverted_index, freqs):\n",
" \"\"\"\n",
" Score each text with the sum of member phoneme scores normed by the text length.\n",
" So this scheme enforces the pick text samples with high phoneme coverage by\n",
" favoring shorter ones.\n",
" \"\"\"\n",
" scores = [None] * len(index)\n",
" for idx in range(len(index)):\n",
" phonemes = index[idx]\n",
" num_phonemes = len(phonemes)\n",
" score = 0\n",
" for phoneme in phonemes:\n",
" score += 1/freqs[phoneme]\n",
" score /= len(texts[idx])\n",
" scores[idx] = score\n",
" return scores\n",
"\n",
"\n",
"def compute_coverage(subset_idxs, index, freqs):\n",
" \"\"\"\n",
" Compute phoneme coverage ration for given samples in the corpus.\n",
" \"\"\"\n",
" phonemes = freqs.keys()\n",
" num_phonemes = len(phonemes)\n",
" subset_index = [index[idx] for idx in subset_idxs]\n",
" all_phonemes = []\n",
" for text_phonemes in subset_index:\n",
" all_phonemes += text_phonemes\n",
" all_phonemes = list(set(all_phonemes))\n",
" return len(all_phonemes) / len(freqs.keys())"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6dd9bed1d58c4282b231027f94cb1eda",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, max=13100), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "99a3789e78764d0b9ad7208564c07e46",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, max=13100), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e87184ad4afd47ffb74327bb302042ba",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(IntProgress(value=0, max=13100), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"text_file = \"../Data/LJSpeech-1.1/metadata.csv\"\n",
"N = 3\n",
"\n",
"texts = load_csv(text_file)\n",
"freqs = {}\n",
"inverted_index = {}\n",
"for n in range(1, N+1):\n",
" f, ii = ngrams(texts, n)\n",
" freqs = {**freqs, **f}\n",
" inverted_index = {**inverted_index, **ii} \n"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"index = create_index(inverted_index)"
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [],
"source": [
"scores = score_texts(texts, index, inverted_index, freqs)\n",
"assert len(scores) == len(texts)"
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [],
"source": [
"# find top K sentecens\n",
"order_idxs = list(reversed(np.argsort(scores)))"
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9323151683443249\n",
"0.6404026379729261\n"
]
}
],
"source": [
"K = 2000\n",
"# coverage with K selected sentences\n",
"print(compute_coverage(order_idxs[:K], index, freqs))\n",
"# coverage with K randomly selected sentences\n",
"print(compute_coverage(np.random.choice(range(len(texts)), size=K), index, freqs))"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"95.6055\n",
"7\n",
"170\n"
]
}
],
"source": [
"selected_text = [texts[idx] for idx in order_idxs[:K]]\n",
"text_lenghts = [len(text) for text in selected_text]\n",
"avg_text_len = np.mean(text_lenghts)\n",
"min_text_len = np.min(text_lenghts)\n",
"max_text_len = np.max(text_lenghts)\n",
"\n",
"print(avg_text_len)\n",
"print(min_text_len)\n",
"print(max_text_len)"
]
},
{
"cell_type": "code",
"execution_count": 271,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f8bbe5f5080>]"
]
},
"execution_count": 271,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8bbe894898>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pylab as plt\n",
"%matplotlib inline\n",
"plt.title(\"Sentence Scores\")\n",
"plt.plot(sorted(scores)[::-1])"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f8bbe58a390>]"
]
},
"execution_count": 272,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8bbe603ba8>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.title(\"Sentence Lengths\")\n",
"plt.plot(sorted(text_lenghts)[::-1])"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Its impression shows the face of a beardless young man, intelligent and refined.\n",
"He went out next morning with the booty when the doors were re-opened, and attracted no attention.\n",
"There is some indication that he may relate to men more easily than to women in view of the more mature conceptualisation.\n",
"laughing and uproarious, utterly unmindful of the companionship of men upon whom lay the shadow of an impending shameful death.\n",
"or for detention pending court appearance or commitment to a child-caring or custodial institution such as a training school.\n",
"rudiments of eyes in cave fishes, hind limbs beneath the skin of whales, the vermiform appendix in man,\n",
"it is not a real gain, for the modern printer throws the gain away by putting inordinately wide spaces between his lines, which, probably,\n",
"Two days later, a local Republican leader called for a \"civilized nonpartisan\" welcome\n",
"and denied admission to the \"charity wards,\" which partook of all the benefits of bequests and donations to poor debtors.\n",
"He met his death with unshaken firmness, only entreating that a certain blue handkerchief,\n",
"In 1812, James Claudius Rich, the British Resident at Baghdad, made the first complete examination of the ruins.\n",
"and to pay overseers or instructors out of the county rates.\n",
"No judge ever condemned a man to be half-perished with cold by day, or half-suffocated with heat by night.\n",
"This punctuate missile wound, about two-fifths inch in diameter (1 centimeter) and located approximately 5 inches above the left knee,\n",
"leaving between them room for a four-horse chariot to turn.\n",
"Prison chaplains of experience and high repute, such as Messrs. Field, Clay, Kingsmill, Burt, and Osborne, also advocated it.\n",
"but I, the devout petitioner, the worshipper of the gods, built the moat, and made its wall of burned brick and bitumen mountain high.\n",
"Calcraft's salary was more than the proverbial \"thirteenpence halfpenny -- hangman's wages.\"\n",
"when a petition was presented against the return of Messrs. Adam Dundas and Fitzroy Kelly. Various witnesses, including Messrs. J. B. Dasent,\n",
"that of a prize-fighter named Donovan, tried the same day, and convicted of manslaughter.\n",
"Two cart-loads of faggots were piled about her, and after she had hung for half-an-hour the fire was kindled.\n",
"One of his sumpter-mules gave birth to a foal.\n",
"Then the doorkeepers, when they heard this, carried him at once before the Magistrates.\n",
"Under \"Pathological Diagnosis\" the cause of death was set forth as \"Gunshot wound, head.\"\n",
"Brown took several sheets, and then was detected by Brewer, a fellow-workman of superior grade,\n",
"McWatters was sure that he left the checkpoint on time\n",
"followed him over to Sweden, and arrested him at Helsingfors.\n",
"Noble exploits in Persia are ever highly honored and bring their authors to greatness.\n",
"and the beginner in biological study is surprised to find them described in textbooks of both botany and zoology.\n",
"I was startled by the sharp report or explosion,\n",
"They were made to wash and swab the ward, or they were shut out from the ward fireplace, and forbidden to pass a chalked line drawn on the floor,\n",
"The Fleet, which stood in Farringdon Street,\n",
"and later experience has fully proved the advantage of a judicious system of gratuities for labor;\n",
"But the weights of the carbon, hydrogen, oxygen, nitrogen, phosphorus, sulfur and other elementary bodies contained in the bean-plant\n",
"Weedon and Lecasser to twelve and six months respectively in Coldbath Fields.\n",
"He said that his Marine service in Okinawa and elsewhere had given him, quote, a chance to observe American imperialism, end quote.\n",
"In Dallas the rain had stopped, and by midmorning a gloomy overcast sky had given way to the bright sunshine that greeted the Presidential party\n",
"It was the intersection near Lamar Street, it was near Poydras and Lamar Street.\n",
"Mrs. Tarpey was almost immediately captured and put on her trial, but she was acquitted on the plea that she had acted under the coercion of her husband.\n",
"running at a dog-trot into London, and others swore that they plainly recognized him as the man seen soon afterwards in the lane.\n",
"This assignment was given to Agent James P. Hosty, Jr. of the Dallas office upon Fain's retirement.\n",
"After this second exploit, his praise was in all mouths.\n",
"The last execution at which he acted was that of Godwin, on the 25th May, 1874.\n",
"that of Phoebe Harris, who in 1788 was \"barbariously\" executed and burnt before Newgate for coining.\n",
"He played high, and spent his nights at the club, or in joyous and dissolute company.\n",
"He was so much in favor of short drops that his immediate successor, Marwood, stigmatized him as \"short-drop\" man.\n",
"or like Cannon the chimney-sweeper, who savagely killed the policeman.\n",
"but he came as a lad to London, and took service as a pot-boy to a publican.\n",
"He saw Mr. Briggs' watch-chain, and followed him instantly into the carriage, determined to have it at all costs.\n",
"Romanes's \"Darwin and After Darwin\", and Le Conte's \"Evolution.\"\n"
]
}
],
"source": [
"for idx in range(500, 550):\n",
" print(texts[order_idxs[idx]])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment