/ /特定のPDF内の特定の単語の数をどのように取得しますか? -pdf

あなたはどのように与えられたPDF内の与えられた単語の数を得るでしょうか? - pdf

面接の質問

私はインタビューでこの質問をされましたが、答えは特定のプログラミング言語、プラットフォームまたはツールに固有である必要はありません。

質問は次のように表現されました:

特定のインスタンス数をどのように取得しますかPDF内の単語。答えは、プログラミング、プラットフォーム、またはツール固有である必要はありません。メモリと速度の効率的な方法でそれをどのように行うかを教えてください

私は次の理由でこの質問を投稿しています:

  1. コンテキストをよりよく理解するため -私はまだこの質問の文脈を理解できていません。インタビュアーがこの質問をすることで何を探しているのでしょうか。
  2. 多様な意見を得るには -私はプログラミング言語(C#)のスキルに基づいてそのような質問に答える傾向がありますが、これを行うための他の有効なオプションがあるかもしれません。

あなたの興味に感謝します。

回答:

回答№1は4

それを行うためのプログラムを作成する必要がある場合、次のようなPDFファイルからテキストを抽出できるPDFレンダリングライブラリを見つけます。 Xpdf そして、単語を数えます。これが1つのタスクであるか、非本番品質のタスクのために自動化する必要があるものである場合は、ファイルをpdftotextプログラムにフィードし、出力ファイルをpythonで解析し、単語に分割して、辞書と発生数のカウント。

この面接の質問をしているとしたら、私はいくつかのことを探しているでしょう。

  1. このタスクの設定の違いを理解する: 1回限りのスクリプトthingyvs本番コード
  2. しようとしない 自分でレンダリングしたPDFを実装し、ライブラリを見つけようとしています 代わりに。

今、私はこれをランダムから期待していませんPDFの経験がない候補者ですが、PDFとは何か、「単語」とは何かについて非常に有意義な議論をすることができます。ご覧のとおり、PDFには、座標を含む文字列の束としてテキストが保存されています。各文字列は必ずしも単語ではありません。多くの場合、単語は2つの完全に別個の文字列に分割され、ドキュメント内に完全に配置されて1つの単語になります。これが、PDFドキュメント内の単語を検索すると、奇妙な結果が得られる場合がある理由です。したがって、ドキュメントに単語検索を実装するには、これらの文字列を接着して戻す必要があります(pdftotextがそれを処理します)。

それは悪い質問ではありません。


回答№2については2

あなたは使うことができます トライ 与えられた単語の数を取得するのは非常に簡単です。


回答№3の場合は0

Javaを使用したオープンソースソリューションをお勧めします。まず、PDFファイルを解析し、を使用してすべてのテキストを抽出する必要があります ティカ.

次に、正しい質問はどのようにするかだと思いますテキスト内の単語の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
}
}