java - para - weka home page
¿Cómo representar texto para clasificación en weka? (2)
¿Podrías decirme cómo representar un atributo o clase para la clasificación de texto en weka? ¿Usando qué atributo puedo hacer la clasificación? ¿Frecuencia de palabra o solo palabra? ¿Cuál sería la estructura posible del formato ARFF? ¿Puedes darme varias líneas de ejemplo de esa estructura?
Muchas gracias por adelantado.
Una de las alternativas más fáciles es comenzar con un archivo ARFF para un problema de dos clases como:
@relation corpus @attribute text string @attribute class {pos,neg} @data ''long text with words ... '',pos
El texto se representa como un tipo de cadena y la clase es nominal con dos valores.
Entonces podrías aplicar dos filtros:
- StringToWordVector que transforma los textos en una representación vectorial de palabras. El filtro usa un atributo para cada palabra. Puede modificar los parámetros para elegir representación binaria / frecuencia, derivación o palabras vacías. La mejor representación depende del problema. Si el texto no es largo, generalmente la representación binaria es suficiente.
- Reordenar para mover el atributo de clase a la última posición, Weka supone que está allí.
Puede encontrar más información y otros enfoques para transformar sus datos en esta página wiki de Weka: http://weka.wikispaces.com/Text+categorization+with+WEKA
En weka, puedes elegir tu propio atributo. En este ejemplo, solo tenemos 2 clases y todas las palabras únicas se usan como atributos. Si elige la frecuencia de las palabras como su atributo, entonces asigna ''2'' si esa palabra aparece dos veces en su texto, y ''0'' si no, o ''1'' si esa palabra aparece solo una vez.
Aquí está el ejemplo del formato .arff.
@RELATION anyrelation
@ATTRIBUTE word1
@ATTRIBUTE word2
...
@ATTRIBUTE wordn
@ATTRIBUTE class {class1, class2}
@DATA
1,2,....,0,class1
0,3,....,1,class2