texto spanish sentimientos natural mineria language instalar español ejemplos con como analisis preprocessor neural-network textinput normalize standardized

preprocessor - spanish - procesamiento de cadenas de texto para la entrada de red neuronal



nltk python spanish (5)

Entiendo que la entrada ANN debe estar normalizada, estandarizada, etc. Dejando de lado las peculiaridades y modelos de varias ANN, ¿cómo puedo preprocesar el texto codificado en UTF-8 dentro del rango de {0,1} o alternativamente entre el rango {-1, 1} antes de que se dé como entrada a las redes neuronales? He estado buscando esto en google pero no puedo encontrar ninguna información (puedo estar usando el término incorrecto).

  1. ¿Tiene sentido?
  2. ¿No es así como el texto está preprocesado para redes neuronales?
  3. ¿Hay alguna alternativa?

EDICION 20-noviembre-2013 :

Hace tiempo que acepté como correcta la respuesta de Pete. Sin embargo, tengo serias dudas, principalmente debido a investigaciones recientes que he estado haciendo sobre conocimiento simbólico y ANN''s.

Dario Floreano y Claudio Mattiussi en su libro explican que ese procesamiento sí es posible, mediante el uso de codificación distribuida .

De hecho, si prueba una búsqueda de Google Scholars, existe una plétora de artículos y artículos de neurociencia sobre cómo se hipotéticamente que la codificación distrubuida es utilizada por los cerebros para codificar el Conocimiento simbólico.

Teuvo Kohonen , en su documento " Self Organizing Maps " explica:

Uno podría pensar que aplicar las leyes de adaptación neuronal a un conjunto de símbolos (considerado como un conjunto de variables vectoriales) podría crear un mapa topográfico que muestre las "distancias lógicas" entre los símbolos. Sin embargo, ocurre un problema que radica en la naturaleza diferente de los símbolos en comparación con los datos continuos. Para este último, la similitud siempre aparece de forma natural, como las diferencias métricas entre sus codificaciones continuas. Esto ya no es cierto para elementos discretos y simbólicos, como palabras, para los cuales no se ha definido ninguna métrica. Es en la naturaleza misma de un símbolo que su significado está disociado de su codificación.

Sin embargo, ¡Kohonen logró lidiar con la información simbólica en los SOM!

Además, el Prof. Dr. Alfred Ultsch en su artículo " La integración de las redes neuronales con el procesamiento del conocimiento simbólico " trata exactamente de cómo procesar el conocimiento simbólico (como el texto) en ANN. Ultsch ofrece las siguientes metodologías para procesar el conocimiento simbólico: razonamiento aproximativo neuronal, unificación neuronal, introspección y adquisición de conocimiento integrado. Aunque se puede encontrar poca información sobre aquellos en Google Scholar o en cualquier otro lugar para el caso.

Pete en su respuesta tiene razón acerca de la semántica. La semántica en ANN generalmente está desconectada. Sin embargo, siguiendo la referencia, proporciona una idea de cómo los investigadores han utilizado mecanismos basados ​​en palabras, entrenados para reconocer la similitud en la semántica de diferentes entradas de palabras, por lo que no debería ser imposible tener semántica, pero requeriría un enfoque en capas o una ANN secundaria si se requiere semántica .

Procesamiento del lenguaje natural con redes neuronales subsimbólicas, Risto Miikkulainen, 1997 Máquinas de Boltzmann con entrenamiento restringido en Word, GEDahl, Ryan.P. Adams, H.Rarochelle, 2012


Continuaré y resumiré nuestra discusión como la respuesta aquí.

Su objetivo es poder incorporar texto en su red neuronal. Hemos establecido que las ANN tradicionales no son realmente adecuadas para analizar textos. La explicación subyacente de por qué esto es así se basa en la idea de que las RNA funcionan con entradas que generalmente son un rango continuo de valores y la cercanía de dos valores para una entrada significa algún tipo de cercanía en su significado. Las palabras no tienen esta idea de cercanía y, por lo tanto, no existe una codificación numérica real para palabras que puedan tener sentido como entrada a una ANN.

Por otro lado, una solución que podría funcionar es usar un análisis semántico más tradicional que podría, tal vez, producir rangos de sentimientos para una lista de temas y luego esos temas y sus valores de sentimiento podrían posiblemente usarse como entrada para una ANN.


Creo que sería fascinante incluir texto (codificado a nivel de personaje) en una red de creencias profunda, para ver qué propiedades del lenguaje puede descubrir.

Recientemente se ha trabajado mucho en el modelado del lenguaje de redes neuronales (principalmente a nivel de palabra, pero también a nivel de personaje)

Vea estos enlaces para más información

http://www.stanford.edu/group/pdplab/pdphandbook/handbookch8.html http://code.google.com/p/word2vec/

Los vectores de palabras están codificados por el entrenamiento en un gran corpus de artículos de wikipedia, etc. y han podido adquirir características semánticas y sintácticas, lo que permite definir una "distancia" entre ellos ".

"Recientemente se ha demostrado que los vectores de palabras capturan muchas regularidades lingüísticas, por ejemplo vector vectorial de operaciones (''rey'') - vector (''hombre'') + vector (''mujer'') está cerca del vector (''reina'')"

También vea este gran trabajo de investigación de Ilya Sutskever sobre la generación de caracteres aleatorios, que exhiben las características del idioma inglés después de recibir capacitación en wikipedia. Cosas increíbles!

http://www.cs.toronto.edu/~ilya/pubs/2011/LANG-RNN.pdf http://www.cs.toronto.edu/~ilya/rnn.html (Demostración de texto de generación de texto en línea - muy ¡guay!)


En respuesta a sus comentarios, no, su esquema propuesto no tiene mucho sentido. Una salida de neurona artificial por su naturaleza representa un valor continuo o al menos binario. No tiene sentido mapear entre una gran enumeración discreta (como los caracteres UTF-8) y el rango continuo representado por un valor de coma flotante. La ANN necesariamente actuará como 0.1243573 es una muy buena aproximación a 0.1243577 cuando esos números podrían ser fácilmente mapeados al carácter de nueva línea y al carácter "a", por ejemplo, lo que no sería una buena aproximación para el otro.

Francamente, no hay una representación razonable para "cadena unicode general" como entradas a una ANN. Una representación razonable depende de los detalles de lo que estás haciendo. Depende de tus respuestas a las siguientes preguntas:

  • ¿Esperas que aparezcan palabras en las cadenas de entrada en lugar de bloques de caracteres? ¿Qué palabras espera que aparezcan en las cuerdas?
  • ¿Cuál es la distribución de longitud de las cadenas de entrada?
  • ¿Cuál es la entropía esperada de las cadenas de entrada?
  • ¿Hay algún conocimiento específico de dominio que tenga sobre cómo espera que se vean las cadenas?

y más importante

  • ¿Qué estás tratando de hacer con la ANN? Esto no es algo que puedas ignorar.

Es posible que tenga una configuración para la cual no hay traducción que realmente le permita hacer lo que quiera con la red neuronal. Hasta que no contestes esas preguntas (las esquivas en tus comentarios anteriores), es imposible dar una buena respuesta.

Puedo dar una respuesta de ejemplo , eso funcionaría si daba ciertas respuestas a las preguntas anteriores. Por ejemplo, si está leyendo en cadenas con una longitud arbitraria pero compuesto de un vocabulario pequeño de palabras separadas por espacios, entonces sugeriría un esquema de traducción en el que realiza N entradas, una para cada palabra en el vocabulario, y usa un neuronal recurrente red para alimentar las palabras una a la vez estableciendo la entrada correspondiente en 1 y todas las demás en 0.


No está exactamente claro lo que estás tratando de hacer, pero creo que parece estar relacionado de alguna manera con lo que la gente llama "Lenguaje Natural". Hay muchas referencias sobre esto ... No soy un experto, pero sé por ejemplo que hay referencias interesantes de O''Reilly.

Desde la perspectiva NN hay muchos modelos de NN diferentes. Creo que te estás refiriendo al más popular conocido como perceptrón multicapa con un tipo de algoritmo de retropropagación, pero hay muchos modelos de memoria asociativa que pueden ser más adecuados para tu caso. Una muy buena referencia sobre esto es el libro de Simon Haykin.

Sin embargo, si tratara de hacer algo como esto, comenzaría a tratar de entender cómo la frecuencia de las letras, las sílabas y las palabras surgen juntas en el idioma inglés (?).

Espero que haya ayudado. Como dije antes, no soy un experto en el campo.


Solución 1: A = Alt (65) = 65 Bin = 01000001

Solución 2: Agregue palabras a la base de datos del diccionario y agregue el campo id (int). Convierta el campo de id a binario.

En NN use letras o ID de palabras (en binario)