diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..b2f5601
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,27 @@
+name: Release Pypi package
+
+on:
+ release:
+ types: [created]
+ workflow_dispatch:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.x"
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install setuptools wheel twine
+ - name: Build and publish
+ env:
+ TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
+ TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
+ run: |
+ python setup.py sdist bdist_wheel
+ twine upload --repository pypi dist/*
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..e234a5a
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,32 @@
+name: Test Pypi package
+
+on:
+ push:
+ branches:
+ - main
+ paths-ignore:
+ - README.md
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ - README.md
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python: [3.10.11]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Setup Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python }}
+ - name: Install Tox and any other packages
+ run: pip install tox
+ - name: Run Tox
+ # Run tox using the version of Python in `PATH`
+ run: tox -e py
diff --git a/Burrows Delta Walkthrough.ipynb b/Burrows Delta Walkthrough.ipynb
new file mode 100644
index 0000000..cc083e8
--- /dev/null
+++ b/Burrows Delta Walkthrough.ipynb
@@ -0,0 +1,579 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Walkthrough for using the Fast Stylometry model for Burrows' Delta\n",
+ "\n",
+ "By [Thomas Wood](https://freelancedatascientist.net), [Fast Data Science](https://fastdatascience.com)\n",
+ "\n",
+ "Burrows' Delta is an algorithm for comparing the similarity of the writing styles of documents, known as [forensic stylometry](https://fastdatascience.com/how-you-can-identify-the-author-of-a-document/).\n",
+ "\n",
+ "* [A useful explanation of the maths and thinking behind Burrows' Delta and how it works](https://programminghistorian.org/en/lessons/introduction-to-stylometry-with-python#third-stylometric-test-john-burrows-delta-method-advanced)\n",
+ "\n",
+ "Demonstration of Burrows' Delta on a small corpus downloaded from Project Gutenberg.\n",
+ "\n",
+ "We will test the Burrows' Delta code on two \"unknown\" texts: Sense and Sensibility by Jane Austen, and Villette by Charlotte Bronte. Both authors are in our training corpus.\n",
+ "\n",
+ "This notebook demonstrates how to use the library to calculate the Burrows' Delta value of six candidate authors, and also to calculate the probability that each one is the author of the mystery text."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from faststylometry import Corpus\n",
+ "\n",
+ "from faststylometry import load_corpus_from_folder\n",
+ "from faststylometry import tokenise_remove_pronouns_en\n",
+ "from faststylometry import calculate_burrows_delta\n",
+ "from faststylometry import predict_proba, calibrate, get_calibration_curve"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "train_corpus = load_corpus_from_folder(\"faststylometry/data/train\")\n",
+ "\n",
+ "train_corpus.tokenise(tokenise_remove_pronouns_en)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Load two books by \"unknown\" authors to test the algorithm"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Load Sense and Sensibility, written by Jane Austen (marked as \"janedoe\")\n",
+ "# and Villette, written by Charlotte Bronte (marked as \"currerbell\", Bronte's real pseudonym)\n",
+ "\n",
+ "test_corpus = load_corpus_from_folder(\"faststylometry/data/test\", pattern=None)\n",
+ "# You can set pattern to a string value to just load a subset of the corpus.\n",
+ "\n",
+ "test_corpus.tokenise(tokenise_remove_pronouns_en)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Calculate Burrows' Delta for both candidate authors"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " currerbell - villette | \n",
+ " janedoe - sense_and_sensibility | \n",
+ "
\n",
+ " \n",
+ " author | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " austen | \n",
+ " 0.997936 | \n",
+ " 0.444582 | \n",
+ "
\n",
+ " \n",
+ " bronte | \n",
+ " 0.521358 | \n",
+ " 0.933160 | \n",
+ "
\n",
+ " \n",
+ " carroll | \n",
+ " 1.116466 | \n",
+ " 1.433247 | \n",
+ "
\n",
+ " \n",
+ " conan_doyle | \n",
+ " 0.867025 | \n",
+ " 1.094766 | \n",
+ "
\n",
+ " \n",
+ " dickens | \n",
+ " 0.800223 | \n",
+ " 1.050542 | \n",
+ "
\n",
+ " \n",
+ " swift | \n",
+ " 1.480868 | \n",
+ " 1.565499 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " currerbell - villette janedoe - sense_and_sensibility\n",
+ "author \n",
+ "austen 0.997936 0.444582\n",
+ "bronte 0.521358 0.933160\n",
+ "carroll 1.116466 1.433247\n",
+ "conan_doyle 0.867025 1.094766\n",
+ "dickens 0.800223 1.050542\n",
+ "swift 1.480868 1.565499"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "calculate_burrows_delta(train_corpus, test_corpus, vocab_size = 50)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Calibrate the model and calculate the probability of each candidate in the training set being the author"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "calibrate(train_corpus)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " currerbell - villette | \n",
+ " janedoe - sense_and_sensibility | \n",
+ "
\n",
+ " \n",
+ " author | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " austen | \n",
+ " 0.324233 | \n",
+ " 0.808401 | \n",
+ "
\n",
+ " \n",
+ " bronte | \n",
+ " 0.757315 | \n",
+ " 0.382278 | \n",
+ "
\n",
+ " \n",
+ " carroll | \n",
+ " 0.231463 | \n",
+ " 0.079831 | \n",
+ "
\n",
+ " \n",
+ " conan_doyle | \n",
+ " 0.445207 | \n",
+ " 0.246974 | \n",
+ "
\n",
+ " \n",
+ " dickens | \n",
+ " 0.510598 | \n",
+ " 0.280685 | \n",
+ "
\n",
+ " \n",
+ " swift | \n",
+ " 0.067123 | \n",
+ " 0.049068 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " currerbell - villette janedoe - sense_and_sensibility\n",
+ "author \n",
+ "austen 0.324233 0.808401\n",
+ "bronte 0.757315 0.382278\n",
+ "carroll 0.231463 0.079831\n",
+ "conan_doyle 0.445207 0.246974\n",
+ "dickens 0.510598 0.280685\n",
+ "swift 0.067123 0.049068"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "predict_proba(train_corpus, test_corpus)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Plot the calibration curve\n",
+ "\n",
+ "We have used Scikit Learn's Logistic Regression to calculate the calibration curve of the model. You could also use your own calibration curve."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "x_values = np.arange(0, 3, 0.1)\n",
+ "\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "''"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "