Given a free form vet appointment reason we extract symptoms, diseases and requested services.
Input: | A short text giving the appointment reason |
Output: | Any symptoms, diseases or required vet services that can be inferred from the text |
Goal: | Extract structured data from appointment reasons |
Our client, felmo, offers vet appointments at home for cats and dogs across Germany. In order to book an appointment online, customers can input a short text as an appointment reason.
The goal of the project was to extract all symptoms, diseases and requested services from the appointment reasons.
To help train our model, felmo provided us with a dataset of thousands of appointments and their appointment reasons, each labeled with up to 10 symptoms, diseases or services which veterinarians had inferred from the text beforehand.
One of the most challenging aspects was that there were more than 500 symptoms, diseases and services to be distinguished and many symptoms had only subtle differences.
Another challenging aspect was the variation in style of writing. Most users gave a list of symptoms they observed. Some also provided speculations on what might be the underlying cause or also listed which symptoms of which they were certain their pet doesn’t have. Others wrote whole sentences describing their pets behavior over the last couple of days.
As a first step we wrote a simple algorithm which was able to find exact or almost exact (to account for typos) matches of the symptoms, services and diseases. This already worked pretty well when users provided a list of single words or short expressions.
To be able to handle speculations, negations and more descriptive sentences we used a pre-trained language model (a model trained on a large publicly available dataset to get some general language understanding), which we then fine-tuned on felmo’s data. We also worked together with felmo to improve the dataset, which ultimately led to an improvement in the models predictions.
This new model had as good accuracy on the list-like user inputs as our initial algorithm, but was now also able to recognize negations or infer symptoms from longer descriptions.
In the month-long proof of concept project we were able to:
show that a deep neural network could outperform algorithms using regular expressions on this task
already present a model which was delivering production-ready results
Now being able to extract the essential information from the appointment reasons, felmo can combine this with their experience and expertise to improve their processes saving their vets precious time!
A selection of projects we have done
Our algorithm helps citizens through the bureaucracy of registering a business.
Different methods from the field of NLP helped us to create software that spots errors in rental contracts.
Automatically extract numerical attributes from product descriptions in order to enrich the existing database.
Creative solutions enabled us to automate the process of planning solar systems.