-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
removed doc, example, and change name since risc is used on pypi
- Loading branch information
1 parent
acd9792
commit 49ca164
Showing
176 changed files
with
223 additions
and
190 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,4 +23,4 @@ jobs: | |
pip install -e . | ||
- name: PyLint | ||
run: | | ||
pylint risc/ tests/ examples/ | ||
pylint risc/ tests/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -132,4 +132,4 @@ dmypy.json | |
.idea | ||
/datastore | ||
|
||
risc/version.py | ||
risc_generator/version.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,128 @@ | ||
"RISC, an open-source Python package data generator. RISC generates look-alike automobile " | ||
"insurance contracts based on the Quebec regulatory insurance form in French and English." | ||
<div align="center"> | ||
|
||
does not work in 3.11 due to SciPy | ||
> > En Python 3.9 | ||
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/risc_generator)](https://pypi.org/project/RISCgen) | ||
[![PyPI Status](https://badge.fury.io/py/risc_generator.svg)](https://badge.fury.io/py/risc) | ||
[![PyPI Status](https://pepy.tech/badge/risc_generator)](https://pepy.tech/project/risc) | ||
[![Downloads](https://pepy.tech/badge/risc_generator/month)](https://pepy.tech/project/risc) | ||
|
||
[![Formatting](https://github.com/GRAAL-Research/risc/actions/workflows/formatting.yml/badge.svg?branch=stable)](https://github.com/GRAAL-Research/risc/actions/workflows/formatting.yml) | ||
[![Linting](https://github.com/GRAAL-Research/risc/actions/workflows/linting.yml/badge.svg?branch=stable)](https://github.com/GRAAL-Research/risc/actions/workflows/linting.yml) | ||
[![Tests](https://github.com/GRAAL-Research/risc/actions/workflows/tests.yml/badge.svg?branch=stable)](https://github.com/GRAAL-Research/risc/actions/workflows/tests.yml) | ||
|
||
- Juste nouvelle affaires | ||
- Pas de multiproduit | ||
- Contrat de 12 mois | ||
[![codecov](https://codecov.io/gh/GRAAL-Research/risc/branch/main/graph/badge.svg)](https://codecov.io/gh/GRAAL-Research/risc) | ||
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/62464699ff0740d0b8064227c4274b98)](https://www.codacy.com/gh/GRAAL-Research/risc/dashboard?utm_source=github.com&utm_medium=referral&utm_content=GRAAL-Research/risc&utm_campaign=Badge_Grade) | ||
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a> | ||
|
||
We have automatically/manually extracted the text of AMF contract. | ||
We have removed the contract margin text (the insurance company logo on the left and the FPQ 1 policy number of type of policy). | ||
We have cleaned remove all page reference as <PAGE_NUMBER>. | ||
The text does not include page number. | ||
[![pr welcome](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?)](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?) | ||
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](http://www.gnu.org/licenses/lgpl-3.0) | ||
</div> | ||
|
||
The simulated contract are new customer. Ca | ||
## Here is RISC. | ||
|
||
V1: | ||
- Contrat juste avec un véhicule et un assuré | ||
RISC is an open-source Python package data generator. It generates look-alike automobile insurance contracts based on | ||
the Quebec regulatory insurance form in French and English. | ||
|
||
V2: | ||
- Contract avec plus d'un véhicule et un assuré | ||
Use RISC to generate look-a-like Quebec Car insurance forms (FPQ1) both in French and English. RISC simulation is | ||
deterministic; thus, it can generate an aligned insurance contract (i.e. same driver data) using an initial seed. | ||
RISC uses a pretrained TVAE model on a private dataset to generate look-a-like car protections. | ||
See our [article here]() for more detail about RISC implementation and generated dataset specification. | ||
|
||
RISC was written in Python 3.9 and is compatible with the __latest version of PyTorch__ and | ||
__Python >= 3.8__ (**SciPy seems difficult to build on Python 3.11. Thus, we don't support Python 3.11 for now). | ||
|
||
## Getting Started: | ||
|
||
```python | ||
from risc_generator import TVAEFPQ1ContractFaker | ||
|
||
seed = 42 | ||
n = 10 | ||
|
||
# Let's sample 10 insurance English insurance contracts (default configuration). | ||
en_fpq1_synthetic_dataset = TVAEFPQ1ContractFaker(seed=seed).sample_contracts(number_sample=n) | ||
|
||
# Now, let's do it for French contracts. | ||
fr_fpq1_synthetic_dataset = TVAEFPQ1ContractFaker(language="fr", seed=seed).sample_contracts(number_sample=n) | ||
|
||
# Since we have used the same seed, both datasets share the same insuree information. | ||
|
||
# Use our own TVAE model: | ||
fpq1_synthetic_dataset = TVAEFPQ1ContractFaker(tvae_synthetic_data_faker_model_path="a_path_to_a_tvae_.pkl", | ||
language="fr", seed=seed).sample_contracts(number_sample=n) | ||
|
||
# You can also create a new FPQ1ContractFaker using another type of model using our interface. | ||
|
||
from risc_generator import FPQ1ContractFaker, ProtectionsFaker | ||
|
||
|
||
class RuleBaseFPQ1ContractFaker(FPQ1ContractFaker): | ||
def __init__(self, language: str = "en", seed: int = 42): | ||
protection_faker = ProtectionsFaker( | ||
model=ARuleBaseProtectionFaker() | ||
) | ||
super().__init__(protection_faker, language, seed=seed) | ||
``` | ||
|
||
|
||
|
||
|
||
------------------ | ||
|
||
## Installation | ||
|
||
Before installing RISC, you must have your environment's latest version of [PyTorch](https://pytorch.org/). | ||
|
||
- **Install the stable version of RISC:** | ||
|
||
```sh | ||
pip install risc_generator | ||
``` | ||
|
||
- **Install the latest development version of RISC:** | ||
|
||
```sh | ||
pip install -U git+https://github.com/GRAAL-Research/risc.git@dev | ||
``` | ||
|
||
------------------ | ||
|
||
## Cite | ||
|
||
Use the following for the article; | ||
|
||
``` | ||
@misc{beaucheminrisc, | ||
title={{RISC: Generating Realistic Synthetic Bilingual Insurance | ||
Contract}}, | ||
author={David Beauchemin and Richard Khoury}, | ||
year={2023}, | ||
eprint={}, | ||
archivePrefix={arXiv} | ||
} | ||
``` | ||
|
||
and this one for the package; | ||
|
||
``` | ||
@misc{risc, | ||
author = {David Beauchemin}, | ||
title = {{RISC: an open-source Python package data generator to generate look-alike automobile insurance contracts based on the Quebec regulatory insurance form in French and English}}, | ||
year = {2023}, | ||
note = {\url{https://github.com/GRAAL-Research/risc}} | ||
} | ||
``` | ||
|
||
------------------ | ||
|
||
## Contributing to RISC | ||
|
||
We welcome user input, whether it regards bugs found in the library or feature propositions! Make sure to have a | ||
look at our [contributing guidelines](https://github.com/GRAAL-Research/risc/blob/main/.github/CONTRIBUTING.md) | ||
for more details on this matter. | ||
|
||
## License | ||
|
||
RISC is LGPLv3 licensed, as found in | ||
the [LICENSE file](https://github.com/GRAAL-Research/risc/blob/main/LICENSE). | ||
|
||
------------------ |
This file was deleted.
Oops, something went wrong.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
32 changes: 32 additions & 0 deletions
32
risc_generator/faker/contract_faker/tvae_synthetic_fpq1_faker.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import os | ||
from typing import Union | ||
|
||
from ...faker.contract_faker.contract_faker import FPQ1ContractFaker | ||
from ...faker.protections_faker.protections_faker import ProtectionsFaker | ||
from ...model.tvae_synthetic_protections_model_wrapper import TVAESyntheticProtectionsModelWrapper | ||
|
||
|
||
class TVAEFPQ1ContractFaker(FPQ1ContractFaker): | ||
def __init__( | ||
self, tvae_synthetic_data_faker_model_path: Union[None, str] = None, language: str = "en", seed: int = 42 | ||
) -> None: | ||
""" | ||
A FPQ1 contract faker using a TVAE synthetic protections model to generate synthetic protections using CPU. | ||
tvae_synthetic_data_faker_model_path (str): Path to a TVAE model (see `here | ||
<https://docs.sdv.dev/sdv/single-table-data/modeling/synthesizers/tvaesynthesizer>`_ | ||
for details on TVAE model) if you want to use your. If None, we will | ||
use our pre-trained model trained on a private dataset of a Canadian insurance company. By default, | ||
`"None"`. | ||
language (str): Either `'french'` (or `'fr'`) or `'english'` (or `'en'`). By default, `"en"`. | ||
seed (int): The seed value to use for the generation seed. By default, 42. | ||
""" | ||
if tvae_synthetic_data_faker_model_path is None: | ||
tvae_synthetic_data_faker_model_path = ( | ||
os.path.join(os.path.dirname(__file__), '../../resources', "tvae_model_q1_2023.pkl"), | ||
) | ||
protection_faker = ProtectionsFaker( | ||
model=TVAESyntheticProtectionsModelWrapper(tvae_synthetic_data_faker_model_path) | ||
) | ||
super().__init__(protection_faker, language, seed=seed) |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
tests/domain/contract/declaration/test_declaration_divulgation.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.