Construindo Sua Primeira Tarefa de Anotação NER
Guia passo a passo para construir uma tarefa de reconhecimento de entidades nomeadas no Potato, com configuração de anotação de spans, cores de rótulos, spans sobrepostos, atalhos de teclado e exportação CoNLL.
O Reconhecimento de Entidades Nomeadas é uma tarefa que a maioria das equipes de PLN encontra mais cedo ou mais tarde. Este tutorial constrói uma interface de anotação NER funcional a partir do zero, com destaque de spans, atalhos de teclado e seleção de tipos de entidade. Para as opções de configuração de spans por trás disso, consulte a documentação de anotação de texto.
O Que Vamos Construir
Ao final deste tutorial, você terá uma interface de anotação onde os anotadores podem:
- Destacar spans de texto clicando e arrastando
- Atribuir tipos de entidade (Pessoa, Organização, Local, etc.)
- Usar atalhos de teclado para anotar mais rápido
- Editar ou excluir anotações existentes
Pré-requisitos
- Potato instalado (
pip install potato-annotation) - Familiaridade básica com YAML
- Dados de texto de exemplo para anotar
Passo 1: Configurar o Esquema de Anotação
Crie um arquivo config.yaml:
annotation_task_name: "Named Entity Recognition"
data_files:
- data/sentences.json
item_properties:
id_key: id
text_key: text
# Enable span annotation
annotation_schemes:
- annotation_type: span
name: entities
description: "Highlight and label named entities in the text"
labels:
- name: PER
description: "Person names"
color: "#FF6B6B"
keyboard_shortcut: "p"
- name: ORG
description: "Organizations"
color: "#4ECDC4"
keyboard_shortcut: "o"
- name: LOC
description: "Locations"
color: "#45B7D1"
keyboard_shortcut: "l"
- name: DATE
description: "Dates and times"
color: "#96CEB4"
keyboard_shortcut: "d"
- name: MISC
description: "Miscellaneous entities"
color: "#FFEAA7"
keyboard_shortcut: "m"
min_spans: 0 # Allow sentences with no entitiesPasso 2: Preparar Seus Dados
Crie data/sentences.json com seus dados de texto:
{"id": "1", "text": "Apple Inc. announced that CEO Tim Cook will visit Paris next Tuesday."}
{"id": "2", "text": "The United Nations headquarters in New York hosted delegates from Japan."}
{"id": "3", "text": "Dr. Sarah Johnson published her research at Stanford University in March 2024."}Passo 3: Adicionar Diretrizes de Anotação
Ajude seus anotadores com diretrizes claras:
# Add to config.yaml
annotation_guidelines:
title: "NER Annotation Guidelines"
content: |
## Entity Types
**PER (Person)**: Names of people, including fictional characters
- Examples: "John Smith", "Dr. Johnson", "Batman"
**ORG (Organization)**: Companies, institutions, agencies
- Examples: "Apple Inc.", "United Nations", "Stanford University"
**LOC (Location)**: Places, including countries, cities, landmarks
- Examples: "Paris", "New York", "Mount Everest"
**DATE**: Dates, times, and temporal expressions
- Examples: "Tuesday", "March 2024", "next week"
**MISC**: Other named entities not fitting above categories
- Examples: "Nobel Prize", "iPhone", "COVID-19"
## Annotation Rules
1. Include titles (Dr., Mr.) with person names
2. For nested entities, annotate the largest meaningful span
3. Don't include articles (the, a) in entity spansA interface de anotação de spans permite que os anotadores destaquem texto e atribuam rótulos de entidade:
Os anotadores destacam spans de texto e atribuem rótulos de entidade como PER, ORG, LOC e DATE
Passo 4: Começar a Anotar
Inicie sua tarefa NER:
potato start config.yamlFluxo de Trabalho de Anotação
- Selecione o texto: Clique e arraste para destacar um span
- Escolha o tipo de entidade: Clique em um botão de rótulo ou use o atalho de teclado
- Edite anotações: Clique em um span existente para modificar ou excluir
- Envie: Pressione Enter ou clique em Enviar quando terminar
Passo 5: Revisar a Saída
As anotações são salvas no formato JSONL:
{
"id": "1",
"text": "Apple Inc. announced that CEO Tim Cook will visit Paris next Tuesday.",
"annotations": {
"entities": [
{"start": 0, "end": 10, "label": "ORG", "text": "Apple Inc."},
{"start": 30, "end": 38, "label": "PER", "text": "Tim Cook"},
{"start": 50, "end": 55, "label": "LOC", "text": "Paris"},
{"start": 61, "end": 73, "label": "DATE", "text": "next Tuesday"}
]
}
}Dicas para uma Melhor Anotação NER
A maior parte das divergências em NER vem de diretrizes vagas, então quanto mais claras forem suas regras, menos seus anotadores discutirão sobre o mesmo span. Conduza as pessoas pelos casos limítrofes complicados antes de começarem, e não depois, e continue discutindo os exemplos difíceis em equipe. Quando a concordância entre anotadores cai, esse costuma ser o primeiro sinal de que uma diretriz precisa ser ajustada.
Próximos Passos
- Adicione uma fase de treinamento para integrar os anotadores
- Configure múltiplos anotadores para redundância
- Exporte para o formato Hugging Face para treinar modelos
Precisa de ajuda? Consulte nossa documentação de anotação de spans para mais detalhes.