{
  "fetched_at": "2026-10-19T07:12:20Z",
  "source_url": "https://www.kaggle.com/competitions/11785-s19-hw3p2v2/data",
  "pages": [
    {
      "name": "rules",
      "content": "This is a page where you can include rules that participants must accept before joining. You may wish to include rules like:\n\n - Don't cheat!\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "data-description",
      "content": "<h2>Data Files</h2>\n<p>Data files are available for download from this page.</p>\n<h2>File Descriptions </h2>\n<ul>\n<li><strong>transformed_test_data.npy</strong> - test features</li>\n<li><strong>wsj0_train.npy</strong> - train features</li>\n<li><strong>wsj0_dev.npy</strong> - development/validation features</li>\n<li><strong> wsj0_train_merged_labels.npy </strong> - training labels</li>\n<li><strong> wsj0_dev_merged_labels.npy </strong> - development/validation labels</li>\n<li><strong> sample_submission.csv </strong> -  sample submission in correct format. Submission is a single silence phoneme (\".\") for each utterance. </li>\n<li><strong> phoneme_list.py </strong> -  List of phoneme full names, and list of phoneme single-character encodings. </li>\n<h2> Feature Files </h2>\n<p> Same data layout as previously. </p>\n<h2> Label Files </h2>\n<p> Array length is the number of utterances. Each item in the array is an array that is the length of the number of phonemes in that utterance. The labels are [0-45], 46 phonemes.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "<h2> HW3P2 </h2>\n<p>This is the Kaggle competition for hw3p2 -- exciting times!</p>\n<p>The WSJ dataset will be used for this contest. We are going to be using unaligned labels in this contest. That means you are given the list of phonemes for each utterance, but not which frames correspond to which phonemes.</p>\n<p>Inference of the alignment will require using CTC loss.</p>\n<h2>What does the data look like?</h2>\n<p>Input data is an array of utterances, each of which is shaped (frames, frequencies).\n&lt;\\p&gt;\n</p><p>\nLabels are simply the list of phonemes in the utterance [0-45]. There are 46 phoneme labels. The phoneme array will be as long as however many phonemes are in the utterance. We provide a lookup mapping each phoneme to a single character for the purposes of this competition. Example below:\n&lt;\\p&gt;\n</p><p>\nThe first sentence in the development set is the following:</p>\n<pre>THE FEMALE PRODUCES A LITTER OF TWO TO FOUR YOUNG IN NOVEMBER AND DECEMBER</pre>\n<p>The first item in the dev datafile is an array of ints. If you were to print those integers using our map of phonemes to characters, you would print the following:</p>\n<pre>.DhfImElpRhdUsizhlitrhvtUtifoR?hGinnOvembrAnddisembr_.</pre>\n<p> If you sound it out, you can convince yourself that these are the phonemes for the sentence above. </p>\n<h2> The Task </h2>\n<p> Predict the phonemes contained in utterances in the test set. You are not given aligned phonemes in the training data, and you are not asked to produce alignment for the test data.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<h2>Evaluation Metric</h2>\n<p>You will be evaluated using Kaggle's character-level string edit distance. Since we mapped each phoneme to a single character, that means you are being evaluated on phoneme edit distance.</p>\n<p>We are using Levenshtein distance, which counts how many additions deletions and modifications are required to make one sequence into another.</p>\n<p>Read about Levenshtein Distance <a href=\"https://en.wikipedia.org/wiki/Levenshtein_distance\">here</a> </p>\n<h3>Submission Format</h3>\n<p>Your submission should be a CSV file. The headers should be \"Id\", and \"Predicted\". - Id refers to the 0-based index of utterance in the test set - Predicted is the phoneme string. See the sample submission for more details</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "CTC Loss",
      "content": "<h2>CTC Loss</h2>\n\nAs described above, there is no alignment between utterances and their corresponding phonemes. Thus, Train your network using CTC loss. Decode your predictions, preferably using beam search. Use the list of phonemes provided on the data page to make each prediction into a text string.\n\nTensor flow has built-in CTC loss function. But for Pytorch, you can install the CTC-Loss library. The  required CTC-loss library, Warp-CTC, can be installed [here](https://github.com/SeanNaren/warp-ctc). Follow the download instruction. NOTE: Make sure you download the GPU support version. \n\n##Using Warp CTC in pytorch\n\nThe module assumes the blank position is at `0`. If there are `n` labels, the model output should be of size `n+1`. The targets passed to the loss function should be from `1` to `n` instead of from `0` to `n-1`.\n\nThe loss function takes four inputs. The first input is a tensor of your model network output. The second input is a tensor of all the labels should be concatenated into one single 1D tensor. The third input is a tensor containing the size of each output sequence from the network. The fourth input is a tensor containing the label of each target.\n\nYour submission should contain the predicted strings for each item in the test set.\n\n##CTC Decoding\n\nIf you are using PyTorch you can manually install the library, ctcdecode, [here](https://github.com/parlance/ctcdecode). They have an implementation of beam search, use it in your code to decode the output of your model. If you are using Tensorflow, it has it's own implementation of beam search.\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}