2010-01-10 13 views
7

que estoy haciendo project.i necesitan ninguna herramienta de código abierto o la técnica para encontrar la similitud semántica entre frases donde doy de entrada como de salida y dos frases como marcador (es decir, la similitud semántica) .Can cualquiera sabe esta información . Espero recibir pronto una respuesta. Gracias a todos.similitud semántica entre oraciones

+0

Un enfoque ingenuo podría ser la primera a [palabras clave de extracto de entradas] (https://stackoverflow.com/q/17447045/1225328), y luego comparar las palabras clave obtenidas. – sp00m

+0

Pago y envío https://markroxor.github.io/gensim/static/notebooks/WMD_tutorial.html –

Respuesta

19

Salma, me temo que este no es el foro adecuado para su pregunta, ya que no está directamente relacionada con la programación. Te recomiendo que vuelvas a hacer tu pregunta en corpora list. También es posible que desee buscar en sus archivos primero.

Aparte de eso, su pregunta no es lo suficientemente precisa, y voy a explicar lo que quiero decir con eso. Supongo que su proyecto trata de calcular la similitud semántica entre oraciones y no sobre otra cosa para la cual la similitud semántica es solo una cosa entre muchas. Si este es el caso, hay algunas cosas que considerar: en primer lugar, ni desde la perspectiva de la lingüística computacional ni de la lingüística teórica está claro qué significa exactamente el término "similitud semántica". Existen numerosos puntos de vista y definiciones diferentes, todo depende del tipo de problema que se deba resolver, las herramientas y técnicas disponibles, y el contexto del que se aproxima a esta tarea, etc. Considere estos ejemplos:

  1. Pete y Rob han encontrado un perro cerca de la estación.
  2. Pete y Rob nunca han encontrado un perro cerca de la estación.
  3. A Pete y Rob les gusta programar mucho.
  4. Patricia encontró un perro cerca de la estación.
  5. Fue un perro que encontró a Pete y Rob bajo la nieve.

¿Cuál de las frases 2-4 son similares a 1? 2 es exactamente lo contrario de 1, aún se trata de Pete y Rob (no) encontrar un perro. 3 es sobre Pete y Rob, pero en un contexto completamente diferente. 4 se trata de encontrar un perro cerca de la estación, aunque el buscador sea otra persona. 5 es sobre Pete, Rob, un perro y un evento de 'hallazgo', pero de una manera diferente que en 1. En cuanto a mí, no podría clasificar estos ejemplos según su similitud incluso sin tener que escribir un programa de computadora .

Con el fin de calcular la similitud semántica tiene que decidir primero lo que quiere ser tratado como 'semánticamente similar' y lo que no. Para calcular la similitud semántica en el nivel de la oración, lo ideal sería comparar algún tipo de representación de significado de las oraciones. La representación del significado normalmente viene como una fórmula lógica y es extremadamente compleja de generar. Sin embargo, hay herramientas que intentan hacer esto, p. Boxer

Como un enfoque simplista pero a menudo práctico, definiría la similitud semántica como la suma de las similitudes entre las palabras en una oración y la otra. Esto hace que el problema sea mucho más fácil, aunque todavía hay algunos problemas difíciles que abordar, ya que la similitud semántica de las palabras está tan mal definida como la de las oraciones. Si desea obtener una impresión de esto, eche un vistazo al libro 'Semántica léxica' de D.A. Cruse (1986). Sin embargo, hay un buen número de herramientas y técnicas para calcular la similitud semántica entre palabras. Algunos de ellos lo definen básicamente como la distancia negativo de dos palabras en una taxonomía como Word Net o la taxonomía de Wikipedia (ver this paper que describe una API para esto). Otros calculan la similitud semántica mediante el uso de algunas medidas estadísticas calculadas sobre corpus de texto grande. Se basan en la idea de que palabras similares ocurren en un contexto similar. Un tercer enfoque para calcular la similitud semántica entre las oraciones o palabras se refiere a los modelos de espacio vectorial que puede conocer a partir de la recuperación de información. Para obtener una visión general de estas últimas técnicas, consulte el capítulo 8.5 en el libro Fundamentos del procesamiento estadístico del lenguaje natural por Manning y Schütze.

Espero que esto te desperta por ahora.

+0

Esto fue muy interesante, ¡gracias por responder! – sp00m

8

he desarrollado una sencilla herramienta de código abierto que hace la comparación semántica de acuerdo con categorías: https://sourceforge.net/projects/semantics/files/

Funciona con frases de cualquier longitud, es simple, estable, rápido, pequeño en tamaño ... Aquí hay una salida de muestra:
Similitud entre las oraciones
-Pete y Rob han encontrado un perro cerca de la estación.
-Pete y Rob nunca han encontrado un perro cerca de la estación.
es: 1,0000000000


Similitud entre las frases
-Patricia encontró un perro cerca de la estación.
-Fue un perro que encontró a Pete y Rob bajo la nieve.
es: 0,405107239


Similitud entre las frases
-Patricia encontró un perro cerca de la estación.
-¡Estoy bien, gracias!
es: 0,0


Similitud entre las frases
-hello allí, ¿cómo estás?
-¡Estoy bien, gracias!
es: 0,29160592175990213



USO:

import semantics.Compare; 
public class USAGE { 

public static void main(String[] args) { 

    String a = "This is a first sentence."; 
    String b = "This is a second one."; 

    Compare c = new Compare(a,b); 
    System.out.println("Similarity between the sentences\n-"+a+"\n-"+b+"\n is: " + c.getResult()); 

    } 

} 
+0

Nice lib :) ¿Cómo generó las listas de diccionario/palabra? Necesito uno alemán. – schokocappucino

+0

Usando la utilidad DISCO y encontrando las palabras más cercanas para cada palabra de un diccionario. DISCO admite alemán, por lo que puede hacer lo mismo. –

Cuestiones relacionadas