¡Esta es una revisión vieja del documento!
Tabla de Contenidos
siette.util.corpus.Dictionary
La clase Dictionary
implementa una lista de términos a los que se acsocia una serie de atributos. Los términos son secuencias de caracteres que terminan con el caracters :
(dos puntos). Los atributos son cadenas de caracteres separados por algun caracter especial (en general espacio en blanco, tabulador o coma). Cada línea corresponde a un término. Los términos pueden repetirse.
Cosntructores
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 inidcar 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, exclsivo y no exclusivo. El modo exclusivo que es el que se usa por defecto elimina del diccionario cada termino que se haya seleccioando 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[] 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 ue se busca. En el segundo caso, basta con que el término cobtenga alguno de ellos.
attNeg
al igual que attPos
es un array de atributos.
modeNeg
al igaul que modePos
es una variable que puede tomar dos valores constantes Dictionary.ALL
y Dictionary.ANY
. El sign ificado 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 seleccion se hara en un solo paso con una consulta complicada. Lo mas usual es que las consultas sean simples, y que en muchos casos no haya que especificar mas 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[] 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[] 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[] 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 esten incluidos en esta lista, es decir la interseccion 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 cadedena 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 proposito de estas funciones es construir un patrón Siette a partir de una cadena de entrada in
. Al construir un patrón Siette algunos caractres 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 Ceravntes
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\) Ceravntes
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 daria 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 mas conveniente un patrón que otro.
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. Estan pensados para trabajar con una lista de atributos y generar textos que pueden usarse en las rpeguntas de respuesta corta como ejemplos de respuestas correctas, o en la seccion 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 cadedena 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. Estan 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.