From KDE Community Wiki
< GSoC‎ | 2020‎ | StatusReports

Project Overview

marK is a machine learning dataset annotation tool being developed that will help users annotate multiple types of data for training in supervised classification problems. The objective of the project is to add text annotation support and refactor the codebase to separate image annotation logic from the core of marK, making its codebase more extensible and easy to add new annotation types.

Mentor: Caio Jordão Carvalho


  • Refactor marK codebase, separating the image annotation logic from the core
    • Status: Done
  • Text Annotation support
    • Status: Done (still need to be merged)

Work Report

Community Bonding Period

I took advantage of this phrase to study how tools of text annotation work to later apply the positive points that I found and correct, and improve, the ones that I didn't like. Text annotation has a bunch of fields, each one meant to a different objective/niche: phrase chunking, named entity recognition (NER), named entity linking (NEL) and so the list goes. For more explanation about this please see my blog post about text annotation.

I also deepened my knowledge, studying coding techniques, best practices, and how to make code more efficient and improve readability.

blog posts:

community bonding introduction

a bit about text annotation

Coding Period - First evaluation

Merge Request: !2

During this coding period, I was focused on refactoring the code and fix bugs. The main branch, which was fairly behind, received the latest changes. These changes include OOP logic that is used in many parts of the code, such as saving, reading, and general handling of different types of annotation. Another big change worth mentioning is that the core was separated from the image annotation, now it is used a different approach where there is one container that switches between painters, classes that load, and annotate, the data for each type of annotation.

For more details about what changed and the current structure of marK, see the posts of weeks 1, 2, 3, 4, and 5.

blog posts:

week 1, 2 and 3

week 4 and 5

Coding Period - Second evaluation

This phrase was quite challenging as I have never done something like this before, this has made me learn a lot. The initial support to text annotation, although there are some bugs needed to be fixed, is already working and it is possible to annotate text documents to, for example, Named Entity Recognition and Phrase Chunking annotation. Mouse click and drag, currently, are also supported for both, text and image annotation, making the user experience better.

Also, it is worth mentioning a change in the original plan, I was planning to use KTextEdit but to focus on the logic in this period, currently, the code is using QTextEdit.

Blog post: week 6, 7 and 8

example of Named Entity Recognition:


I also made a short video of the initial text annotation support:

<embedvideo service="youtube"></embedvideo>

Coding Period - Third evaluation

Merge Request: !4

This period was focused on the review and improvement of the code, bugs fixes related to the new painters structure (see week 4 and 5), use KDE Frameworks 5 and I also added some functionalities like support for double click on the TextPainter.

For more details about what changed/improved, see the posts of weeks 9, 10, 11 and 12.

Blog posts:

week 9, 10 and 11

week 12

Double click demonstration:


I also made another short video presenting the functionalities that marK have near the end of this GSoC:

<embedvideo service="youtube"></embedvideo>


Important Links

You can see my proposal here. For posts of GSoC 2020, check my blog.

About me

Name: Jean Lima Andrade

Invent id: jyeno

IRC Nick: jyeno

Telegram Nick: jyeno