Herramientas de usuario

Herramientas del sitio


es:manual:items:generativos:siette.util.corpus.dictionary

siette.util.corpus.Dictionary

La clase Dictionary implementa una lista de términos a los que se asocia una serie de atributos. Los términos son secuencias de caracteres que terminan con el caracter : (dos puntos). Los atributos son cadenas de caracteres separados por algún caracter especial (en general espacio en blanco, tabulador o coma). Cada línea corresponde a un término. Los términos pueden repetirse.

Constructores

public Dictionary(String sURL, String separator)
public Dictionary(String sURL)
public Dictionary()
 
public Dictionary clone()
 
public void setDictionary(String sURL, String separator)
public void setDictionary(String sURL)

Inicialmente para construir el objeto de la clase Dictionary hay que indicar el fichero que contiene el diccionario y especificar el separador o separadores mediante una cadena de caracteres. Si no se especifica se usa como separador DEFAULT_SEPARATOR cuyo valor es: \t, , es decir, espacio en blanco, tabulador, o coma.

Tambien es posible crear el diccionario en blanco e inicializarlo posteriormente con el método setDictionary, o bien crearlo como copia de otro diccionario mediante el método clone()

Modo exclusivo

public void setExclusive()
public void setNotExclusive()

Los diccionarios tienen dos modos de funcionamiento, exclusivo y no exclusivo. El modo exclusivo que es el que se usa por defecto elimina del diccionario cada termino que se haya seleccionado previamente, de manera que no se pueda seleccionar dos veces el mismo elemento. El modo no exclusivo si lo permite.

public boolean excludes(String termino)

Excluye un termino del diccionario, es decir, hace que de ahí en adelante este término no se seleccione.

selectDictionary

public Dictionary selectDictionary(String[] attPos, int modePos, String[] attNeg, int modeNeg)
public Dictionary selectDictionary(String[] attPos, String[] attNeg )
public Dictionary selectDictionary(String[] attPos, String attNeg)
public Dictionary selectDictionary(String[] att, int mode)
public Dictionary selectDictionary(String[] att)
public Dictionary selectDictionary(String att)
public Dictionary selectDictionary()

El conjunto de métodos selectDictionary devuelve un diccionario que solo contiene algunos de los términos del diccionario original, y que todos ellos cumplen con la siguiente condicion:

attPos es un array de atributos (cadenas de caracteres) que pueden tener los términos. modePos es una variable que puede tomar dos valores constantes Dictionary.ALL y Dictionary.ANY. El primer caso indica que los atributos listados en attPos deben estar todos asociados al término que se busca. En el segundo caso, basta con que el término contenga alguno de ellos. attNeg al igual que attPos es un array de atributos. modeNeg al igual que modePos es una variable que puede tomar dos valores constantes Dictionary.ALL y Dictionary.ANY. El significado es diferente, en el caso de modeNeg el valor Dictionary.ALL implica que el término no contenga todos los atributos listados en attNeg, y el valor Dictionary.ANY indica que el término no debe contener ninguno de los atributos listados en attNeg. Un ejemplo clarifica mejor el funcionamiento de este método:

   Dictionary d = new Dictionary(...);
   String[] talla = {"38","39","40"}
   String[] color = {"rojo","azul"};
   Dictionary d2 = selectDictionary(talla, Dictionary.ANY, color, Dictionary.ANY);

Suponiendo que el diccionario lista un conjunto de prendas de vestir, la selección se realiza entre aquellas que sean o bien de la talla 38, 39 o 40, pero que no sean ni de color rojo, ni de color azul.

   Dictionary d3 = selectDictionary(color, Dictionary.ALL, talla, Dictionary.ANY);

En este caso, el diccionario selecciona prendas que mezclen los colores rojo y azul, pero no sean de la talla 38,39, ni 40.

Raramente la selección se hará en un solo paso con una consulta complicada. Lo más usual es que las consultas sean simples, y que en muchos casos no haya que especificar más que alguno de los argumentos de la función. Para ello se han creado métodos que utilizan valores por defecto y llaman al método principal, que son estos:

modePos, valor por defecto ALL
attNeg, valor por defecto new String{}
modeNeg, valor por defecto ANY

Si se llama al metodo sin atributos, se devuelve una copia del objeto.

El siguiente método selecciona prendas de la talla 38 que mezclen el color rojo, y azul

  Dictionary d4 = selectDictionary(new String[] {"38","rojo","azul"});

selectSet

public Set<String> selectSet(String[] attPos, int modePos, String[] attNeg, int modeNeg)
public Set<String> selectSet(String[] attPos, String[] attNeg )
public Set<String> selectSet(String   attPos, String   attNeg )
public Set<String> selectSet(String[] att, int mode)
public Set<String> selectSet(String[] att)
public Set<String> selectSet(String att)
public Set<String> selectSet()

Este conjunto de métodos es igual al anterior conjunto selectDictionary solo que esta vez se devuelve como resultado un conjunto de cadenas de caracteres correspondiente a los términos del diccionario.

selectAll

public String[] selectAll(String[] attPos, int modePos, String[] attNeg, int modeNeg)
public String[] selectAll(String[] attPos, String[] attNeg )
public String[] selectAll(String   attPos, String   attNeg )
public String[] selectAll(String[] att, int mode)
public String[] selectAll(String[] att)
public String[] selectAll(String att)
public String[] selectAll()

Igual que el anterior pero devuelve un array de cadenas de caracteres.

select

public String select(String[] attPos, String[] attNeg )
public String select(String   attPos, String   attNeg )
public String select(String[] att)
public String select(String att)
public String select()

Es una aplicación simplificada del método anterior, una ve seleccionados los términos que contienen todos los atributos attPos, y ninguno de los attNeg, en vez de devolver todos los valores, se selecciona uno de ellos al azar.

getAttributes

public String[] getAttributes(String termino, String[] atts)
public String[] getAttributes(String termino)

Estas funciones devuelven todos los atributos asociados a un término. Si se usa el atts, solo se devuelven los atributos que estén incluidos en esta lista, es decir la intersección entre los atributos asociados al término y los atributos de la lista atts.

public Set getAttributesSet(String text, Set<String> atts)
public Set getAttributesSet(String text)

Igual que la anterior pero con conjuntos.

toPattern

public static String cap(String st)

Pone en mayúsculas la primera letra de una cadena de caracteres st.

public static String toPattern(String in, boolean escape, int patternAlign)
public static String toPattern(String in, boolean escape)
public static String toPattern(String in)

El propósito de estas funciones es construir un patrón Siette a partir de una cadena de entrada in. Al construir un patrón Siette algunos caracteres son caracteres especiales que no pueden usarse directamente en las expresiones, si no se especifica otra cosa, estos caracteres simplemente se eliminan.

 out.println(Dictionary.toPattern("Miguel (de) Cervantes"));

produce la salida

 Miguel de Cervantes

Otra opciones, es construir el patrón de manera que conserve los caracteres especiales, para lo cual hay que precederlo del caracter deescape

 out.println(Dictionary.toPattern("Miguel (de) Cervantes"),true);

produce la salida

 Miguel \(de\) Cervantes

que es un patrón Siette valido. Finalmente tambien se puede construir un patrón Siette de manera que parte del texto sea opcional a derecha o izquierda, por ejemplo:

 out.println(Dictionary.toPattern("Miguel de Cervantes"),false, Dictionary.LEFT);

produce en la salida el patrón Siette:

 {{Miguel} de} Cervantes

o bien

 out.println(Dictionary.toPattern("Aguila culebrera blanca"),false, Dictionary.RIGHT);

produce en la salida el patrón Siette:

 Aguila{ culebrera{ blanca}}

El primer patrón daría como buena una respuesta que dijera simplemente Cervantes y el segundo una respuesta que dijera simplemente Aguila. Dependiendo de la aplicación unas veces es más conveniente un patrón que otro.

public static String toPattern(Set set, int mode)
public static String toPattern(List aList, int mode)
public static String toPattern(String[] aString, int mode)
public static String toPatternAll(Set set)
public static String toPatternAll(List aList)
public static String toPatternAll(String[] aString)
public static String toPatternAny(Set set)
public static String toPatternAny(List aList)
public static String toPatternAny(String[] aString)

Este conjunto de métodos devuelve un patrón Siette combinando las cadenas de caracteres que se les pasan como argumentos, ya sea como un array de cadenas de caracteres, una lista o un conjunto. El atributo mode puede tomar dos valores, correspondientes a dos constantes de la clase Dictionary.ALL y Dictionary.ANY indicando cómo deben combinarse. Por ejemplo

   toPattern(new String[] {"rojo","azul","blanco"}, Dictionary.ALL)

genera el siguiente patrón Siette:

   rojo+azul+blanco

que reconoce respuestas como:

   rojo,azul,blanco
   rojo,blanco,azul
   azul rojo blanco
   ...

Las versiones abreviadas de esta función imponen el modo en el propio nombre de la función, como por ejemplo

  toPatternAny(new String[] {"rojo","azul","blanco"})
  

que genera el patrón

  rojo|azul|blanco

que acepta cualquiera de estas cadenas como respuesta.

toText

public static String toText(String[] aString, int mode, String lang)
public static String toText(Set set, int mode, String lang)
public static String toTextAll(String[] aString, String lang)
public static String toTextAll(Set set, String lang) 
public static String toTextAll(String s, String lang)
public static String toTextAny(String[] aString, String lang)
public static String toTextAny(Set set, String lang)
public static String toTextAny(String s, String lang)

Los métodos toText son similares a los métodos toPattern solo que en vez de crear un patrón Siette, forman una frase en lenguaje natural. Están pensados para trabajar con una lista de atributos y generar textos que pueden usarse en las preguntas de respuesta corta como ejemplos de respuestas correctas, o en la sección de ayuda. Por ejemplo,

   toText(new String[] {"rojo","azul","blanco"}, Dictionary.ALL, "es")

devuelve la cadena de caracteres:

   rojo, azul y blanco 

Los métodos 'toTextAll' y toTextAny, utilizan un modo por defecto, por ejemplo

   toTextAll(new String[] {"red","blue","white"}, "en")

devuelve la cadena:

   red, blue and white

Métodos auxiliares

public static String cap(String st)

Pone en mayúsculas la primera letra de una cadena de caracteres st.

public static String[] union(String[] att1, String[] att2)
public static String[] intersection(String[] att1, String[] att2)
public static String[] remove(String[] att1, String[] att2)
public static String[] remove(String[] att1, String att2)

Implementan operaciones de conjuntos con arrays de caracteres. Están pensadas para manejar conjuntos de atributos. El método union devuelve un array con la unión de los dos argumentos att1 y att2; el método interseccion devuelve los elementos comunes entre ambos; y remove elimina del conjunto att1 los elementos de att2.

public static URL getURL(String sURL)

Devuelve la URL del archivo, para ello sustituye la cadena que se le pasa como argumento sURL por una cadena formada por la ruta absoluta, teniendo en cuenta el directorio de la asignatura.

es/manual/items/generativos/siette.util.corpus.dictionary.txt · Última modificación: 2021/11/07 21:44 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki