Как бы вы подсчитали заданное слово в заданном PDF? - PullRequest
5 голосов
/ 24 января 2012

Вопрос для интервью

Мне задали этот вопрос в интервью, и ответ не должен быть конкретным языком программирования, платформой или инструментом.

Вопрос был сформулирован следующим образом:

Как бы вы получили количество экземпляров данного слова в PDF.Ответ не должен зависеть от программирования, платформы или инструмента.Просто дайте мне знать, как бы вы сделали это эффективным способом памяти и скорости

Я задаю этот вопрос по следующим причинам:

  1. Чтобы лучше понятьcontext - Я до сих пор не могу понять контекст этого вопроса, что может искать интервьюер, задавая этот вопрос?
  2. Чтобы получить разные мнения - Я склонен отвечать на такиевопросы, основанные на моих навыках работы с языком программирования (C #), но для этого могут быть и другие действительные варианты.

Спасибо за проявленный интерес.

Ответы [ 3 ]

4 голосов
/ 24 января 2012

Если бы мне пришлось написать программу для этого, я бы нашел библиотеку рендеринга PDF, способную извлекать текст из файлов PDF, например Xpdf , и затем считать слова.Если бы это была однозадачная задача или что-то, что нужно было автоматизировать для задачи непроизводственного качества, я просто передал бы файл в программу pdftotext, а затем проанализировал выходной файл с помощью python, разделив его на слова, поместив их всловарь и подсчет количества вхождений.

Если бы я задавал этот вопрос для интервью, я бы искал пару вещей:

  1. понимая разницу между настройками для этой задачи: одноразовый сценарий вещь против производственного кода
  2. , не пытающийся реализовать PDF-рендеринг самостоятельно и вместо этого поиск библиотеки.

Теперь я не ожидал бы этого от любого случайного кандидатабез опыта работы с PDF, но вы можете провести очень содержательное обсуждение того, что такое PDF и что такое «слово».Видите ли, PDF хранит текст в виде набора строк с координатамиКаждая строка не обязательно является словом.Часто слова будут разбиты на пару совершенно отдельных строк, которые абсолютно позиционируются в документе, чтобы составить одно слово.Вот почему иногда при поиске слов в документе PDF вы получаете странные результаты.Таким образом, чтобы реализовать поиск слов в документе, вам нужно склеить эти строки обратно (pdftotext позаботится об этом за вас).

Это совсем не плохой вопрос.

2 голосов
/ 24 января 2012

Вы можете использовать Trie Очень легко получить количество заданных слов.

0 голосов
/ 02 октября 2013

Я бы предложил решение с открытым исходным кодом, использующее Java.Сначала вам нужно будет проанализировать pdf-файл и извлечь весь текст, используя Tika .

Затем я считаю, что правильный вопрос заключается в том, как найти TF (частоту терминов) слова втекст.Я не буду беспокоить вас определениями, потому что вы можете достичь этого, просто отсканировав извлеченный текст и посчитав частоту слова.

Пример кода будет выглядеть следующим образом:

 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
        }
    }     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...