pyrealb - A Python Bilingual Text Realizer
Version 2.3.8 - September 2023
pyrealb is a Python adaptation of the JavaScript jsRealB text realizer with the same constituent and dependency syntax notation. It facilitates its integration within Python applications by simply adding
from pyrealb import *
Installing the distribution package from PyPI
pip install pyrealb
Caution: do not forget the b
at the end of pyrealb
. On PyPI, there is an unrelated package pyreal
for evaluating and deploying human readable machine learning explanations.
Upgrading the version
pip install pyrealb --upgrade
Building and installing the package from the sources
-
cd
into this directory (withpyproject.toml
file) - Build the distribution package
python3 -m build
- Install with
python3 -m pip install .
First realization tests at the Python 3 prompt
from pyrealb import *
loadEn()
print(S(Pro("I").g("f"),VP(V("say"),"hello",PP(P("to"),NP(D("the"),N("world"))))))
- this should print
She says hello to the world.
print(root(V("say").t("ps"),subj(Pro("him").c("nom")),comp(N("goodbye"))).typ({"neg":True}))
- this should print
He did not say goodbye.
Use pyrealb in a Jupyter notebook thru Binder
- in a browser, load one of these links:
Directories
-
src
-
__init__.py
: empty program that imports subpackages and exports relevant symbols. -
Constituent.py
: Constituent is the top class for methods shared between Phrases and Terminals -
Lexicon.py
: class to access lexicon entries and syntactic rules -
Number.py
: utility functions for dealing with number formatting -
Phrase.py
: subclass of Constituent for creating complex phrases -
Dependent.py
: subclass of Constituent for creating complex phrases using dependencies -
Terminal.py
: subclass of Constituent for creating a single unit (most often a single word) -
util.py
: some useful functions -
Warning.py
: function to generate warnings in case of erroneous specifications using pyrealb itself -
data
:-
lexicon-en.json
: English lexicon (33,932 entries) in json format -
rule-en.js
: English conjugation and declension tables -
lexicon-fr.json
: French lexicon (52,547 entries) in json format -
rule-fr.js
: French conjugation and declension tables
-
-
Nota bene:
- In the following directories, the
__init__.py
file is used to set the appropriate search path for pyrealb functions; this ensures that the current Python source files are used for execution. - Some directories include
markup.py
which should be loaded usingpip
. Unfortunately I never managed to make this "piped" version work, it does not import the nameoneliner
although it should. It works once the file is in the local directory.
-
docs
: in both English and French.-
documentation.html
: generated documentation (used for consultation) DO NOT EDIT directly Online version -
documentation.py
: Python program for generatingdocumentation.html
usingmarkup.py
once this is rundocumentation.html
should be copied athttp://www.iro.umontreal.ca/~lapalme/pyrealb/documentation.html
which is used for consultation -
style.css
: style sheet for the documentation -
userinfos.py
: definitions of variables containing the examples -
user.js
: Python helper script.
-
-
IDE
: Integrated Development Environment-
ide.py
: built on the Python read-eval-print loop, it imports pyrealb to get the realization of an expression, to consult the lexicon, the conjugation and declension tables. It is also possible to get a lemmatization: i.e. the pyrealb expression corresponding to a form. -
README.html
: documentation and examples
-
-
tests
: unit tests of special features of pyrealb in both French and English. Files have the pattern*_{en|fr}.py
-
test.py
: simplistic function to check if a function returns the expected answer and display appropriate message -
testAll.html
: run this file to run all tests
-
Demos
-
99bottlesofbeer/99bottlesofbeer.py
: simple generation of a classic repetitive text in English. -
basketball/sportsettsum.py
: generation of French and English basketball summaries paper describing the approach -
Bilinguo/bilinguo.py
: generation of translation drill exercises -
dev_example/dev_example.py
: examples of English and French expressions to be realized and checked against expected output,
useful for debugging when adding a new expression and enabling tracing -
evenementsDemo/evenements.py
: Description (in French) of a list of events, it creates HTML. -
flight_infos/README.md
: development of a RASA NLG server giving information about flights, aircrafts, etc... -
gophypi/amr2text.py
: generate a literal reading of an AMR (Abstract Meaning Representation); paper describing the approach -
inflectionDemo/inflection.py
: French or English conjugation and declension of a form. -
kilometresapied/kilometresapied.py
: simple generation of a classic repetitive text in French. -
methodius/methodius.py
: generation of English sentences from a logical form expressed in XML. -
randomgen/randomgen.py
: Generation of random English sentences -
RDFpyrealb/WebGenerate.py
: Generation from RDF triples -
report/report.py
: Single sentence parameterized by language, tense and subject using two different program organization -
variantes/variantes.py
: French or English sentences realized with all possible sentence modifiers; some challenging examples are inexamples.py
. -
weather/Bulletin.py
: French and English weather bulletins generated from information in a json-line file. (weather-data.jsonl
). It uses the packages in theRealization
directory.
Licenses
pyrealb
source code is licensed under Apache-2.0 and the linguistic resources in the ./data
directory is
licensed under CC-BY-SA-4.0
Contact
Acknowledgement
Thanks to Fabrizio Gotti, François Lareau and Ludan Stoeckle for interesting suggestions.
For the maintainer mainly
Updating package version on PyPI
see this tutorial
These steps take for granted that the password for PyPI has already been given...
- Update version number in
setup.cfg
(it should be the same aspython_version
insrc/pyrealb/utils.py
and at the beginning of this document). - Run
docs/documentation.py
to update the version number indocs/documentation.html
3.cd
into the directory with thepyproject.toml
file (the same as thisREADME.md
) - Build the distribution package
python3 -m build
- Upload to PyPi the last version I.J.K
twine upload dist/*-I.J.K.*
- Install new version from PyPI
python3 -m pip install pyrealb --upgrade
Useful trick for debugging with breaking point and tracing in PyCharm
- add
pyrealb
expression to debug at the end ofdemo/dev_example/dev_example.py
- comment the line calling
testPreviousExamples()
- debug
demo/dev_example/dev_example.py