在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. 在ng-grid中做列总数的最佳方法是什么?
- 2. 在java中确定文件的MIME类型的最佳方法?
- 3. 在Java中识别特定文件类型的最佳方法是什么?
- 4. 在Java中创建XML文件的最佳方式是什么?
- 5. 确定标量是否拥有文件句柄的最佳方法是什么?
- 6. 稳定垂直文字节奏的最佳方法是什么?
- 7. 确定Object是否被更改的最佳方法是什么?
- 8. 在C++中处理大数字的最佳方法是什么?
- 9. 在Dataflow中处理GCS文件的最佳方法是什么?
- 10. 在PHP中读取大文件的最佳方法是什么?
- 11. 在gulp.watch中过滤文件的最佳方法是什么?
- 12. 确定HTTP文件上传的MIME类型的最佳方法是什么?
- 13. 在MySql中汇总数据的最佳方式是什么?
- 14. 在AS3中确定Flash上下文的最佳方法是什么?
- 15. 总结区间数据的最佳方法是什么?
- 16. 确定哪些源文件不再需要的最佳方法是什么?
- 17. 确定ASP.net网站客户端的最佳方法是什么?
- 18. 确定ISV目录路径的最佳方法是什么?
- 19. 什么是确定CSS问题源的最佳方法
- 20. 访问非确定性资源的最佳方法是什么?
- 21. 在Java中处理未接受方法参数的最佳方法是什么?
- 22. 将数组写入文件的最佳方法是什么?
- 23. 加载正确的PhoneGap文件的最佳方式是什么
- 24. 在java中检查文件创建权限的最佳方法是什么
- 25. Swf文件:开发swf文件的最佳方法是什么?
- 26. 在Java中自定义排序的最佳方式是什么?
- 27. 在Java中动画的最佳方法是什么?
- 28. 在Java中使用序列化的最佳方法是什么?
- 29. 在Java中“包装”ArrayList的最佳方法是什么?
- 30. 在java中扩展类funcionality的最佳方法是什么?
请谨慎使用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