Al realizar una comparación, ¿cómo puedo lograr que los autores respondan realmente a una solicitud de código fuente?

Estoy haciendo mi doctorado en ciencias de la computación y estoy trabajando en visión artificial. Se me ocurrió un algoritmo que mis supervisores consideran prometedor y publicable. Me tomó mucho tiempo obtener estos resultados.

Ahora lo que pasa es que tengo que comparar mi código con otros documentos recientes que abordan el mismo problema. Lo que entiendo es muy necesario para mostrar cómo mi trabajo se compara con el trabajo anterior. Mis supervisores quieren que compare con al menos 4 o 5 otros documentos recientes.

El problema es que la base de datos que estoy usando es muy reciente y ningún artículo de revista la ha usado hasta ahora. Entonces, la otra solución que me queda es leer los artículos de la revista, entenderlos e intentar implementar su código.

Esto definitivamente llevará demasiado tiempo y, en mi opinión, perderá mucho tiempo. Estos artículos de revistas son muy avanzados (obviamente) e implementar sus resultados por mi cuenta me llevará mucho tiempo cuyo único propósito es obtener un resultado.

Una solución sería enviar un correo electrónico a los autores y pedirles cortésmente su código fuente, pero descubrí que muchos autores no responden.

Esta pregunta ¿Puedo solicitar el código detrás de un trabajo de investigación del autor? declararon que era más probable que obtuvieran una respuesta si prometían agregar a ese autor como coautor en su artículo. No quiero hacer eso, ya que sería deshonesto, ya que no veo ningún sentido en agregar al autor a mi artículo solo porque comparé mi trabajo con el suyo, y si debo compararlo con 5 artículos, será un tiempo muy largo . lista de autores.

Tal vez estoy pidiendo algo que está mal visto. ¿O tal vez no preguntar de la manera correcta?

Envié un correo electrónico a los autores y les pedí su código únicamente para probar su trabajo en mi base de datos con fines comparativos, pero no obtuve respuestas. ¿Estoy haciendo algo mal?

"Estos artículos de revistas son muy avanzados (obviamente) e implementar sus resultados por mi cuenta me llevará mucho tiempo cuyo único propósito es obtener un resultado". - Y lo dices mientras puedes sacar una publicación de ello. Si bien veo preocupaciones éticas en negarse a compartir cualquier código fuente requerido para reproducir experimentos, y no responder en absoluto ciertamente entra en territorio grosero, suponiendo que haya preguntado con un nivel razonable de cortesía, desde el punto de vista de esos otros autores, verificar si pueden proporcionarle dicho código fuente tomará ...
... bastante de su tiempo, que no necesariamente contribuirá directamente a su investigación. (tl; dr: deberían responder, pero puedo ver por qué es posible que no quieran hacerlo).
Supongo que cada uno de esos 5 documentos informó la base de datos con la que probaron y los resultados que obtuvieron. ¿Puedes conseguir esas bases de datos? Si es así, tal vez podría ejecutar su código en cada base de datos y comparar sus resultados con los resultados que informaron. Puede ser más fácil que intentar replicar su código o incluso ejecutar su código. La situación ideal sería si los 5 artículos usaran la misma base de datos; entonces solo necesitas hacer una carrera.
@mhwombat Gracias, es una buena sugerencia, y sí, mencionaron sus bases de datos, pero todavía tengo que ver un documento que haya seguido este formato. Por eso nunca se me pasó por la cabeza.
Comentario adicional: este tipo de problemas es una de las razones por las que las revistas deberían seguir el ejemplo de Ipol ipol.im , una revista en la que los artículos se publican junto con su código implementado en un lenguaje unificado, lo que permite a los lectores probar y comparar ampliamente.
@BenoîtKloeckner: ¿"en un lenguaje unificado"?
@ORMapper: quise decir que todos los códigos deben escribirse en un lenguaje de programación fijo determinado, de modo que se implemente de la misma manera para todos los documentos. Esto es probablemente más para la comodidad del editor, que ejecuta todos los algoritmos publicados en forma de placa (puede ir ahora y probar cualquier algoritmo de cualquier artículo publicado por Ipol en cualquiera de las imágenes en su disco duro), pero también hacer que las comparaciones sean más legítimas.
@BenoîtKloeckner: Ah, sí, solo quería asegurarme de interpretarlo correctamente. Una restricción útil en aras de la comprensión de todas las obras dentro de un lugar, y ciertamente una buena idea en campos donde tal restricción es posible.
He tenido experiencias similares, por lo que puedo relacionarme con su frustración. Una cosa a tener en cuenta es que los autores pueden no tener el código fuente disponible en ninguna forma utilizable. Un escenario común es que un miembro junior del equipo hizo toda la codificación real. Y también es relativamente probable que esa persona ya no trabaje en la academia, ya no tenga acceso a su código y tenga poca memoria o interés en su vida anterior. Dependiendo de lo desesperado que esté, puede intentar escribir cartas en papel y enviarlas registradas; es menos probable que las ignoren.

Respuestas (2)

Estoy haciendo mi doctorado en ciencias de la computación. Esto definitivamente tomará demasiado tiempo y, en mi opinión, perderá mucho tiempo.

Bueno, de eso se trata un PHD en CS en áreas y algoritmos experimentales. Debe preparar su algoritmo, implementarlo, implementar trabajos anteriores y comparar su trabajo con ellos. Por lo tanto, cuánto tiempo le tomará no le interesa a nadie más que a usted y a su supervisor. Entonces, esta línea de argumentación es ingenua.

Una solución sería enviar un correo electrónico a los autores y pedirles cortésmente su código fuente.

Sí, pero no es el único. Puede solicitar sus conjuntos de datos y ejecutar su algoritmo en sus conjuntos de datos, en lugar de crear otro conjunto de datos. Además, las comunidades de algoritmos experimentales tienen instancias de referencia conocidas y todos los documentos relacionados trabajan en ellas para facilitar la comparación de los resultados. ¿Por qué necesita construir otro conjunto de datos? Está bien usar este conjunto de datos adicional DESPUÉS de probar su algoritmo en esas instancias de referencia de la comunidad. También puede enviar sus conjuntos de datos a sus "competidores" y pedirles que realicen sus experimentos en sus conjuntos de datos y simplemente le den sus resultados. Prepare sus experimentos en relación con los documentos más antiguos,

Si le gusta tanto compartir código, también puede enviarles su código fuente, brindarles una explicación sobre cómo compilarlo y usarlo, y luego permitirles realizar experimentos en sus PC y brindarle los resultados relativos a su trabajo. Sé que este pensamiento probablemente nunca pasó por tu mente. ¿Por qué? " Pueden robar mi trabajo, ¿cómo sé que me darán los resultados correctos? Es demasiado trabajo hacerlo, no les confío mi código src ". Y ahora sabes por qué la gente no quiere compartir su código.

Pero probablemente también olvidó la forma más fácil de resolver su problema. Deje que su supervisor se comunique con el primer autor Y con el resto de los autores. A menos que sea un estudiante de doctorado excepcional con muchos documentos increíbles, usted es prácticamente el Sr. Nadie y la gente ignorará fácilmente sus solicitudes. Es más difícil hacérselo a su supervisor (a menos que también sea el Sr. Nadie). Por lo general, la gente no quiere decir NO a futuros revisores, colaboradores y miembros respetados de la comunidad. También es importante enviar CC a todos los autores de artículos. El primer autor (estudiante de doctorado) podría proteger su código y ocultar su solicitud a su supervisor. Si envía CC al supervisor, es posible que se vea obligado a compartir su código o al menos responder.

Por último, pero no menos importante: sé amable al preguntar.

Gracias por su excelente respuesta. Sí, la pérdida de tiempo del comentario fue desde mi punto de vista. Como tendré que implementar su trabajo, eso podría llevar semanas o meses solo para obtener un resultado para comparar. Esto quería evitarlo y es por eso que envié un correo electrónico a los autores... Pedirles que les envíen mi conjunto de datos para que lo prueben es una gran idea, lo agregaré como una opción en mis futuros correos electrónicos... Sí, estoy paranoico acerca de compartir mi código como mío no está publicado, mientras que el de ellos está publicado, así que no puedo robar su trabajo que ya está publicado... Y sí, le preguntaré a mi supervisor. Gracias de nuevo por su respuesta detallada.
Tenga en cuenta que, a veces, es beneficioso implementar las ideas de otras personas, ya que puede combinar fácilmente su enfoque con el suyo. En este sentido, esta “pérdida” de tiempo inicial puede aportar varios beneficios más adelante. Si logras ser el tipo que realmente sabe cómo implementar todos los métodos de la competencia (o los más importantes), te dará una gran ventaja más adelante, cuando otras personas intenten alcanzarte.
<<"No les confío mi código src". Y ahora sabe por qué la gente no quiere compartir su código.>> Esa es una preocupación extraña dado que sus artículos ya están publicados.

La reproducibilidad en informática es un área importante de mejora. Es razonable esperar que los autores pongan a disposición el código fuente de los algoritmos que presenten. Escuché que algunas revistas y conferencias están presionando a los autores para que hagan que el código fuente esté disponible públicamente (aunque personalmente no me he encontrado con eso).

En mi experiencia, la mayoría de los científicos ponen a disposición su código fuente. No hacerlo arroja serias dudas sobre la legitimidad de su resultado y es contrario a la premisa normal de la ciencia de la esfera pública. También es bastante difícil de justificar, ya que compartir el código fuente no tiene ningún costo asociado.

Ser un doctorado en ciencias de la computación seguramente no se trata de volver a implementar algoritmos existentes, excepto tal vez por razones pedagógicas. Tienes razón en que es una pérdida de tiempo. ¡Simplemente no hay una buena razón para hacerlo cuando el código podría alojarse en github de forma gratuita!

Una buena estrategia es la siguiente.

  • Comience con el autor de correspondencia, o primer autor. Dígales lo que está haciendo, que tiene la intención de citar su trabajo y que le gustaría comparar su método con el de ellos. Sea cordial y siéntase libre de decirles lo que le gusta de su trabajo. Lo más probable es que sea una persona genial.
  • Si no responden después de un retraso razonable, digamos una semana, envíe esencialmente el mismo correo electrónico a toda la lista de autores, explique que tiene problemas para ponerse en contacto con el autor correspondiente y pregunte quién está en el puesto. para hablar en nombre del grupo. Esto todavía tiene que fallar para mí.
  • Deben proporcionar su código fuente en este punto. Si no lo hacen, es un juego justo preguntar por qué no. Dado que es un trabajo publicado, existe una especie de premisa de que deberían ponerlo a disposición, excepto si hay algo que realmente lo convierta en un problema. Es bastante sospechoso si no lo hacen. También puede recordarles que no querrá cometer ningún error al implementar su trabajo, para que la comparación sea legítima.

No te preocupes por ser un "don nadie". La idea de que un investigador solo debe responder a personas de alto estatus es simplemente ridícula. Sin embargo, lo que debe tener en cuenta es que un investigador destacado puede recibir una gran cantidad de comunicaciones entrantes. Si son profesionales, habrán establecido un triaje para eso. Lo mejor que puede hacer es facilitarles la respuesta, y probablemente estarán encantados de ayudarlo a usted, un estudiante, que alguna vez fueron.

A veces no están contentos de dar el código fuente (razones de patentes/derechos de autor, o por "código de ropa sucia"), pero están de acuerdo con proporcionar un binario. Ofrece eso como una opción.