Apertium has moved from SourceForge to GitHub.
If you have any questions, please come and talk to us on #apertium on irc.freenode.net or contact the GitHub migration team.

Web Dictionary Maintenance

From Apertium
(Difference between revisions)
Jump to: navigation, search
(Example of Iteraction)
(First Experiments)
Line 294: Line 294:
 
[[File:WebPrototype-1.jpg|thumb|500px|left|Example]]
 
[[File:WebPrototype-1.jpg|thumb|500px|left|Example]]
 
[[File:WebPrototype-2.jpg|thumb|500px|right|Example]]
 
[[File:WebPrototype-2.jpg|thumb|500px|right|Example]]
  +
  +
  +
[[Category:GSoC 2019 student proposals|Alessio]]

Revision as of 10:46, 21 March 2019

Contents

Translate to PT-BR with Google Tradução

Introduction

Apertium over the years still has deficiencies so that lay people can contribute to increase the base of words in dictionaries, even with simple contributions. Collaboration is the key to developing a tool that serves a huge range of users throughout the world. We believe that it is possible to engage more users and thus give greater impact to the tool within the communities where there is involvement. We will deal in this document with requirements on non-functional and technical objectives regarding the tool proposal. O Apertium com o passar dos anos ainda apresenta deficiências para que pessoas leigas possam contribuir para o aumento da base de palavras em dicionários, mesmo que com contribuições simples. A colaboração é a chave para o desenvolvimento de uma ferramenta que serve a uma gama enorme de usuários ao longo do mundo. Acreditamos que é possível engajar mais usuários e com isso dar maior impacto da ferramenta dentro das comunidades em que existe envolvimento. Trataremos neste documento sobre requisitos sobre objetivos não funcionais e técnicos sobre a proposta de ferramenta.

Original Ideias
http://wiki.apertium.org/wiki/Ideas_for_Google_Summer_of_Code
http://wiki.apertium.org/wiki/Ideas_for_Google_Summer_of_Code/Easy_dictionary_maintenance
Original GSOC2019 Application
http://wiki.apertium.org/wiki/User:Alessiojr/Easy_dictionary_-_Application-GSOC2019
Studant Information
Student: Vinícius Silva Nogueira
Unofficial Mentor: Alessio Miranda Junior
Telegram/Whatsapp: Alessio: +55 (31) 9.8888-7770
E-mail: alessio@cefetmg.br or viniciussnogueira13@gmail.com
IRC: AlessioJr
GTalk: alessiojunin@gmail.com

Description

Abstract:

The dictionaries complexity and size makes its modification extremely hard and time-consuming, and, along with the need for programming knowledge, keeps away potential contributors. A tool that facilitates the work of dictionaries developers, eliminate computer knowledge (XML, Git, etc) and that allows collaboration between members of the community is of extreme necessity because, with the removal of these barriers, a larger group of people will have the necessary requirements to participate in the development of dictionaries, thus increasing the translation capacity of Apertium.

Even with several tools that help the way you manage and create dictionaries, Apertium is far from the normal users, who have a huge contribution potential. Or even create a simple way to create contributions to recurring users with advanced knowledge. Although it is a bold plan, and there are several possible and desirable requirements, we will describe some basic premises for this step and that must be respected and aligned with the apertium developer community.

A complexidade e o tamanho de um dicionário tornam extremamente difícil a sua modificação, e, juntamente com a necessidade de conhecimento em programação, acaba afastando possíveis contribuidores. Uma ferramenta que facilite o trabalho dos desenvolvedores de dicionários, elimine a necessidade de conhecimento em computação (XML, Git, etc.) e que permita uma colaboração entre os membros da comunidade é de extrema necessidade pois, com a remoção dessas barreiras, um grupo maior de pessoas terá os requisitos necessários para participarem do desenvolvimento de dicionários, aumentando, consequentemente, a capacidade de tradução do Apertium. Mesmo com várias ferramentas que auxiliam a forma de gerir e criar dicionários ainda o apertium se mostra distante dos usuários normais que tem um enorme potencial de contribuição. Ou mesmo criar uma forma simples de criar contribuições para usuários recorrentes com conhecimento avançado. Apesar de ser um plano ousado, e existirem vários requisitos possíveis e desejáveis, vamos descrever algumas premisas básicas para este etapa e que devem ser respeitadas e devem estar alinhadas com a comunidade de desenvolvedores apertium.

Definitions

  • Lay users do not need to know Apertium's internal structure,
  • Intermediate users need to have a knowledge of dictionary management methodology
  • Advanced users are those who know the structure of Apertium.
  • Communities are user groups that merge characteristics to the database extension of a dictionary of a specific language.
  • Official dictionaries are dictionaries managed and with seal of the apertium community.
  • Unofficial dictionaries are dictionaries run by an independent community
  • Test dictionaries are deprived of users to test their contributions

Objectives:

  • The major goal of the project is to develop a web tool to facilitate the management of the Apertium (XML's) database of integrators for novice and advanced users. O Objetivo maior do projeto é desenvolver uma ferramenta da Web para facilitar a gestão da base de dados dos discionários Apertium (XML's) integrando usuários iniciantes e avançados.
  • New communities of contributions should be able to organize independently of a central command. The command exists but will be distributed. Novas comunidades de contribuições devem poder se organizar independente de um comando central. O comando existe mas será distribuído.
  • Lay users who feel motivated to contribute, should have an interface that promotes ease in contributing even with limited possibilities.Ususários leigos que se sintam motivados para contribuir, deve ter uma interface que promova a facilidade em contribuir mesmo que com possibilidades limitadas.

  • The development of dictionaries should be collaborative and distributed. Each dictionary should have a management community, but a user may have the freedom to disagree and create a new version maintaining a history of the author. O desenvolvimento de dicionários deve ser colaborativo e distribuído. Cada dicionário deve ter uma comunidade que faz a gestão, mas um usuário pode ter a liberdade de discordar e criar uma nova versão mantendo um histórico do autor.
  • Any tool should maintain the traditional apertium structure and not be interoperable between existing tools. Qualquer ferramenta deve manter a estrutura tradicional do apertium e não ser interoperãvel entre as ferramentas já existentes.
  • There must be a methodology for communities to maintain the quality of their dictionaries. Although they are distributed the goal is to create a unified and mature dictionary. Deve haver uma metodologia para que as comunidades possam manter a qualidade de seus dicionários. Embora eles sejam distribuídos o objetivo é criar um dicionário unificado e maduro.
  • -- --

Technical Objectives:

  • Develop, initially, monolingual dictionaries but keeping the particular format of each file.
  • Minimize the direct manipulation of XML files, providing features that reduce this need.
  • Making use of DixTools to keep code reuse.
  • Evitar a manipulação direta de arquivos XML, facilitando o trabalho dos desenvolvedores de dicionários e consequentemente aumentando sua produtividade;
  • Permitir que usuários leigos em programação possam contribuir com o desenvolvimento e manutenção dos dicionários;
  • Facilitar a colaboração entre membros da comunidade no desenvolvimento dos dicionários.
  • --.


Git, GitLab and Appertium

(thumbnail)
Git Flow demonstration

As the Apertium files are textual, we had the idea of seeking productivity and using existing and consolidated tools in the world. The proposal is to build a friendly web interface for lay users, but use git's own Back-End as version control and to make dictionary management GitLab as an administrative tool that already guarantees incredible power for remote collaboration. Como os arquivos do Apertium são de base textual, tivemos a ideai de buscar produtividade e usar ferramentas já existentes e consolidadas no mundo. A proposta é construir uma interface web amigável para usuários leigos, mas usar como Back-End o próprio git como controle de versãoe para fazer a gestão de dicionários o GitLab como ferramenta administrativa que já garante poder incrível para colaboração remota.

To demonstrate this relationship we will highlight some concepts of Git. Over time there may be several TimeLines:

  • The Official Branch (Master) has the official version of the apertium managed by official developers or maintainers.
  • Users have the power to create new Branches and develop unofficial dictionaries in parallel, creating communities that may from time to time suggest modifications to Brach Master.
  • These requests can be accepted or rejected by maintainers, and this format is recursive and other developers can create unofficial copies of unofficial ones.
  • Integration requests will use the Merge Request concepts present in tools such as GitLab that will be the BackEng for advanced users.
  • All dictionaries releases will be in a single repository and available to any member of the community to continue the work.
  • Each user will have your own branch to work on, which also will be available to the entire community to contribute to it.
  • The users will be able to make merge requests with other branches (official or unofficial).
  • At first, we will use GitLab to manage this merges requests. The team who maintain each dictionary will judge if the modifications are valids or not.

Application-GSOC2019

Abstract:

   The idea is to develop the Web tool so that lay users contribute to dictionaries and use Git management with GitLab to manage these changes.
   * The focus will be on monolingual dictionaries and bilingual direct relationships.
   * Use the GIT methodology and propose a guideline or flow for collaborative dictionary management.
   * Do not change the current XML format of dictionaries.

Why is it you are interested in machine translation?

   During the graduation course, Professor Aléssio demonstrated the need and opportunity to contribute with open projects. 
   He introduced me to Apertium and in my final graduation work I started reading and talking about it. 
   We started discussing techniques for managing collaboration with the community and currently do not have 
   as much knowledge about machine translation machines but I have experience in developing applications 
   and web using collaboration with GIT and GitLab.

Why are they interested in the Apertium project?

   I’ve .

Which of the published tasks are you interested in?

   Easy.

Why should Google and Apertium sponsor it?

   I .

How and who will it benefit in society?

   I .

What do you plan to do?

   We.

Development Paradigm: MVC Paradigm
Program Language: Java/SWING
Persistence: XML (Apertium XML Files)
Framworks: Dixtools, JPA, Swing Application Framework

Stages/Milestones

Week Stage Description
1, 2 -- --.
2, 3 -- --.
Prototype Milestone 1 --
5, 6 -- --.
7 -- --.
8 -- --.
Prototype Milestone 2 --
9 -- --.
10 -- --.
11 Pré-Release --
Prototype --
12 Makeup --
Final Release

Presentation

   My name is Vinicius, a Brazilian Student at Federal Center for Technological Education of Minas Gerais - Brazil.

Resume of Skills

Apertium Knowledge:

   * Study to develop a collaborative tool for apertium.
   * A study of actual Apertium process about creating a language pair by the user point of view.
   * Analysis of the characteristics of the 2010 project of Aléssio and adaptation to current times.

Academic Skills:

   * Graduating in Computer Engineering- Federal Center for Technological Education of Minas Gerais – Brazil

Professional Skills:

   * Language developer: Java, Phyton, 

Projects for Summer:

   * No professional activities planned.
   * Planning to work in GSOC


Project

Why?

  • The dictionaries complexity and size makes its modification extremely hard and time-consuming, and, along with the need for programming knowledge, keeps potential contributors away. A tool that facilitates the work of dictionaries developers, eliminate the need of computer knowledge (XML, Git, etc) and that allows collaboration between members of the community is of extreme necessity because, with the removal of these barriers, a larger group of people will have the necessary requirements to participate in the development of dictionaries, thus increasing the translation capacity of Apertium.

A complexidade e o tamanho de um dicionário tornam extremamente difícil a sua modificação, e, juntamente com a necessidade de conhecimento em programação, acaba afastando possíveis contribuidores. Uma ferramenta que facilite o trabalho dos desenvolvedores de dicionários, elimine a necessidade de conhecimento em computação (XML, Git, etc.) e que permita uma colaboração entre os membros da comunidade é de extrema necessidade pois, com a remoção dessas barreiras, um grupo maior de pessoas terá os requisitos necessários para participarem do desenvolvimento de dicionários, aumentando, consequentemente, a capacidade de tradução do Apertium.

How can use?

  • --.
  • --.
  • --.
  • --.

What its the plan?

  • We are planning to create a web GUI that allows the user to develop the basic tasks of dictionaries and translation pairs manipulation in an easy and practical way.
  • We will use Git as an administrative and control tool, allowing the user to contribute to the work of other community members or start your own project.

Estamos planejando criar uma interface gráfica web que permita ao usuário desenvolver as tarefas básicas de manipulação de dicionários e pares de tradução de forma fácil e prática e usar o Git como ferramenta administrativa e de controle de versões, possibilitando ao usuário contribuir no trabalho de outros membros da comunidade ou iniciar seu próprio dicionário.

Components ans Technologies

(thumbnail)
Components Diagram
  • Actors
    • Lay User -
    • Dictionary Admin -
  • UserBrowser -
    • WebInterface With AngularJS -
  • Web Dicionary Maintence (APP) -
    • WebAPI -
    • Temporary Database -
    • JavaGit Connector -
    • WebDictionary Controller -
  • Git -
    • GitRepository -
    • GitLab -
    • GitHub -

How it Works?

We will develop a WebInterface to LayUser add words or sugest modifiations.

We are planning to use Git as an administrative and version control tool.

  • All dictionaries releases will be in a single repository and available to any member of the community to continue the work.
  • Each user will have your own branch to work on, which also will be available to the entire community to contribute to it.
  • The users will be able to make merge requests with other branches (official or unofficial).
  • At first, we will use GitLab to manage this merges requests. The team who maintain each dictionary will judge if the modifications are valids or not.

Example of Iteraction

(thumbnail)
Example Sequence Diagram

The general flow occurs as follows:

  1. The user chooses an available dictionary in the Git repository and starts a new branch from some version (or starts a new empty dictionary);
  2. The XML of the chosen dictionary will be processed and saved in a temporary database, where it will be easier to perform the necessary crosses and make the modifications;
  3. Through the GUI, the user will make their modifications in the dictionary and the changes will be temporarily saved in the database.
  4. When finalizing your modifications, the user can commit. A new XML will be generated from the database with the modifications made by the user. From that point on, that user's branch will be available for other users to use.
  5. When deemed convenient, the user can merge request with the official branch (or a branch of another user), which will be analyzed by the people in charge of the dictionary.
  6. The environment will make use of the GitLab platform (or similar tool) as an administrative tool and version control of dictionaries.
  7. When initiating a modification in a dictionary, the user will select one of the versions available in the Git repository and the XML of the selected branch will be cloned and adapted to be saved in a database (where it will be more efficient to make the necessary crosses). The user will then be free to make any changes he deems necessary. At the end of your contribution, the environment will prompt you to create a new branch with the user-modified XML, and then you can merge another branch where the team responsible for the dictionary can accept or deny the change.

O fluxo geral ocorre da seguinte forma: O usuário escolhe um dicionário disponível no repositório Git e inicia um novo branch a partir de alguma versão (ou inicia um novo dicionário vazio); O XML do dicionário escolhido será processado e salvo em um banco de dados temporário, onde será mais fácil realizar os cruzamentos necessários e realizar as modificações; Através da GUI, o usuário irá realizar suas modificações no dicionário e as mudanças ficaram temporariamente salvas no banco de dados. Ao finalizar suas modificações, o usuário poderá realizar um commit. Será gerado um novo XML a partir do banco de dados com as modificações realizadas pelo usuário. A partir desse ponto, a branch desse usuário estará disponível para outros usuários utilizarem. Quando julgar conveniente, o usuário poderá realizar um merge request com a branch oficial (ou uma branch de outro usuário), que será analisada pelos responsáveis pelo dicionário. O ambiente fará uso da plataforma GitLab (ou ferramenta similar) como ferramenta administrativa e de controle de versões de dicionários. Ao iniciar uma modificação em um dicionário, o usuário irá selecionar uma das versões disponíveis no repositório Git e o XML do branch selecionado será clonado e adaptado para ser salvo em um banco de dados (local onde será mais eficiente fazer os cruzamentos necessários). O usuário, então, terá liberdade para fazer todas as alterações que julgar necessário. Ao finalizar sua contribuição, o ambiente fará a solicitação para criação de um novo branch com o XML modificado pelo usuário e, posteriormente, poderá fazer a solicitação de merge em outro branch, onde a equipe responsável pelo dicionário poderá aceitar ou negar a modificação.

First Experiments

(thumbnail)
Example
(thumbnail)
Example
Personal tools