README.md 3.43 KB
Newer Older
Laurent Velez's avatar
Laurent Velez committed
# STF584

ETSI STF584 - oneM2M architecture for AI

This repository contains the source code of ETSI STF584 Use Case 3. It uses the OpenMTC middleware compliant with the 
 OneM2M standard.
 
It consists of a a Common Service Function (CSF) which was included in a Middle Node Common Service
 Entity (CSE) and two applications, one for generating data and another for receiving this data after having been
 processed by our CSF.


## Installation and startup

Run the [build.sh](build.sh) shell script, this will download OpenMTC source code from its repository, apply a fix for some files 
 which have since been affected by dependencies code changes, generate OpenMTC's docker images and, finally, remove the
 files previously downloaded as they are no longer necessary.

After having the docker images generated, just run the [docker compose](docker-compose.yml) with `docker-compose up -d` and both the gateway
 and the 2 applications will be running in the background, each in separate containers. The logs can be viewed with the
 following commands:
 * Gateway: `docker-compose logs -f gateway`
 * Device Application: `docker-compose logs -f device`
 * NLP Application: `docker-compose logs -f nlp`

## Common Service Function (CSF)

The CSF is included in the [clean_text_handler](clean_text_handler) directory, which is mapped in the docker-compose to the correct 
 location inside the gateway container. The main code is inside the [\_\_init\_\_.py](clean_text_handler/__init__.py) 
 file, while the [utils.py](clean_text_handler/utils.py) file
 contains helper functions for the text clean process.

The configuration file for the gateway is the [config_gateway.json](config-gateway.json) file. Please note the following
 data required to enable the new CSF:
 
```json
{
  ...,
  "plugins": {
    ...,
    "openmtc_cse": [,
      ...,
      {
        "name": "CleanTextHandler",
        "package": "openmtc_cse.plugins.clean_text_handler",
        "disabled": false,
        "config": {
          "labels_input": [
            "to_clean"
          ],
          "labels_output": [
            "cleaned"
          ],
          "stopwords_langs": [
            "english"
          ]
        }
      }
    ]
  }
}
```

## Applications

### Device Application

The device application code is present in the [device_ae.py](Device_AE/src/device_ae/device_ae.py) file. It starts by 
 attempting to load a [csv file](Device_AE/example.csv) with example messages and proceeds to register the necessary 
 resources for the application to run. The data source can easily be edited at will inside the `load_data` method
 and triggering of publishing data can be edited inside the `get_data` method.

The configuration file for this application is present [here](Device_AE/config.json).

### NLP Application

The NLP application code is present in the [nlp_ae.py](NLP_AE/src/nlp_ae/nlp_ae.py) file. The [models](NLP_AE/models)
 and [tokenizers](NLP_AE/tokenizers) folders contain the pre trained model for occurrence detections. The application
 starts by loading the model and then registers the necessary resources for it to run. The classification and output 
 when a message is received is present inside the `handle_processed_text` method.

The configuration file for this application is present [here](NLP_AE/config.json).

## Credits
Ubiwhere \
Dataset: The project was based on the dataset provided in the Kaggle competition [Real or Not? NLP with Disaster Tweets](https://www.kaggle.com/c/nlp-getting-started)