/ / ¿Cómo obtendrías la cuenta de una palabra dada en un PDF dado? - pdf

¿Cómo obtendrías la cuenta de una palabra dada en un PDF dado? - pdf

Pregunta de la entrevista

Me han formulado esta pregunta en una entrevista, y la respuesta no tiene que ser específica del lenguaje de programación, la plataforma o la herramienta.

La pregunta fue formulada como sigue:

¿Cómo obtendrías el número de instancias de un determinado?Palabra en un PDF. La respuesta no tiene que ser específica para la programación, la plataforma o la herramienta. Solo hágame saber cómo lo haría de una manera eficiente y eficiente.

Estoy publicando esta pregunta por las siguientes razones:

  1. Para entender mejor el contexto. - Todavía no entiendo el contexto de esta pregunta, ¿qué podría estar buscando el entrevistador al hacer esta pregunta?
  2. Obtener opiniones diversas. - Tiendo a responder estas preguntas según mis habilidades en un lenguaje de programación (C #), pero puede haber otras opciones válidas para hacerlo.

Gracias por tu interés.

Respuestas

4 para la respuesta № 1

Si tuviera que escribir un programa para hacerlo, encontraría una biblioteca de procesamiento de PDF capaz de extraer texto de archivos PDF, como Xpdf y luego contar las palabras. Si se trataba de una tarea única o algo que necesitaba automatizarse para una tarea de calidad no productiva, simplemente insertaría el archivo en el programa pdftotext y luego analizaba el archivo de salida con python, dividiéndolo en palabras, colocándolos en una Diccionario y cuenta número de ocurrencias.

Si estuviera haciendo esta pregunta de entrevista, estaría buscando un par de cosas:

  1. Entendiendo la diferencia entre la configuración para esta tarea: script de una sola vez frente a código de producción
  2. no intentar Implementar PDF renderizado y tratar de encontrar una biblioteca. en lugar.

Ahora no esperaría esto de ningún azarcandidato sin experiencia en PDF, pero puede tener una discusión muy significativa sobre qué es PDF y qué es una "palabra". Usted ve, PDF almacenado texto como un montón de cadena con coordenadas. Cada cadena no es necesariamente una palabra. Muchas veces, las palabras se dividen en un par de cadenas completamente separadas que están absolutamente posicionadas en el documento para formar una sola palabra. Esta es la razón por la que a veces, cuando se buscan palabras en un documento PDF, se obtienen resultados extraños. Entonces, para implementar la búsqueda de palabras en un documento, tendrá que volver a pegar estas cadenas (pdftotext se encarga de eso por usted).

No es una mala pregunta en absoluto.


2 para la respuesta № 2

Puedes usar Trie Es muy fácil obtener el recuento de la palabra dada.


0 para la respuesta № 3

Yo sugeriría una solución de código abierto utilizando Java. Primero tendría que analizar el archivo pdf y extraer todo el texto usando Tika.

Entonces creo que la pregunta correcta es cómoencontrar el TF (frecuencia de término) de una palabra en un texto. No le molestaré con las definiciones porque puede lograrlo simplemente escaneando el texto extraído y contando la frecuencia de la palabra.

El código de muestra se vería así:

 while(scan.hasNext())
{
word = scan.next();
ha += (" " + word + " ");

int countWord = 0;
if(!listOfWords.containsKey(word))
{
listOfWords.put(word, 1); //first occurance of this word
}
else
{
countWord = listOfWords.get(word) + 1; //get current count and increment
//now put the new value back in the HashMap
listOfWords.remove(word);              //first remove it (can"t have duplicate keys)
listOfWords.put(word, countWord);      //now put it back with new value
}
}