Class Turn

java.lang.Object
edu.upvehu.mummec.final1920.Turn

public class Turn
extends java.lang.Object
Esta clase representa a un turno de un hablante. (recoge el material entre dos etiquetas "<SPK/>")
Se aporta al constructor el id del hablante para conocer su identidad (no es usado en el ejercicio)
Mediante el método addLine(.) recibe líneas del procesador de sesiones (Session) y va cumplimentando palabras (Word) y fonemas (Phoneme)
  • Field Summary

    Fields 
    Modifier and Type Field Description
    private java.lang.String speaker
    El identificador del hablante.
    private java.util.List<Word> words
    La lista de palabras que forman el turno.
  • Constructor Summary

    Constructors 
    Constructor Description
    Turn​(java.lang.String speaker)
    Constructor que se limita a guardar la identidad del hablante.
  • Method Summary

    Modifier and Type Method Description
    (package private) void addLine​(java.lang.String linea)
    Extrae los campos de la línea recibida y construye las palabras.
    Si la línea contiene una palabra en el campo correspondiente, genera una nueva palabra vacía (que mantiene como "palabra activa") y la almacena en la lista de palabras.
    (package private) double getDuration()
    Proporciona la duración del turno.
    (package private) double getEnd()
    Proporciona el segundo final en que termina el turno.
    Este es el último tiempo de finaliczación de una palabra encontrado en el turno.
    (package private) int getLength()
    Proporciona la longitud total del turno en fonemas.
    (package private) int getMatches()
    Proporciona la cantidad total de fonemas "acertados".
    (package private) int getNumWords()
    Proporciona el número de palabras que componen el turno.
    (package private) double getStart()
    Proporciona el segundo inicial en que comienza el turno.
    Este es el primer tiempo de inicio de una palabra encontrado en el turno.
    (package private) double pra()
    Proporciona el Porcentaje Real de Aciertos (PRA).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • words

      private final java.util.List<Word> words
      La lista de palabras que forman el turno.
    • speaker

      private final java.lang.String speaker
      El identificador del hablante.
  • Constructor Details

    • Turn

      public Turn​(java.lang.String speaker)
      Constructor que se limita a guardar la identidad del hablante.
      Parameters:
      speaker - la identidad del hablante
  • Method Details

    • addLine

      void addLine​(java.lang.String linea)
      Extrae los campos de la línea recibida y construye las palabras.
      Si la línea contiene una palabra en el campo correspondiente, genera una nueva palabra vacía (que mantiene como "palabra activa") y la almacena en la lista de palabras.
      A continuación añade siempre el fonema (Phoneme) recibido a la "palabra activa", con los campos de datos correspondientes.

      TRUCO para extraer todos los campos de la línea:
      para evitar el procesamiento con "splits" de splits" como hicimos en clase, podemos usar expresiones regulares. Los seis campos pueden obtenerse de una sola vez de la siguiente manera:
      String[] campos = linea.replaceFirst("(.)\\t(.)\\t\\|(.*)\\|(?:(.*) (.*) (.*))?\\|", "$1 $2 $3 $4 $5 $6 STUB").split(" ");
      (nota.- el elemento "STUB" es un séptimo campo que fuerza la existencia de todos los anteriores aun cuando no existieran en la linea recibida)
      Parameters:
      linea - la línea extraida del fichero y proporcionada por el objeto Session que lo procesa.
      See Also:
      replaceFirst(String regex, String replacement) para entender cómo funciona el método, y Pattern para aprender sobre expresiones regulares en Java y entender el "truco".
    • getNumWords

      int getNumWords()
      Proporciona el número de palabras que componen el turno.
      Returns:
      el número de palabras que componen el turno.
    • getLength

      int getLength()
      Proporciona la longitud total del turno en fonemas. Recorre todas las palabras sumando sus longitudes en fonemas.
      Returns:
      la longitud total del turno en fonemas.
    • getMatches

      int getMatches()
      Proporciona la cantidad total de fonemas "acertados". Recorre todas las palabras sumando los fonemas "acertados".
      Returns:
      la cantidad total de fonemas "acertados".
    • pra

      double pra()
      Proporciona el Porcentaje Real de Aciertos (PRA). devuelve el cociente de aciertos (getMatches()) entre longitud fonética (getLength()).
      Returns:
      el Porcentaje Real de Aciertos (PRA).
    • getStart

      double getStart()
      Proporciona el segundo inicial en que comienza el turno.
      Este es el primer tiempo de inicio de una palabra encontrado en el turno. Como muchos fonemas no tienen tiempos (son borrados), puede haber palabras sin ninguna marca de tiempo (totalmente borradas), y por ello es preciso recorrer las palabras desde el principio hasta que una proporcione un tiempo inicial.
      Returns:
      el segundo inicial en que comienza el turno.
    • getEnd

      double getEnd()
      Proporciona el segundo final en que termina el turno.
      Este es el último tiempo de finaliczación de una palabra encontrado en el turno. Como muchos fonemas no tienen tiempos (son borrados), puede haber palabras sin ninguna marca de tiempo (totalmente borradas), y por ello es preciso recorrer las palabras desde el final hasta que una proporcione un tiempo final.
      Returns:
      el segundo final en que termina el turno.
    • getDuration

      double getDuration()
      Proporciona la duración del turno. Es la diferencia entre el tiempo final e inicial porporcionados por getStart() y getEnd().
      Returns:
      la duración del turno.