Metrical scansion for Spanish verses
Project description
LibEscansión
libEscansión
A Python library for for metrical scansion of mixed Spanish verses
libEscansión is a state-of-the-art Python library for analysing Spanish mixed verses. It parses the verse to find syllabic nuclei, rhythmic pattern, assonance, and consonance, as well as to provide a phonological transcription of the syllables. It scores 98.64% accuracy against the manually annotated corpus [ADSO 100] with the option adso=True, which forces considering interjections as non-stressed to meet ADSO's annotation criteria. This tops the until-now state-of-the-art. Nevertheless, vanilla scansion – i.e., stressing interjections – still outperforms the state-of-the art, achieving 97.01% accuracy. Furthermore, after evaluating the corpus' manual scansion and spelling, we found that the disagreement was in most cases due to an improper spelling or even to non-standard human analysis (unstressed interjections, adverbd in -mente lacking secondary stress, etc.). With a corrected corpus, the agreement reaches 99.13 %, being the resting 0.87% non-erroneus disagreements.
This library is part of the research project Sound and Meaning in Spanish Golden Age Literature. It was created as a means to generate a corpus of parsed metres, which is publicicily accessible here
Installation
pip install libEscansion
Requeriments
Following libraries are required:
- stanza >= 1.7 with Spanish language models
- fonemas >= 2.0.18
- silabeador >= 1.1.11.post6
Usage example
The library provides the class VerseMetre. It accepts an obligatory string for the verse and an optional list of integers with possibles syllable-counts. If a second argment is not provided, it performs a regular scansion, i.e., with all natural dialoephas.
>>> import libEscansion
>>> verse = verse = libscansion.VerseMetre('Cerrar podrá mis ojos la postrera ', [11,8,7])
>>> verse.count
11
>>> verse.syllables
['θe', 'rAɾ', 'po', 'dɾA', 'mis', 'O', 'xos', 'la', 'pos', 'tɾE', 'ɾa']
>>> verse.nuclei
'eAoAiOoaoEa'
>>> verse.rhyme
'eɾa'
>>> verse.asson
'ea'
>>> verse.rhythm
'-+-+-+---+-'
The directory 'utils' contains a file that can be used to test the library against ADSO 100 (or any other corpus of sonnets whasoever as long as they are encoded as XML-TEI with their metres are annotated). In the same directory containing the XML files, type:
./adso100test.py *xml
Release History
1.1.0 (02/09/2024)
- Optimisation and documentation with AI
1.0.0 (24/07/2023)
- First public version
1.0.0pre5 (5/07/2023)
- Solved bug with fewer syllables than expected
1.0.0pre4 (20/06/2023)
- Rules diphthong vs perception for triphthong
1.0.0pre2 (17/04/2023)
- Solved diaereses identification issue
1.0.0pre1
- Initial arrangement of the directory tree, metadata, &c. to make the mess more presentable in public
How to cite libEscansión
Authors of scientific papers including results generated using libEscansión are encouraged to cite the following paper.
@article{SanzLazaroF_DHQ2024183,
author = {Sanz-Lázaro, Fernando},
title = {libEscansión: A Recursive Precedence Approach to Metrical Scansion},
volume = {18},
number = {3},
date = {2024},
journal = {Digital Humanities Quarterly},
url = {[https://doi.org/10.5944/rhd.vol.8.2023.37830](https://digitalhumanities.org/dhq/vol/18/3/000739/000739.html)}
}
Meta
Copyright 2023 Fernando Sanz-Lázaro – @FerdlSanz – fsanzl@gmail.com
Distributed under the LGPL 2.1 license. See LICENSE
for more information.
https://github.com/fsanzl/libEscansion
Contributing
- Fork it (https://github.com/fsanzl/libEscansion/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
Copyright
Copyright (C) 2023 Fernando Sanz-Lázaro <fsanzl@gmail.com>
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library. If not, see <https://www.gnu.org/licenses/>.
References
ADSO 100: Navarro-Colorado, Borja; Ribes Lafoz, María, and Sánchez, Noelia (2015) "Metrical annotation of a large corpus of Spanish sonnets: representation, scansion and evaluation" 10th edition of the Language Resources and Evaluation Conference 2016 Portorož, Slovenia. (PDF)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file libescansion-1.1.0.tar.gz
.
File metadata
- Download URL: libescansion-1.1.0.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3d35defffb7709725e308f76616e96c6b93c9c50ff444d4562b4631162f9904 |
|
MD5 | de45c6df5f8691ce992310c518468606 |
|
BLAKE2b-256 | 822c635bf12981e0adde6e9eab2766dff52912c23773a719c1d27e04b415cb85 |
File details
Details for the file libEscansion-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: libEscansion-1.1.0-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c290763804d1a4eff7ec91468f33415a4abf4d633c3cb88de58ceed071b1756 |
|
MD5 | 00de13927ac4daf85ec800d272b43aa6 |
|
BLAKE2b-256 | ff86baa02f75e81a928c06fb39c13fec507b795529e28f349a8b699c6bd99bca |