面试问题
我在一次面试中被问到这个问题,答案不一定是特定的编程语言、平台或工具。
问题的措辞如下:
如何在PDF中获得给定单词的实例计数。答案不一定是编程、平台或特定工具。只要让我知道你会怎么做,以一种记忆和速度高效的方式
我提出这项质询的理由如下:
谢谢你的兴趣。
发布于 2012-01-24 04:01:24
如果我必须编写一个程序来完成它,我就会找到一个PDF呈现库,它能够从PDF文件(如Xpdf )中提取文本,然后计数单词。如果这是一项任务,或者是需要自动化的非生产质量任务,我只需将该文件输入pdftotext程序,然后用python解析输出文件,分割成单词,将它们放入字典并计数发生的次数。
如果我问这个面试问题,我会找几件事:
现在我不会期望任何没有PDF经验的随机候选人,但你可以有一个非常有意义的讨论什么是PDF和什么是“单词”。您可以看到,PDF将文本存储为一串具有坐标的字符串。每个字符串不一定是一个单词。通常情况下,单词会被分割成两个完全独立的字符串,这些字符串在文档中被绝对定位为一个单词。这就是为什么有时候在PDF文档中搜索单词时,你会得到一些奇怪的结果。因此,要在文档中实现单词搜索,就必须将这些字符串粘合在一起(pdftotext为您处理这个问题)。
这问题一点也不坏。
发布于 2012-01-24 06:08:22
你可以使用特瑞,很容易得到给定单词的计数。
发布于 2013-10-02 09:03:25
我建议使用Java的开源解决方案。首先,您必须解析pdf文件并使用蒂卡提取所有文本。
那么,我相信正确的问题是如何在文本中找到一个词的词频。我不会用定义来麻烦您,因为您可以通过扫描提取的文本和计数单词的频率来实现这一点。
示例代码如下所示:
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
}
} https://stackoverflow.com/questions/8981804
复制相似问题