Jose Alexis Correa Valencia
@jalexiscv, hace 2 meses..
Cover 2 5E350A9986B3E

Detección de publicaciones duplicadas en la programación de comunidades QAC mediante semántica latente y reglas de asociación


La programación de sitios web de preguntas y respuestas basadas en la comunidad (PCQA) como Stack Overflow permite a los programadores encontrar soluciones de trabajo para sus preguntas. A pesar de las pautas detalladas de publicación, las preguntas duplicadas que se han respondido con frecuencia se crean. Para abordar este problema, Stack Over-flow proporciona un mecanismo para que los usuarios acreditados marquen manualmente preguntas duplicadas. Este es un esfuerzo laborioso y lleva a que muchas preguntas duplicadas permanezcan sin ser detectadas. Las metodologías de detección de duplicados existentes de los sitios web tradicionales de respuesta a preguntas basadas en la comunidad (CQA) son difíciles de adoptar directamente a PCQA, ya que las publicaciones de PCQA a menudo contienen código fuente que es lingüísticamente muy diferente de lenguas naturales. En este artículo, proponemos una metodología diseñada para el dominio PCQA para detectar preguntas duplicadas. Modelamos la detección como un problema de clasificación sobre pares de preguntas. Para extraer las características de los pares de preguntas, nuestra metodología aprovecha los vectores de palabras continuos de la literatura de aprendizaje profundo, las características del modelo de temas y los pares de frases que coexisten con frecuencia en preguntas duplicadas extraídas mediante sistemas de traducción automática. Estas características capturan similitudes semánticas entre preguntas y producen un rendimiento sólido para la detección de duplicados. Los experimentos en una variedad de conjuntos de datos del mundo real demuestran que nuestro método funciona muy bien; en algunos casos, más del 30% de mejora en comparación con los puntos de referencia de última generación. Como producto de una de las características propuestas, la característica de puntuación de asociaciones, hemos extraído un conjunto de frases asociadas de preguntas duplicadas sobre Stack Overflow y abierto el conjunto de datos al público.

Palabras clave Respuesta a preguntas basadas en la comunidad; Semántica latente; Reglas de asociación; Pregunta calidad; Clasificación

Los sitios de respuesta a preguntas basadas en la comunidad (CQA) como Quora, Baidu Zhidao y Stack Exchange han crecido en popularidad en los últimos años. Los sitios de CQA son una alternativa prometedora para la búsqueda web tradicional, ya que los usuarios tienen consultas que a menudo son subjetivas, abiertas y requieren opiniones de expertos. Para atender la multitud de intereses para su comunidad, Stack Exchange tiene un conjunto de subdominios que se enfocan en un tema o tema en particular.

Stack Overflow, un sitio de consulta y consulta de la comunidad de programación (PCQA), es un subdominio en Stack Exchange creado para programar preguntas relacionadas. A pesar de las pautas detalladas sobre la ética de publicación (y posiblemente las mejores intenciones de los usuarios), una gran cantidad de preguntas creadas son de baja calidad [R11]. Las preguntas duplicadas, preguntas que se crearon y respondieron anteriormente, son frecuentes, aunque se recuerda a los usuarios que busquen el contenido antes de crear una nueva publicación. Para reducir la cantidad de preguntas duplicadas, Stack Overflow alienta a los usuarios acreditados a marcar manualmente las preguntas duplicadas. Este enfoque es laberíntico, pero lo más importante es que una gran cantidad de preguntas duplicadas permanecen sin ser detectadas. Un sistema de detección de duplicación de alta calidad mejorará considerablemente la experiencia del usuario: para usuarios inexpertos que crean una nueva pregunta, puede sugerir una publicación relacionada antes de publicarla; Para usuarios experimentados, puede sugerir posibles publicaciones duplicadas para la verificación manual.

Question duplication is a pervasive issue in CQA in gen-eral, and a number of studies have looked into related prob-lems, including finding similar questions [27, 32, 6, 7], andgenerating answers for new questions from past answers [23,28]. These works framed the task as a classification or pre-diction task, and relied on a number of extracted features totrain a model. It is important to note, however, that featuresexplored in these methods may not necessarily suitable toPCQA as PCQA posts often contain source code from pro-gramming languages which are linguistically very differentto natural languages.

Hay pocos estudios que exploraron la duplicación de preguntas para el dominio PCQA [1, 31]. El trabajo en [31] abordó la detección de preguntas duplicadas en Stack Overflow generando características usando título, descripción, información tópica y etiqueta para clasificar si un par de preguntas es un duplicado. El trabajo en [1] mejoró este método al extender las características adoptadas de [24] que extraían información de las publicaciones de Twitter. Además, realizaron un análisis exhaustivo para saber por qué los usuarios crean publicaciones duplicadas. En este documento, buscamos mejorar el rendimiento de referencia establecido por su sistema.

Nuestra metodología sigue el mismo enfoque de trabajos anteriores al enmarcar la tarea de detección de duplicación como un problema de clasificación supervisado. De ahora en adelante nos referiremos a nuestro sistema como PCQADup. Dado un par de preguntas, PCQADup genera tres tipos de características. La similitud del vector, la primera de sus características, representa las preguntas como vectores continuos en un espacio de alta dimensión. En la literatura de aprendizaje profundo, se propuso word2vec [20] para aprender vectores de palabras / incrustaciones de manera eficiente a partir de grandes cuerpos de texto, y se ha demostrado que captura eficazmente la semántica de las palabras. doc2vec, una extensión de word2vec, se desarrolla para generar incrustaciones para cualquier secuencia de palabras arbitrarias [18]. Inspirados por el éxito de estos métodos neuronales, calculamos la representación doc2 del título y el contenido del cuerpo de una publicación, y medimos la similitud entre un par de preguntas en función de las medidas de similitud del coseno vectorial. El segundo tipo de características es la similitud tópica, calculada utilizando un modelo de tema para extraer temas de textos cortos. La similitud de un par de preguntas se mide calculando la similitud de las distribuciones tópicas entre el par. El último tipo de características es la puntuación de asociación. Primero, los pares de asociación de minas, es decir, pares de frases que ocurren con frecuencia en preguntas duplicadas conocidas, mediante la adopción de un método de alineación de palabras desarrollado en la literatura de traducción automática. Para generar el puntaje de asociación para un par de preguntas, entrenamos un perceptrón que toma pares de asociación y características léxicas como entrada. La idea de usar frases asociadas se ha explorado en la respuesta a preguntas de la base de conocimiento (KBQA) para clasificar las consultas generadas en KBQA curada [4] o medir la calidad de la paráfrasis de preguntas en KBQA abierto [29]. Nuestro trabajo es el primero en adaptar la idea para detectar preguntas duplicadas en los sitios web de PCQA.

Para resumir, las principales contribuciones del artículo son:

  1. Características novedosas para la detección de preguntas duplicadas: representamos las preguntas como vectores continuos en un espacio de alta dimensión. Demostramos que las incrustaciones neuronales capturan la similitud matemática mejor en comparación con la representación vectorial tradicional del espacio, como tf-idfin, la tarea de detección de preguntas duplicadas.
  2. Pares de asociación para PCQA: extraemos más de 130 pares de asociación de preguntas duplicadas conocidas en StackOverflow. Los datos contienen pares de frases que con frecuencia aparecen en pares de preguntas duplicadas y son específicos del dominio para PCQA. El código fuente para los pares de asociación minera y los pares minados están disponibles públicamente para su descarga 4.
  3. Evaluación experimental exhaustiva: además de Stack Overflow, también probamos PCQAD en otros subdominios de Stack Ex-change. Los resultados sugieren que PCQADupoutper-forma el punto de referencia de vanguardia en más del 30% en términos de retiro del mercado para detección de duplicados. El resto del documento está organizado de la siguiente manera. En la Sección 2, damos una perspectiva de alto nivel de nuestro sistema PCQADup. En la Sección 3, describimos las características que hemos desarrollado para PCQADup. Reportamos resultados experimentales en la Sección 4. En la Sección 5, revisamos el trabajo relacionado. Finalmente, discutimos implicaciones, advertencias y concluimos en la Sección 6

2.Descripción general de la metodología PCQAD

Tiene tres componentes: 1) preprocesamiento; 2) modelado de características; y 3) clasificación. Detallamos 1) y 3) aquí, y dejamos 2) para la Sección 3.

2.3. Preprocesamiento

Procesamos previamente el texto y limpiamos la entrada como primer paso. El preprocesamiento de texto a menudo es necesario para estandarizar la representación de tokens. Los procedimientos de preprocesamiento involucran tanto el procesamiento de texto general como el específico del lenguaje de programación.

  • Revisión y limpieza. Las publicaciones de PCQA contienen etiquetas HTML, tales como "<font>" y "<a>". Eliminamos estas etiquetas HTML y conservamos solo el contenido textual. También eliminamos las publicaciones dentro de los títulos completos, ya que a menudo no son publicaciones válidas.
  • Poda y la tokenización de las palabras. Tokenizamos estas interacciones usando Stanford Parser y podamos las palabras de parada 5.
  • Lematización. tiempo presente versus tiempo pasado). Normalizamos las variaciones por lematización, por ejemplo, convirtiendo "en línea" en "en línea".
  • Mapeo de símbolos. Para PCQA, las publicaciones a menudo tienen símbolos como "$" (dólar) y "{" (llave) ya que contienen código fuente. De la inspección preliminar vemos que las preguntas ocasionalmente usan el nombre de estos símbolos, por ejemplo, "¿Cuál es el propósito del operador $ en una declaración de función de JavaScript?" Vs. "¿Alguien puede explicar el signo de dólar en Javascrip-t?" . Como tal, asignamos todos los símbolos utilizados en la programación de idiomas6 a sus nombres de símbolos (es decir, "$" a "dólar"). Tenga en cuenta que solo asignamos símbolos que se tokenizan como un token único, por lo que, por ejemplo, "div class=" no se convertirá. Además, esta conversión se realiza solo en los títulos de las preguntas, ya que los cuerpos de las preguntas pueden contener código fuente donde la conversión de símbolos puede no ser sensible.

2.2 Clasificación binaria

Tratamos la tarea de detección de duplicación como un problema de clasificación binaria. Dado un par de preguntas, la tarea es clasificar si son duplicados o no. Las dos fases de clasificación en nuestro trabajo se describen a continuación.

Fase de entrenamiento del clasificador. Para entrenar un clasificador, primero extraemos un conjunto de características del par de preguntas. Se exploran tres tipos de características: 1) similitud de vectores; 2) similitud tópica; y 3) puntaje de asociación. La generación de características se detalla en la Sección 3. En total, se generan tres características para la similitud de vectores, tres características para la similitud tópica y una característica para la puntuación de asociación. En términos de clasificadores, experimentamos con los siguientes modelos: árbol de decisión [5], vecinos más cercanos a K (K-NN) [2], máquinas de vectores de soporte (SVM) [14], regresión logística [26], bosque aleatorio [ 15] andnaive Bayes [9]. En términos de datos de entrenamiento, la proporción de pares no duplicados (ejemplos negativos) a pares duplicados (ejemplos positivos) es muy sesgada. Por ejemplo, en el volcado de StackOverflow que procesamos (Sección 4.1.1), 716,819 publicaciones válidas están etiquetadas con “java” (no distingue entre mayúsculas y minúsculas), entre las cuales solo 28,656 publicaciones están marcadas como duplicadas (4.0%). Para crear un conjunto de datos más equilibrado, sesgamos la distribución por muestreo de pares no duplicados [1, 28] Fase de detección duplicada. Dado un par de preguntas (m, t), donde hay una pregunta existente y es una pregunta recientemente publicada, el clasificador capacitado predice si son du-plicate. Para construir estos pares de preguntas, llevamos a cabo un enfoque de filtrado dinámico para filtrar las preguntas que pertenecen a un lenguaje o técnica de programación diferente usando etiquetas. Las etiquetas son entradas obligatorias cuando se publica una nueva pregunta en Stack Overflow, y como tales son indicadores confiables del tema al que pertenece la pregunta. . Específicamente, eliminamos las preguntas existentes que no tienen etiquetas comunes, lo que reduce considerablemente el espacio de búsqueda de preguntas duplicadas candidatas. Además, filtramos las preguntas que no tienen respuestas. Luego generamos pares de preguntas para todas las preguntas restantes, y calculamos características para el clasifierto que predice las etiquetas.

3. Modelado de características

Desarrollamos tres tipos de características para detectar preguntas duplicadas. Estas características utilizan características textuales superficiales (Sección 3.3) y características latentes (Sección 3.1 y 3.2) de las preguntas.

3.1 Similitud de vectores

Un enfoque convencional para vectorizar texto es computar el puntaje tf-idf para documentos. Nosotros usaremos tf-idf para calcular la similitud del coseno para un par de preguntas, y la similitud sirve como una característica de referencia. En la comunidad de aprendizaje profundo, los métodos neuronales para aprender incrustaciones de palabras / vectores han tenido muchos éxitos para una variedad de tareas de procesamiento del lenguaje natural (PNL). word2vec, un trabajo seminal propuesto por [20], es una arquitectura neuronal eficiente para aprender incrustaciones de palabras mediante muestreo negativo utilizando grandes bloques de texto. Los vectores de párrafo, ordoc2vec, se introdujeron luego en extendiendo word2vecto para aprender las secuencias de palabras incrustadas [18] .doc2vecis niega la granularidad de la secuencia de palabras: podría aprender incrustaciones para una oración, párrafo o documento. Originalmente se propusieron dos implementaciones: dbow y dmpv. El trabajo en [17] evaluó dbowanddmpv en una gama de tareas extrínsecas y descubrió que el arco simple se entrena más rápido y supera a dmpv. Por lo tanto, utilizamos la arquitectura arcoíris para todos los experimentos que involucran doc2vecin el paper.doc2vechyper- parámetros de parámetros utilizados en nuestros experimentos se detallan en la Tabla 1. Dada la pregunta objetivo (la nueva pregunta que se formula) y la pregunta maestra (una pregunta previamente respondida), la tarea es clasificar si es un duplicado de ellas. Generamos vectores para los títulos del par (tm, tt), el contenido del cuerpo (bm, bt) y la concatenación de títulos y contenido del cuerpo (cm, ct). Entrenamos tres modelos doc2vec, uno para cada tipo de vector. Para el cálculo de similitud de coseno, lo calculamos entre (tm, tt), (bm, bt) y (ct, cm), como se ilustra en la Figura 1. En total hay tres similitudes de coseno para cada par de preguntas. A pesar de su simplicidad, estas características son muy efectivas para la detección de duplicados.

Fuentes
  1. ((us_US)) | Ed - DetectingDuplicate Posts in Programming QACommunities via Latent Semantics and Association Rules - -
  2. ((us_US)) | Ref10 - M. Collins. Discriminative Training Methods forHidden Markov Models: Theory and Experimentswith Perceptron Algorithms. InProc. of the EMNLP2002 - Páginas 1–8
  3. ((us_US)) | Ref9 - T. F. Chan, G. H. Golub, and R. J. LeVeque.Updating Formulae and A Pairwise Algorithm forComputing Sample Variances. InProc. of the 5thSymposium in Computational Statistics (COMPSTAT1982) - Páginas 30–41, 1982
  4. ((us_US)) | Ref8 - R. Caruana and A. Niculescu-Mizil. An empiricalcomparison of supervised learning algorithms. InProc.of the ICML 2006, - Páginas 161–168
  5. ((es_CO)) | Ref7 - X. Cao, G. Cong, B. Cui, C. S. Jensen, and Q. Yuan.Approaches to Exploring Category Information forQuestion Retrieval in Community Question-AnswerArchives.ACM Transactions on Information Systems,30(2):7, 2012. - -
  6. ((es_CO)) | Ref6 - X. Cao, G. Cong, B. Cui, and C. S. Jensen. AGeneralized Framework of Exploring CategoryInformation for Question Retrieval in CommunityQuestion Answer Archives. InProc. of the WWW2010, - Páginas 201–210
  7. ((es_CO)) | Ref5 - L. Breiman, J. H. Friedman, R. A. Olshen, and C. J.Stone.Classification and Regression Trees.Wadsworth, 1984. - -
  8. ((us_US)) | Ref4 - J. Berant and P. Liang. Semantic Parsing viaParaphrasing. InProc. of the ACL 2014 - Páginas 1415–1425.
  9. ((us_US)) | Ref3 - B. Bazelli, A. Hindle, and E. Stroulia. On thePersonality Traits of StackOverflow Users. InProc. ofthe ICSM 2013, - -
  10. ((es_CO)) | Ref2 - N. S. Altman. An introduction to kernel andnearest-neighbor nonparametric regression.TheAmerican Statistician, 46(3):175–185, 1992. - -
  11. ((es_CO)) | Ref1 - M. Ahasanuzzaman, M. Asaduzzaman, C. K. Roy, andK. A. Schneider. Mining Duplicate Questions in StackOverflow. InProc. of the MSR 2016, pages 402–412. -
Comentario
Image
Comentarios