View on GitHub

Phonological CorpusTools

Take the stress out of corpus analysis!

Download this project as a .zip file Download this project as a tar.gz file

About Phonological CorpusTools

There is an ever-increasing interest in exploring the roles of frequency and usage in understanding phonological phenomena (e.g., Bybee 2001, Ernestus 2011, Frisch 2011, Archangeli & Pulleyblank 2013, Hume et al. to appear). Corpora of language give us a way of making generalizations across wide swaths of such usage, exploring patterns in under-documented languages, and creating balanced stimuli in experiments, but:

Phonological CorpusTools (PCT) is our answer to these problems – a free, downloadable program with both a graphical and command-line interface, designed to be a search and analysis aid for dealing with questions of phonological interest in large corpora.

An overview of the beta version of PCT (0.15, July 2014) and its utility is available in poster format.


Please always use the latest version of PCT! You can check for updates from within PCT (“Help” / “Check for updates…”).

Version 1.4 was released in December 2018. It differs from v. 1.3 (July 2017) in the following areas:

  1. Support for syllable structure has been added to the software, allowing searches based on stress or tone.
  2. The functional load algorithm based on minimal pair counts has been FIXED – previous versions returned counts based on token frequencies instead of type frequencies.
  3. The feature values in the pre-included feature systems have been updated to fix corruption issues.
  4. Functional load calculations with right-hand environment specifications should be working.

Version 1.3 was released in July 2017. It differs from v. 1.2 (December 2016) in the following areas:

  1. An additonal analysis algorithm for calculating informativity has been added.
  2. The options for relativizing functional load have been revised and clarified.
  3. Numerous small usability fixes have been included.

Version 1.2 was released in December 2016. It differs from v. 1.1 (July 2015) in the following areas:

  1. Inventory management – The tools for categorizing segments into an inventory chart have been updated to allow users to interactively update the chart based on nature classes, including the ability to add / delete / rearrange columns and rows in the chart. Uncategorized segments are more clearly shown and their features easily examined for reference.

  2. Increased flexibility – Environments can be more flexibly defined, e.g., using wildcards and inserting / modifying / deleting segments or classes of segments within a linear string. Within the functional load analysis, functional load can be calculated within individual sets of environments rather than exclusively at the word level.

  3. Small updates for usability – Numerous small updates have been implemented to aid usability, such as improving the ability to select segments based on features, returning results that list features if those were used in the selection of segments, updating the documentation for clarity, adding an option for normalizing functional load results, etc.

Version 1.1 was released as of 6 July 2015. It differs from version 1.0.1 (March 2015) in three main areas:

  1. Loading of corpora – The interface for corpus loading has been streamlined, and users have more options for adjusting the interpretation of transcriptions and columns as they initiate a corpus. Better support for interlinear glosses and TextGrids is also provided.

  2. Specification of inventories, features, and environments – Inventories can now be displayed in IPA-like charts based on user-specified features. Feature selection in analysis functions has been streamlined and natural class selection is better supported. Environment selection is now iterative and more interactive.

  3. Pronunciation variants – Analysis functions now provide users with options for how to handle pronunciation variants when they occur in a corpus.

Workshops / Tutorials

We’re delighted to have participated in various workshops / conferences:

Example files and tutorial handouts can be downloaded from:


Please see the user’s manual of the latest version for complete documentation; currently available at Note that you can download a .pdf of this guide by going to “Read the Docs” on the bottom left-hand side of the page and selecting “PDF.” Documentation can also be found throughout the PCT software itself by clicking on “Help” (either in the main menu or in dialogue boxes relating to individual functions).

PCT itself should be cited something like the following (using the correct version number):

Hall, Kathleen Currie, Blake Allen, Michael Fry, Khia Johnson, Roger Lo, Scott Mackie, Michael McAuliffe, and Stanley Nam. (2018). Phonological CorpusTools, Version 1.4. [Computer program]. Available from

About us

We are a group of researchers in the Linguistics Department at the University of British Columbia. The PI on this project is Dr. Kathleen Currie Hall, and the project is supported in part by a SSHRC Insight Development grant to Dr. Hall.

What do we mean by a “corpus”?

Within PCT, a corpus generally refers to a structured list of words, each phonologically transcribed, and accompanied by their token frequency of occurrence within some body of usage. It can contain other information as well – e.g., lexical class of the word, number of syllables, morphological parse, etc. – but it doesn’t have to. PCT can also be used to convert running text into a frequency-tagged corpus of this sort.

Multi-character sequences

Below, you can find lists of the multi-character sequences that are included in each of the built-in transcription-to-feature system files. You may want to use these in order to copy & paste them into the corpus creation dialogue box if you are using a corpus file that is not already delimited.

Buckeye: aa, aan, ae, aen, ah, ahn, ao, aon, aw, awn, ay, ayn, ch, dh, dx, eh, el, em, en, ey, eyn, hh, ih, ihn, iy, iyn, jh, ng, nx, ow, own, oy, oyn, sh, th, tq, uh, uhn, uw, uwn, zh, ehn, er, ern

CELEX: tS, dZ, aU, aI, eI, OI


CPA: T/, J/, ^/, u:, A/, a/, e/, O/, o/, n,, l,

IPA: k̟x̟, ɡ̟ɣ̟, k̟͡x̟, ɡ̟͡ɣ̟, dʑ, tɕ, d͡ʑ, t͡ɕ, dʒ, dz, dɮ, d̠ɮ̠, tʃ, t̠ɬ̠, ts, tɬ, t̪s̪, t̪ɬ̪, d̪z̪, d̪ɮ̪, ʈʂ, ɖʐ, pf, bv, pɸ, bβ, t̪θ, d̪ð, cç, ɟʝ, kx, k̠x̠, ɡɣ, ɡ̠ɣ̠, qχ, ɢʁ, kp, ɡb, pt, bd, d͡ʒ, d͡z, d͡ɮ, d̠͡ɮ̠, t͡ʃ, t̠͡ɬ̠, t͡s, t͡ɬ, t̪͡s̪, t̪͡ɬ̪, d̪͡z̪, d̪͡ɮ̪, ʈ͡ʂ, ɖ͡ʐ, p͡f, b͡v, p͡ɸ, b͡β, t̪͡θ, d̪͡ð, c͡ç, ɟ͡ʝ, k͡x, k̠͡x̠, ɡ͡ɣ, ɡ̠͡ɣ̠, q͡χ, ɢ͡ʁ, k͡p, ɡ͡b, p͡t, b͡d, aʊ, aɪ, eɪ, oʊ, ɔɪ

SAMPA: I:, i:, U:, u:, E:, O:, Q:, tS, dZ, @U, aU, aI, eI, OI, n,, l,, 3`


Standard installation (executable)


(NOTE: This method requires that you are running a 64-bit version of windows. You can check this by in Control Panel -> System and Security -> System.)

Download the latest version’s installer (PhonologicalCorpusTools_win64_1.1.0.exe) from the Phonological CorpusTools page on GitHub ( Double-click this file to install PCT to your computer. It can then be run the same as any other program, via Start -> Programs.

Mac OS X (requires 10.8 or higher)

Download the file ‘Phonological.CorpusTools-1.1.0.dmg’ from the Phonological CorpusTools page on GitHub ( You can then double-click this file to run Phonological CorpusTools. You can move the icon to your toolbar like any other application.


There is currently no executable option available for Linux operating systems. Please use the fallback installation method below to install from source.

Fallback installation (

Windows, Mac OS X, or Linux


If you expect to use the acoustic similarity module, there are additional dependencies:

Download the latest version of the source code for Phonological CorpusTools from the GitHub page ( After expanding the file, you will find a file called ‘’ in the top level directory. Run it in one of the following ways:

  1. Double-click it. If this doesn’t work, access the file properties and ensure that you have permission to run the file; if not, give them to yourself. In Windows, this may require that you open the file in Administrator mode (also accessible through file properties). If your computer opens the .py file in a text editor rather than running it, you can access the file properties to set Python 3.x as the default program to use with run .py files. If the file is opened in IDLE (a Python editor), you can use the “Run” button in the IDLE interface to run the script instead.

  2. Open a terminal window and run the file. In Linux or Mac OS X, there should be a Terminal application pre-installed. In Windows, you may need to install Cygwin ( ). Once the terminal window is open, nagivate to the top level CorpusTools folder—the one that has in it. (Use the command ‘cd’ to navigate your filesystem; Google “terminal change directory” for further instructions.) Once in the correct directory, run this command: “python3 install” (no quotes). You may lack proper permissions to run this file, in which case on Linux or Mac OS X you can instead run “sudo python3 install”. If Python 3.x is the only version of Python on your system, it may be possible or necessary to use the command “python” rather than “python3”.

Phonological CorpusTools should now be installed! Run it from a terminal window using the command “pct”. You can also open a “Run” dialogue and use the command “pct” there. In Windows, the Run tool is usuall found in All Programs -> Accessories.