# Segmentazione del documento originale

## Sommario

- 1. Concetti base della segmentazione
- 2. Segmentazione delle frasi
  - 2.1. Le regole di segmentazione
  - 2.2. Impostazione delle regole di segmentazione
    - 2.2.1. Serie di regole di segmentazione
    - 2.2.2. Semplici esempi
  - 2.3. Espressioni utilizzabili nelle regole di segmentazione
    - 2.3.1. Breve riepilogo della creazione di espressioni

## Concetti base della segmentazione

Gli strumenti della memoria di traduzione operano su unità di testo che vengono definite “segmenti”. Vi sono molti modi per segmentare un testo.

OmegaT prima analizza il testo alla ricerca di una segmentazione a livello della struttura. Nel corso di questo processo, per la generazione dei segmenti, viene utilizzata solo la struttura del testo di partenza. Per esempio, i file di testo possono essere segmentati in corrispondenza delle interruzioni di riga, in base alle righe vuote oppure potrebbero non venire in alcun modo segmentati a livello della struttura. I file con formattazione (documenti OpenOffice.org, OpenDocument, XHTML e HTML) sono segmentati in base ai tag a livello di blocco (paragrafi).

Per separare i segmenti, nei file XHTML o HTML, vengono anche estratti gli attributi dell'oggetto traducibile.

OmegaT è in grado di segmentare anche in base alle frasi. La segmentazione per frasi viene effettuata dopo che è stata ultimata la segmentazione a livello struttura. I segmenti creati nel corso di entrambi i processi, tuttavia, non possono essere cambiati (suddivisi o accorpati) nel corso del processo di traduzione. Si tratta di una limitazione di OmegaT di cui siamo perfettamente consci.

Se non si è soddisfatti dei processi di segmentazione applicati, si dovrebbe intervenire esternamente sul file di partenza e/o modificare le regole di segmentazione della frase. Dopo aver ultimato questa operazione sarà necessario ricaricare il progetto in modo tale che l'applicazione possa prendere in considerazione le modifiche apportate.

## Segmentazione delle frasi

Dopo che OmegaT ha ultimato la segmentazione del file di partenza in unità logiche – per i file formattati, di solito, si tratta di una segmentazione corrispondente ai paragrafi – avvierà un'ulteriore segmentazione di tali blocchi in frasi, sempre che non sia stata disattivata la funzione di segmentazione in frasi. Da un punto di vista generale, OmegaT può segmentare i blocchi logici del file di partenza in un qualsiasi ulteriore tipo di segmento definito dall'utente. Tuttavia, dato che, per default, OmegaT avvia una segmentazione per frasi, noi continueremo a chiamarla segmentazione per frasi.

La segmentazione per frasi è stata “costruita” tenendo presente lo standard Segmentation Rules eXchange (SRX), anche se al momento della stesura di questo manuale, OmegaT non è in grado di gestire tutte le funzioni SRX, né è in grado di importare/esportare regole definite nel formato SRX. Tuttavia, se si conosce come opera SRX, si sarà in grado di capire anche l'operatività di OmegaT, poiché le regole sono, più o meno, le stesse.

### Le regole di segmentazione

Vi sono due tipi di regole di segmentazione.

- Le regole di interruzione suddividono il testo in segmenti.
- Le regole di eccezione definiscono quali sono le porzioni di testo che non dovrebbero venire separate da altre.

Esempio di regola di interruzione:: “Ma tutto questo ha davvero senso? Non ne sono così sicuro.” può essere suddiviso in due segmenti dopo il “`?`”. Ci dovrebbe quindi essere una regola di interruzione per il carattere “`?`”.

Esempio di regola di eccezione: “Who is afraid of Mrs. Woolf?” non dovrebbe essere segmentata dopo il “`.`”. Per fare questo è necessaria la presenza di una regola di eccezione da applicare a “`Mrs.`”.

Le regole di interruzione predefinite dovrebbero essere sufficienti per la maggior parte delle lingue europee e per il giapponese, ma si raccomanda comunque di definire altre regole di eccezione per quelle lingue dalle quali normalmente si traduce, dato che, ovviamente, non è possibile predefinire, per tutte le lingue, tutte le possibili eccezioni.

### Impostazione delle regole di segmentazione

Per definire le regole di segmentazione, si avvii dalla barra dei menu il comando Opzioni -> Segmentazione.... Si tenga presente che se si modificano le regole di segmentazione mentre è aperto un qualsiasi progetto, perché tali regole abbiano effetto sarà necessario ricaricare l'intero progetto.

#### Serie di regole di segmentazione

Tutte le serie di regole di segmentazione corrispondenti a un modello linguistico vengono applicate in un ordine di priorità specifico e, pertanto, sarà necessario che le lingue dalle quali comunemente si traduce si trovino in una posizione precedente rispetto a quelle definite per default.

Per esempio, le regole per il francese del Canada (FR-CA) dovrebbero precedere quelle per il francese comune (FR.*) e anche quelle di Default (.*). A questo punto, quando si tradurrà dal francese del Canada, il progetto adotterà prima le regole definite per questa lingua, quindi quelle definite per il francese comune e, infine, quelle di Default, seguendo l'ordine di priorità corretto.

Per creare una serie vuota di regole, fare clic sul pulsante Aggiungi nella metà superiore della finestra di dialogo. Alla fine della tabella viene inserita una riga bianca. Cambiare il nome alla serie di regole e al modello della lingua. La sintassi del modello della lingua è conforme alla sitassi di un'espressione comune. Si veda, più sotto, la sezione Breve riepilogo della creazione di espressioni.

Nel caso in cui la serie di regole gestisca una coppia lingua-nazione, si consiglia di usare il pulsante Sposta in alto per spostarla alla prima posizione della tabella.

Per modificare una serie di regole, fare semplicemente clic sul suo nome all'interno della tabella per visualizzare le regole attive nella metà inferiore della finestra di dialogo.

Le caselle di opzione della colonna “Interruzione/Eccezione” determineranno se si tratta di una regola di interruzione (casella attivata) oppure di una regola di eccezione (casella non attivata). Le espressioni delle colonne “Modello prima” e “Modello dopo” definiscono che cosa deve essere eseguito prima e dopo alcune posizioni, in modo da applicare correttamente la regola di eccezione o quella di interruzione.

Il processo di segmentazione può essere schematizzato come segue. Immaginare un cursore che si sposta dalla fine del primo all'inizio dell'ultimo simbolo del testo. Per ogni posizione del cursore verrà adottata ogni singola regola nell'ordine predefinito e si cercherà di applicare il modello “Prima” a tutto il testo posto alla sinistra del cursore e il modello “Dopo” al testo posto alla sua destra, in modo che siano a contatto con la posizione del cursore.

Se può essere applicata una delle regole, per quanto riguarda le regole di eccezione non faremo altro che interrompere l'analisi di ulteriori regole, mentre per le regole di interruzione considereremo il testo alla sinistra del cursore come un segmento separato, e ciò per qualsiasi posizione del cursore all'interno del testo.

#### Semplici esempi

Scopo: definizione di un segmento dopo un punto (“`.`”) e prima di uno spazio.
  Modello prima: `\.` Modello dopo: `\s`
  Nota: “`\.`” indica il carattere “`.`”
  “`\s`” corrisponde a un qualsiasi carattere di spazio bianco.
Scopo: non definire un segmento dopo “`Mr.<c/code>”.`
  Modello prima: `Mr\.` Modello dopo: `\s`
  Nota: Non dimenticare di lasciare non selezionata la casella di opzione corrispondente.
Scopo: impostazione di un segmento dopo “。” (punto in giapponese)
  Modello prima: 。 Modello dopo: (vuoto)
  Nota: un campo può anche essere lasciato vuoto.

### Espressioni utilizzabili nelle regole di segmentazione

Le regole di segmentazione sono di per se stesse rappresentate da normali espressioni. Questo consente la massima flessibilità nella definizione delle regole e la conformità a SRX.

#### Breve riepilogo della creazione di espressioni

Queste non sono le uniche definizioni di espressioni riconosciute dalle regole di segmentazione di OmegaT, ma solo quelle più comunemente utilizzate. OmegaT è in grado di riconoscere tutte le funzioni delle espressioni descritte dallo standard SRX.

Espressione | Risultato
--- | ---
Flag
`(?i)` | Consente di avviare una ricerca che tenga in considerazione lettere maiuscole e minuscole (per default, il modello riconosce le maiuscole e le minuscole).
Caratteri
x | Viene rilevato il carattere corrispondente a “x”, ma con le seguenti eccezioni...
`\u` hhhh | Carattere associato a un valore esadecimale `0x` hhhh
`\t` | Carattere di tabulazione (`'\u0009'`)
`\n` | Carattere corrispondente a un avanzamento di riga (line feed, LF) (`'\u000A'`)
`\r` | Carattere corrispondente a un ritorno di carrello (carriage-return, CR) (`'\u000D'`)
Citazioni
`\` | Nulla, se non il carattere immediatamente successivo. È necessario quando si desidera usare i metacaratteri `!$()*+.<>?[\]^{|}` in modo che vengano rilevati come caratteri e non come operatori.
`\\` | Per esempio, questa combinazione corrisponde al carattere della barra rovesciata (“ \ ”).
`\Q` | Nulla, ma indica tutti i caratteri fino a `\E`
`\E` | Nulla, ma conclude la citazione iniziata da `\Q`.
Classi di caratteri
`[abc]` | `a`, `b`, o `c` (classe semplice).
`[^abc]` | Qualsiasi carattere, eccetto `a`, `b`, o `c` (negazione).
`[a-zA-Z]` | Da `a` a `z` o da `A` a `Z`, compresi (intervallo).
Classi di carattere predefinite
`.` | Qualsiasi carattere (con eccezione dei terminatori di riga).
`\d` | Una cifra: `[0-9]`
`\D` | Un carattere non numerico: `[^0-9]`
`\s` | Un carattere di spazio bianco: `[ \t\n\x0B\f\r]`
`\S` | Un carattere che non sia uno spazio bianco: `[^\s]`
`\w` | Un carattere parola: `[a-zA-Z_0-9]`
`\W` | Un carattere non-parola: `[^\w]`
Rilevatori di limitazione
`^` | Inizio di una riga
`$` | Fine di una riga
`\b` | Limite di una parola
`\B` | Limite di una non-parola
Quantificatori di ripetizione
Rileveranno tutte le ripetizioni possibili. Per esempio, `a+` rileverà `aaa` in `aaabbb`
X`?` | X, una sola volta, oppure nessuna
X`*` | X, zero o più volte
X`+` | X, una o più volte
Quantificatori riluttanti (non ripetitivi)
Rileveranno il numero minimo possibile. Per esempio, `a+?` rileverà la prima `a` in `aaabbb`
X`??` | X, una sola volta, oppure nessuna
X`*?` | X, zero o più volte
X`+?` | X, una o più volte
Operatori logici
XY | X seguito da Y
X`|`Y | X oppure Y
`(`XY`)` | XY come gruppo singolo

Avvertenze legali