[![PyPI version](https://badge.fury.io/py/quaxa.svg)](https://badge.fury.io/py/quaxa)
[![PyPi downloads](https://img.shields.io/pypi/dm/quaxa)](https://img.shields.io/pypi/dm/quaxa)
[![DOI](https://zenodo.org/badge/667310199.svg)](https://zenodo.org/badge/latestdoi/667310199)
# QUAXA: QUAlity of sentence eXAmples scoring
Rule-based sentence scoring algorithm based on GDEX.
## Rules
### Formel
```
score = 0.5 * isnoknockout + 0.5 * gesamtfaktor
```
### Knock-out Kritieren
Wenn 1 Knock-out Kriterium identifiziert wird, dann wird direkt der Score direkt um 0.5 (von 1.0) gesenkt.
| Funktion | Ausgabe | Beschreibung | Hinweis |
|:---:|:---:|:---|:---|
| `has_finite_verb_and_subject` | bool | Der Satz hat ein finites Verb und ein Subjekt, wovon eines Root des Dependenzbaum ist oder via beide über Root Node verknüpft sind. | [1] GDEX whole sentence |
| `is_misparsed` | bool | Das 1. Zeichen des Strings ist kleingeschrieben, ein Leerzeichen oder eine Punktuation; oder das letzte Zeichen ist keine Punktuation. | [1] GDEX whole sentence |
| `has_illegal_chars` | bool | String enhält Kontrolzeichen (ASCII 0-31), oder die Zeichen `<>|[]/\^@'` (z.B. HTML Tags, Markdown Hyperlinks, Dateipfade, E-Mail, u.a.) | [1] GDEX illegal chars |
| `has_blacklist_words` | bool | Satzbeleg enthält Wörter, sodass in keinem Fall der Satzbeleg als Wörterbuchbeispiel in Betracht gezogen wird; ausgenommen das Blacklist-Wort ist selbt der Wörterbucheintrag. (dt. Blacklist ist voreingestellt) | [1] GDEX blacklist |
### Diskontierungsfakoren
Je Kriterium wird ein Faktor berechnet, und alle Faktoren miteinander multipliziert.
Wenn bspw. ein Faktor eine Penality von 0.1 bekommt, dann ist der Faktor 0.9.
Für den Gesamtscore wird der Gesamtfaktor mit 0.5 multipliziert.
| Funktion | Ausgabe | Beschreibung | Hinweis |
|:---:|:---:|:---|:---|
| `factor_rarechars` | [0.0, 1.0] | Strafe für jedes Zeichen, was `0123456789\'.,!?)(;:-` ist (Zahlen bzw. lange Zahlen; `.` für Abk.; mehrere Punktuationen; Bindestrichwörter, u.a.) | [1] GDEX rare chars |
| `factor_notkeyboardchar` | [0.0, 1.0] | Der Prozentsatz der Zeichen, die mit einem deutsche Tastaturlayout getippt werden können. | n.a. |
| `factor_graylist_words` | [0.0, 1.0] | Strafe Satzbelege ab, wenn Lemma auf einer Graylist steht; ausgenommen das Graylist-Wort ist selbt der Wörterbucheintrag. (Default: Keine Graylist voreingestellt) | [1] GDEX greylist |
| `factor_named_entity` | [1.0 - penalty, 1.0] | Strafe Satzbeleg ab, wenn Lemma ein o. Teil eines Eigennamen ist | [1] GDEX upper case (rare chars), [2] GBEX NE |
| `deixis_time` | [0.0, 1.0] | Strafe Signalwörter für Temporaldeixis ab. | [2] GBEX Dexis; [3] |
| `deixis_space` | [0.0, 1.0] | Strafe Signalwörter für Lokaldeixis ab. | [2] GBEX Dexis; [3] |
| `deixis_person` | [0.0, 1.0] | Strafe Wörter mit `UPOS=PRON` und `PronType=Prs|Dem|Ind|Neg|Tot` ab. Entspricht STTS PoS-Tags `PDS` (`PRON` + `Dem`, z.B, das, dies, die, diese, der), `PIS` (`PRON` + `Ind|Neg|Tot`, z.B, man, allem, nichts, alles, mehr), `PPER` (`PRON` + `Prs`, z.B, es, sie, er, wir, ich), `PPOSS` (`PRON` + `Prs`, z.B, ihren, Seinen, seinem, unsrigen, meiner). | [1] GDEX graylist PoS- Tags, [2] GBEX Dexis; [3], [4] |
| `optimal_interval` | [0.0, 1.0] | Strafe Satzbelege mit zu wenigen/vielen Wörter ab ab. | [1] GDEX |
Quellen:
- [1] Lexical Computing, "GDEX configuration introduction", URL: https://www.sketchengine.eu/syntax-of-gdex-configuration-files/
- [2] Didakowski, Lemnitzer, Geyken, 2012, "Automatic example sentence ex- traction for a contemporary German dictionary", URL: https://euralex.org/publications/automatic-example-sentence-extraction-for-a-contemporary-german-dictionary/
- [3] LingTermNet, URL: https://gsw.phil-fak.uni-duesseldorf.de/diskurslinguistik/index.php?title=Deiktischer_Ausdruck
- [4] Universial Dependency, UPOS-STTS conversion table, URL: https://universaldependencies.org/tagset-conversion/de-stts-uposf.html
## Appendix
### Installation
The `quaxa` [git repo](http://github.com/ulf1/quaxa) is available as [PyPi package](https://pypi.org/project/quaxa)
```sh
pip install quaxa
pip install git+ssh://git@github.com/ulf1/quaxa.git
```
### Install a virtual environment
```sh
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt --no-cache-dir
pip install -r requirements-dev.txt --no-cache-dir
```
(If your git repo is stored in a folder with whitespaces, then don't use the subfolder `.venv`. Use an absolute path without whitespaces.)
### Python commands
* Jupyter for the examples: `jupyter lab`
* Check syntax: `flake8 --ignore=F401 --exclude=$(grep -v '^#' .gitignore | xargs | sed -e 's/ /,/g')`
* Run Unit Tests: `PYTHONPATH=. python -m unittest`
Publish
```sh
python setup.py sdist
twine upload -r pypi dist/*
```
### Clean up
```sh
find . -type f -name "*.pyc" | xargs rm
find . -type d -name "__pycache__" | xargs rm -r
rm -r .pytest_cache
rm -r .venv
```
### Support
Please [open an issue](https://github.com/ulf1/quaxa/issues/new) for support.
### Contributing
Please contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits, and [open a pull request](https://github.com/ulf1/quaxa/compare/).
### Acknowledgements
The "Evidence" project was funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) - [433249742](https://gepris.dfg.de/gepris/projekt/433249742) (GU 798/27-1; GE 1119/11-1).
### Maintenance
- till 31.Aug.2023 (v0.1.0) the code repository was maintained within the DFG project [433249742](https://gepris.dfg.de/gepris/projekt/433249742)
- since 01.Sep.2023 (v0.1.0) the code repository is maintained by Ulf Hamster.
Raw data
{
"_id": null,
"home_page": "http://github.com/ulf1/quaxa",
"name": "quaxa",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Ulf Hamster",
"author_email": "554c46@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/5c/ed/bdd60e5ed3661a6eca0ba98b6ddbca654143d90162a3d1c5d33622bd481a/quaxa-0.1.1.tar.gz",
"platform": null,
"description": "[![PyPI version](https://badge.fury.io/py/quaxa.svg)](https://badge.fury.io/py/quaxa)\n[![PyPi downloads](https://img.shields.io/pypi/dm/quaxa)](https://img.shields.io/pypi/dm/quaxa)\n[![DOI](https://zenodo.org/badge/667310199.svg)](https://zenodo.org/badge/latestdoi/667310199)\n\n# QUAXA: QUAlity of sentence eXAmples scoring\nRule-based sentence scoring algorithm based on GDEX.\n\n\n## Rules\n\n### Formel\n\n```\nscore = 0.5 * isnoknockout + 0.5 * gesamtfaktor\n```\n\n### Knock-out Kritieren\nWenn 1 Knock-out Kriterium identifiziert wird, dann wird direkt der Score direkt um 0.5 (von 1.0) gesenkt.\n\n| Funktion | Ausgabe | Beschreibung | Hinweis |\n|:---:|:---:|:---|:---|\n| `has_finite_verb_and_subject` | bool | Der Satz hat ein finites Verb und ein Subjekt, wovon eines Root des Dependenzbaum ist oder via beide \u00fcber Root Node verkn\u00fcpft sind. | [1] GDEX whole sentence |\n| `is_misparsed` | bool | Das 1. Zeichen des Strings ist kleingeschrieben, ein Leerzeichen oder eine Punktuation; oder das letzte Zeichen ist keine Punktuation. | [1] GDEX whole sentence |\n| `has_illegal_chars` | bool | String enh\u00e4lt Kontrolzeichen (ASCII 0-31), oder die Zeichen `<>|[]/\\^@'` (z.B. HTML Tags, Markdown Hyperlinks, Dateipfade, E-Mail, u.a.) | [1] GDEX illegal chars |\n| `has_blacklist_words` | bool | Satzbeleg enth\u00e4lt W\u00f6rter, sodass in keinem Fall der Satzbeleg als W\u00f6rterbuchbeispiel in Betracht gezogen wird; ausgenommen das Blacklist-Wort ist selbt der W\u00f6rterbucheintrag. (dt. Blacklist ist voreingestellt) | [1] GDEX blacklist |\n\n### Diskontierungsfakoren\nJe Kriterium wird ein Faktor berechnet, und alle Faktoren miteinander multipliziert. \nWenn bspw. ein Faktor eine Penality von 0.1 bekommt, dann ist der Faktor 0.9.\nF\u00fcr den Gesamtscore wird der Gesamtfaktor mit 0.5 multipliziert.\n\n| Funktion | Ausgabe | Beschreibung | Hinweis |\n|:---:|:---:|:---|:---|\n| `factor_rarechars` | [0.0, 1.0] | Strafe f\u00fcr jedes Zeichen, was `0123456789\\'.,!?)(;:-` ist (Zahlen bzw. lange Zahlen; `.` f\u00fcr Abk.; mehrere Punktuationen; Bindestrichw\u00f6rter, u.a.) | [1] GDEX rare chars |\n| `factor_notkeyboardchar` | [0.0, 1.0] | Der Prozentsatz der Zeichen, die mit einem deutsche Tastaturlayout getippt werden k\u00f6nnen. | n.a. |\n| `factor_graylist_words` | [0.0, 1.0] | Strafe Satzbelege ab, wenn Lemma auf einer Graylist steht; ausgenommen das Graylist-Wort ist selbt der W\u00f6rterbucheintrag. (Default: Keine Graylist voreingestellt) | [1] GDEX greylist |\n| `factor_named_entity` | [1.0 - penalty, 1.0] | Strafe Satzbeleg ab, wenn Lemma ein o. Teil eines Eigennamen ist | [1] GDEX upper case (rare chars), [2] GBEX NE |\n| `deixis_time` | [0.0, 1.0] | Strafe Signalw\u00f6rter f\u00fcr Temporaldeixis ab. | [2] GBEX Dexis; [3] |\n| `deixis_space` | [0.0, 1.0] | Strafe Signalw\u00f6rter f\u00fcr Lokaldeixis ab. | [2] GBEX Dexis; [3] |\n| `deixis_person` | [0.0, 1.0] | Strafe W\u00f6rter mit `UPOS=PRON` und `PronType=Prs|Dem|Ind|Neg|Tot` ab. Entspricht STTS PoS-Tags `PDS` (`PRON` + `Dem`, z.B, das, dies, die, diese, der), `PIS` (`PRON` + `Ind|Neg|Tot`, z.B, man, allem, nichts, alles, mehr), `PPER` (`PRON` + `Prs`, z.B, es, sie, er, wir, ich), `PPOSS` (`PRON` + `Prs`, z.B, ihren, Seinen, seinem, unsrigen, meiner). | [1] GDEX graylist PoS- Tags, [2] GBEX Dexis; [3], [4] |\n| `optimal_interval` | [0.0, 1.0] | Strafe Satzbelege mit zu wenigen/vielen W\u00f6rter ab ab. | [1] GDEX |\n\n\nQuellen:\n- [1] Lexical Computing, \"GDEX configuration introduction\", URL: https://www.sketchengine.eu/syntax-of-gdex-configuration-files/\n- [2] Didakowski, Lemnitzer, Geyken, 2012, \"Automatic example sentence ex- traction for a contemporary German dictionary\", URL: https://euralex.org/publications/automatic-example-sentence-extraction-for-a-contemporary-german-dictionary/\n- [3] LingTermNet, URL: https://gsw.phil-fak.uni-duesseldorf.de/diskurslinguistik/index.php?title=Deiktischer_Ausdruck\n- [4] Universial Dependency, UPOS-STTS conversion table, URL: https://universaldependencies.org/tagset-conversion/de-stts-uposf.html\n\n\n## Appendix\n\n### Installation\nThe `quaxa` [git repo](http://github.com/ulf1/quaxa) is available as [PyPi package](https://pypi.org/project/quaxa)\n\n```sh\npip install quaxa\npip install git+ssh://git@github.com/ulf1/quaxa.git\n```\n\n### Install a virtual environment\n\n```sh\npython3 -m venv .venv\nsource .venv/bin/activate\npip install --upgrade pip\npip install -r requirements.txt --no-cache-dir\npip install -r requirements-dev.txt --no-cache-dir\n```\n\n(If your git repo is stored in a folder with whitespaces, then don't use the subfolder `.venv`. Use an absolute path without whitespaces.)\n\n### Python commands\n\n* Jupyter for the examples: `jupyter lab`\n* Check syntax: `flake8 --ignore=F401 --exclude=$(grep -v '^#' .gitignore | xargs | sed -e 's/ /,/g')`\n* Run Unit Tests: `PYTHONPATH=. python -m unittest`\n\nPublish\n\n```sh\npython setup.py sdist \ntwine upload -r pypi dist/*\n```\n\n### Clean up \n\n```sh\nfind . -type f -name \"*.pyc\" | xargs rm\nfind . -type d -name \"__pycache__\" | xargs rm -r\nrm -r .pytest_cache\nrm -r .venv\n```\n\n\n### Support\nPlease [open an issue](https://github.com/ulf1/quaxa/issues/new) for support.\n\n\n### Contributing\nPlease contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits, and [open a pull request](https://github.com/ulf1/quaxa/compare/).\n\n\n### Acknowledgements\nThe \"Evidence\" project was funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) - [433249742](https://gepris.dfg.de/gepris/projekt/433249742) (GU 798/27-1; GE 1119/11-1).\n\n### Maintenance\n- till 31.Aug.2023 (v0.1.0) the code repository was maintained within the DFG project [433249742](https://gepris.dfg.de/gepris/projekt/433249742)\n- since 01.Sep.2023 (v0.1.0) the code repository is maintained by Ulf Hamster.\n\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "QUAlity of sentence eXAmples scoring",
"version": "0.1.1",
"project_urls": {
"Homepage": "http://github.com/ulf1/quaxa"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5cedbdd60e5ed3661a6eca0ba98b6ddbca654143d90162a3d1c5d33622bd481a",
"md5": "977141f1fb20a8870c025c35b483d15a",
"sha256": "148152eedfa64821e4d0fcfe15fb68afa1983bc68704305fd1ca0b9d99ae55e1"
},
"downloads": -1,
"filename": "quaxa-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "977141f1fb20a8870c025c35b483d15a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 15564,
"upload_time": "2023-08-08T20:04:27",
"upload_time_iso_8601": "2023-08-08T20:04:27.254776Z",
"url": "https://files.pythonhosted.org/packages/5c/ed/bdd60e5ed3661a6eca0ba98b6ddbca654143d90162a3d1c5d33622bd481a/quaxa-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-08 20:04:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ulf1",
"github_project": "quaxa",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "quaxa"
}