在Java文本文件中查找单词总数的最佳方法是什么?我认为Perl是找到像这样的东西最好的。如果这是真的,那么从Java中调用Perl函数将是最好的?你在这种情况下会做什么?任何更好的想法?在Java中确定文件的总字数的最佳方法是什么?
4
A
回答
10
恭喜你已经在最大的语言问题之一绊倒!什么是一个词?据说一个词是唯一一个实际上意味着它的词。整个语言学领域专门用于词义/单位意义 - 形态学。
我假设你的问题涉及用英语计算单词。但是,由于语言的差异,创建一个与语言无关的词计数器/解析器几乎是不可能的。例如,有人可能会认为只处理由空格分隔的字符组就足够了。但是,如果你看一下在日本下面的例子中,你会看到,这种办法行不通:
これは日本语の例文です
这个例子包括3个不同的字,其中没有一个是分开的。由空格。通常情况下,日语单词边界使用基于字典的方法进行分析,并且有许多商业库可用于此目的。我们很幸运有英文空间!我相信印度语,中国和韩国也有类似的问题。
如果此解决方案将以多语言输入的任何方式实际部署,根据要解析的语言插入不同的字数统计方法将很重要。
我认为第一个答案是一个很好的答案,因为它使用Java的Unicode空白值作为分隔符的知识。它使用下面的正则表达式进行匹配:\p{javaWhitespace}+
-3
我在文件中的每个字符初始化word_count
INT为1,然后循环并增加word_count
每一个空格字符除非前一个字符是一个空白字符。 (空格,制表符或换行符)
0
对定义“单词”做了一些假设,一种解决方案是使用文本流读取器打开文件并对其进行扫描,计算非连续空白的数量字符,加上一个结束,例如
this is some sample text
this is some more sample text
上面的文字会在这11个字,算作9位和1个换行符和1结束文件
2
虽然Perl可以做到这一点,我认为这是矫枉过正挂靠在/调用它来完成这种任务(除非你已经测试过了)。
- 我的建议是寻找&从代码中学习,在网络上做你需要的东西,在这里:http://schmidt.devlib.org/java/word-count.html
16
int count = 0;
Scanner sc = new Scanner(new File("my-text-file.txt"));
while (sc.hasNext()) {
++count;
sc.next();
}
1
如果你在unix上,wc -w filename
会做的。
相关问题
- 1. 在java中确定文件的MIME类型的最佳方法?
- 2. 在Java中识别特定文件类型的最佳方法是什么?
- 3. 确定标量是否拥有文件句柄的最佳方法是什么?
- 4. 确定Object是否被更改的最佳方法是什么?
- 5. 确定HTTP文件上传的MIME类型的最佳方法是什么?
- 6. 在PHP中读取大文件的最佳方法是什么?
- 7. 在Dataflow中处理GCS文件的最佳方法是什么?
- 8. 确定哪些源文件不再需要的最佳方法是什么?
- 9. 访问非确定性资源的最佳方法是什么?
- 10. 什么是确定CSS问题源的最佳方法
- 11. 确定用户位置的最佳方法是什么?
- 12. 确定ISV目录路径的最佳方法是什么?
- 13. 在Java中处理未接受方法参数的最佳方法是什么?
- 14. 加载正确的PhoneGap文件的最佳方式是什么
- 15. 在Java中自定义排序的最佳方式是什么?
- 16. 在java中扩展类funcionality的最佳方法是什么?
- 17. 在Java中动画的最佳方法是什么?
- 18. 在Java中“包装”ArrayList的最佳方法是什么?
- 19. 确定SQL Server中是否存在临时表的最佳方法是什么?
- 20. 从文件名中检索ID的最佳方法是什么?
- 21. 确定iOS上支持的字体样式的最佳方法是什么?
- 22. 什么是从文本/数据文件中读取数据的最佳方法
- 23. 从Java编写excel文件的最佳方式是什么?
- 24. 什么是使用java提取zip文件的最佳方式
- 25. 使用Java传输文件的最佳方式是什么?
- 26. 使用Java构建HTML文件的最佳方式是什么?
- 27. 在ASP.NET MVC5中绑定@ Html.DropDownListFor的最佳方法是什么?
- 28. 在Java中阅读Outlook .msg文件的最佳库是什么?
- 29. 检查apache的access.log文件的最佳方法是什么?
- 30. 确定文件是否为空(php)的最佳方法?
请谨慎使用Java中的\ p {javaWhiteSpace},因为它不对应于您可能在Perl中找到的Unicode \ p {Space}属性。两个代码点都包括0009,000A,000B,000C,000D,00A0,2007和202F。Java空白还包括001C,001D,001E,它们不是Unicode空格。 Java空白忽略了几个Unicode空白代码点,其中最令人震惊的是00A0,NO-BREAK SPACE。这让我陷入麻烦之前,所以要非常小心。 – tchrist 2010-10-30 05:44:03