{ "cells": [ { "cell_type": "markdown", "id": "0d36db1d", "metadata": {}, "source": [ "# Notebook Example" ] }, { "cell_type": "code", "execution_count": 1, "id": "a63c6636", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.406461Z", "start_time": "2023-02-07T08:39:47.587304Z" } }, "outputs": [ { "data": { "text/plain": [ "'0.4.0'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from lexicalrichness import LexicalRichness\n", "import lexicalrichness\n", "lexicalrichness.__version__" ] }, { "cell_type": "code", "execution_count": 2, "id": "146c8a20", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.422570Z", "start_time": "2023-02-07T08:39:49.407461Z" } }, "outputs": [], "source": [ "# Enter your own text here if you prefer\n", "text = \"\"\"Measure of textual lexical diversity, computed as the mean length of sequential words in\n", " a text that maintains a minimum threshold TTR score.\n", "\n", " Iterates over words until TTR scores falls below a threshold, then increase factor\n", " counter by 1 and start over. McCarthy and Jarvis (2010, pg. 385) recommends a factor\n", " threshold in the range of [0.660, 0.750].\n", " (McCarthy 2005, McCarthy and Jarvis 2010)\"\"\"\n", "\n", "# instantiate new text object (use the tokenizer=blobber argument to use the textblob tokenizer)\n", "lex = LexicalRichness(text)" ] }, { "cell_type": "markdown", "id": "3b3161cc", "metadata": {}, "source": [ "## Attributes" ] }, { "cell_type": "code", "execution_count": 3, "id": "a9505240", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.438386Z", "start_time": "2023-02-07T08:39:49.423389Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['measure', 'of', 'textual', 'lexical', 'diversity', 'computed', 'as', 'the', 'mean', 'length'] ['factor', 'threshold', 'in', 'the', 'range', 'of', 'mccarthy', 'mccarthy', 'and', 'jarvis']\n" ] } ], "source": [ "# Get list of words\n", "list_of_words = lex.wordlist\n", "print(list_of_words[:10], list_of_words[-10:])" ] }, { "cell_type": "code", "execution_count": 4, "id": "ab1197ed", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.453953Z", "start_time": "2023-02-07T08:39:49.439386Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "57" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return word count (w).\n", "lex.words" ] }, { "cell_type": "code", "execution_count": 5, "id": "670dc039", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.469955Z", "start_time": "2023-02-07T08:39:49.455952Z" } }, "outputs": [ { "data": { "text/plain": [ "39" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return (unique) word count (t).\n", "lex.terms" ] }, { "cell_type": "markdown", "id": "a6dee098", "metadata": {}, "source": [ "**Type-token ratio** (TTR; Chotlos 1944, Templin 1957):\n", "$$\n", "TTR = \\frac{t}{w}\n", "$$\n", "where $t$ or $t(w)$ is the number unique terms as function of the text of length $w$ words. " ] }, { "cell_type": "code", "execution_count": 6, "id": "15cf3baa", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.485978Z", "start_time": "2023-02-07T08:39:49.470956Z" } }, "outputs": [ { "data": { "text/plain": [ "0.6842105263157895" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return type-token ratio (TTR) of text.\n", "lex.ttr" ] }, { "cell_type": "markdown", "id": "6c7efebb", "metadata": {}, "source": [ "**Root TTR** (RTTR; Guiraud 1954, 1960):\n", "$$\n", "RTTR = \\frac{t}{\\sqrt{w}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "243c0b6e", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.501981Z", "start_time": "2023-02-07T08:39:49.486978Z" } }, "outputs": [ { "data": { "text/plain": [ "5.165676192553671" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return root type-token ratio (RTTR) of text.\n", "lex.rttr" ] }, { "cell_type": "markdown", "id": "2ecded9f", "metadata": {}, "source": [ "**Corrected TTR** (RTTR; Guiraud 1954, 1960):\n", "$$\n", "CTTR = \\frac{t}{\\sqrt{2w}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 8, "id": "6ef1a291", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.517963Z", "start_time": "2023-02-07T08:39:49.502982Z" } }, "outputs": [ { "data": { "text/plain": [ "3.6526846651686067" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return corrected type-token ratio (CTTR) of text.\n", "lex.cttr" ] }, { "cell_type": "markdown", "id": "e91fdae3", "metadata": {}, "source": [ "**Herdan's C** (Herdan 1960, 1964):\n", "$$\n", "C = \\frac{log(t)}{log(w)}\n", "$$" ] }, { "cell_type": "code", "execution_count": 9, "id": "c8872550", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.532969Z", "start_time": "2023-02-07T08:39:49.518964Z" } }, "outputs": [ { "data": { "text/plain": [ "0.9061378160786574" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return Herdan's C\n", "lex.Herdan" ] }, { "cell_type": "markdown", "id": "db530353", "metadata": {}, "source": [ "**Summer's index** (Summer 1966)\n", "$$\n", "Summer = \\frac{log \\log(t)}{log\\log(w)}\n", "$$" ] }, { "cell_type": "code", "execution_count": 10, "id": "2afe9172", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.548976Z", "start_time": "2023-02-07T08:39:49.533980Z" } }, "outputs": [ { "data": { "text/plain": [ "0.9294460323356605" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return Summer's index\n", "lex.Summer" ] }, { "cell_type": "markdown", "id": "6845e9e1", "metadata": {}, "source": [ "**Dugast's index** (Dugast 1978):\n", "$$\n", "Dugast = \\frac{log(w)^2}{log(w) - log (t)}\n", "$$" ] }, { "cell_type": "code", "execution_count": 11, "id": "7085f9e8", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.564960Z", "start_time": "2023-02-07T08:39:49.550978Z" } }, "outputs": [ { "data": { "text/plain": [ "43.074336212149774" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return Dugast's index\n", "lex.Dugast" ] }, { "cell_type": "markdown", "id": "9899b214", "metadata": {}, "source": [ "**Maas's index** (Maas 1972):\n", "$$\n", "Maas = \\frac{log(w) - log(t)}{log(w)^2} \n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "id": "67ac775e", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.580978Z", "start_time": "2023-02-07T08:39:49.566961Z" } }, "outputs": [ { "data": { "text/plain": [ "0.023215679867353005" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.Maas" ] }, { "cell_type": "markdown", "id": "5d84c62e", "metadata": {}, "source": [ "**Yule's K** (Yule 1944, Tweedie and Baayen 1998):\n", "$$\n", "k = 10^4 \\times \\left\\{\\sum_{i=1}^n f(i,N) \\left(\\frac{i}{N}\\right)^2 -\\frac{1}{N} \\right\\}\n", "$$" ] }, { "cell_type": "code", "execution_count": 13, "id": "7b2d8ab1", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.596983Z", "start_time": "2023-02-07T08:39:49.581979Z" } }, "outputs": [ { "data": { "text/plain": [ "153.8935056940597" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.yulek" ] }, { "cell_type": "markdown", "id": "6a744291", "metadata": {}, "source": [ "**Yule's I** (Yule 1944, Tweedie and Baayen 1998):\n", "$$\n", "I = \\frac{t^2}{\\sum^{n_{\\text{max}}}_{i=1} i^2f(i,w) - t}\n", "$$" ] }, { "cell_type": "code", "execution_count": 14, "id": "436059ed", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.612993Z", "start_time": "2023-02-07T08:39:49.599983Z" } }, "outputs": [ { "data": { "text/plain": [ "22.36764705882353" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.yulei" ] }, { "cell_type": "markdown", "id": "37861999", "metadata": {}, "source": [ "**Herdan's Vm** (Herdan 1955, Tweedie and Baayen 1998):\n", "$$\n", "V_m = \\sqrt{\\sum^{n_{\\text{max}}}_{i=1} f(i,w) \\left(\\frac{i}{w} \\right)^2 - \\frac{1}{w}} \n", "$$" ] }, { "cell_type": "code", "execution_count": 15, "id": "81f26d3e", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.629001Z", "start_time": "2023-02-07T08:39:49.613993Z" } }, "outputs": [ { "data": { "text/plain": [ "0.08539428890448784" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.herdanvm" ] }, { "cell_type": "markdown", "id": "3cd35c3f", "metadata": {}, "source": [ "**Simpson's D** (Simpson 1949, Tweedie and Baayen 1998):\n", "$$\n", "D = \\sum^{n_{\\text{max}}}_{i=1} f(i,w) \\frac{i}{w}\\frac{i-1}{w-1}\n", "$$" ] }, { "cell_type": "code", "execution_count": 16, "id": "bef0c91c", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.644972Z", "start_time": "2023-02-07T08:39:49.631002Z" } }, "outputs": [ { "data": { "text/plain": [ "0.015664160401002505" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.simpsond" ] }, { "cell_type": "markdown", "id": "5c6487d4", "metadata": {}, "source": [ "## Methods" ] }, { "cell_type": "markdown", "id": "b86e05fc", "metadata": {}, "source": [ "### MSTTR: Mean segmental type-token ratio\n", "\n", "* computed as average of TTR scores for segments in a text\n", "* Split a text into segments of length segment_window. For each segment, compute the TTR. MSTTR score is the sum of these scores divided by the number of segments\n", "* (Johnson 1944)" ] }, { "cell_type": "code", "execution_count": 17, "id": "ec152992", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.660979Z", "start_time": "2023-02-07T08:39:49.645973Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "0.88" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.msttr(\n", " segment_window=25 # size of each segment\n", ")" ] }, { "cell_type": "markdown", "id": "90f19f4e", "metadata": {}, "source": [ "### MATTR: Moving average type-token ratio\n", "* Computed using the average of TTRs over successive segments of a text\n", "* Then take the average of all window's TTR\n", "* (Covington 2007, Covington and McFall 2010)" ] }, { "cell_type": "code", "execution_count": 18, "id": "70840cc6", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.676703Z", "start_time": "2023-02-07T08:39:49.661981Z" } }, "outputs": [ { "data": { "text/plain": [ "0.8351515151515151" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Return moving average type-token ratio (MATTR).\n", "lex.mattr(\n", " window_size=25 # Size of each sliding window\n", ")" ] }, { "cell_type": "markdown", "id": "2b53718a", "metadata": {}, "source": [ "### MTLD: Measure of Lexical Diversity\n", "\n", "* Computed as the mean length of sequential words in a text that maintains a minimum threshold TTR score\n", "* Iterates over words until TTR scores falls below a threshold, then increase factor counter by 1 and start over\n", "* (McCarthy 2005, McCarthy and Jarvis 2010)" ] }, { "cell_type": "code", "execution_count": 19, "id": "101b3af4", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.692707Z", "start_time": "2023-02-07T08:39:49.677704Z" } }, "outputs": [ { "data": { "text/plain": [ "46.79226361031519" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.mtld(\n", " # Factor threshold for MTLD. \n", " # Algorithm skips to a new segment when TTR goes below the threshold\n", " threshold=0.72 \n", ")" ] }, { "cell_type": "markdown", "id": "61acaf4c", "metadata": {}, "source": [ "### voc-D\n", "* Vocd score of lexical diversity derived from a series of TTR samplings and curve fittings\n", "* *Step 1*: Take 100 random samples of 35 words from the text. Compute the mean TTR from the 100 samples\n", "* *Step 2*: Repeat this procedure for samples of 36 words, 37 words, and so on, all the way to ntokens (recommended as 50 [default]). In each iteration, compute the TTR. Then get the mean TTR over the different number of tokens. So now we have an array of averaged TTR values for ntoken=35, ntoken=36,..., and so on until ntoken=50\n", "* *Step 3*: Find the best-fitting curve from the empirical function of TTR to word size (ntokens). The value of D that provides the best fit is the vocd score\n", "* *Step 4*: Repeat steps 1 to 3 for x number (default=3) of times before averaging D, which is the returned value" ] }, { "cell_type": "code", "execution_count": 20, "id": "401a10ea", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.800592Z", "start_time": "2023-02-07T08:39:49.693718Z" } }, "outputs": [ { "data": { "text/plain": [ "46.27679899103406" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.vocd(\n", " ntokens=50, # Maximum number for the token/word size in the random samplings\n", " within_sample=100, # Number of samples\n", " iterations=3, # Number of times to repeat steps 1 to 3 before averaging\n", " seed=42 # Seed for reproducibility\n", ")" ] }, { "cell_type": "code", "execution_count": 21, "id": "b824f9b4", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:49.909015Z", "start_time": "2023-02-07T08:39:49.801591Z" } }, "outputs": [ { "data": { "text/plain": [ "46.27679899103406" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.vocd()" ] }, { "cell_type": "markdown", "id": "9656493f", "metadata": {}, "source": [ "### voc-D plot utility\n", "* Utility to plot empirical voc-D curve and the best fitting line" ] }, { "cell_type": "code", "execution_count": 22, "id": "a3f90468", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:50.127031Z", "start_time": "2023-02-07T08:39:49.910015Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lex.vocd_fig(\n", " ntokens=50, # Maximum number for the token/word size in the random samplings\n", " within_sample=100, # Number of samples\n", " seed=42, # Seed for reproducibility\n", " savepath=\"images/vocd.png\",\n", ")" ] }, { "cell_type": "markdown", "id": "d2180b54", "metadata": {}, "source": [ "### HD-D\n", "* Hypergeometric distribution diversity (HD-D) score\n", "* (McCarthy and Jarvis 2007)" ] }, { "cell_type": "code", "execution_count": 23, "id": "368e8cc4", "metadata": { "ExecuteTime": { "end_time": "2023-02-07T08:39:50.143015Z", "start_time": "2023-02-07T08:39:50.128032Z" } }, "outputs": [ { "data": { "text/plain": [ "0.7468703323966486" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex.hdd(\n", " draws=42 # Number of random draws in the hypergeometric distribution\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "65c3b16e", "metadata": {}, "outputs": [], "source": [] } ], "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.9.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }