在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

读取全英文txt,统计单词的词频并输出

2016-7-29 15:47| 发布者: zhangjf| 查看: 679| 评论: 0

摘要: import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Set;import java.util.TreeSet;pub ...
<无详细内容>
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileReader;
  4. import java.util.ArrayList;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Set;
  8. import java.util.TreeSet;
  9. public class TestTxt {
  10. File file;
  11. String content; //保存文章内容
  12. String[] rawWords; //保存单个单词集合
  13. String[] words; //保存各个单词对应的词频
  14. int[] wordFreqs; //输入文章内容
  15. public static String txtToString(File file){ //读取文件
  16. String result = "";
  17. try{
  18. BufferedReader br = new BufferedReader(new FileReader(file)); //构造一个BufferedReader类来读取文件
  19. String s = null;
  20. while((s = br.readLine())!=null){ //使用readLine方法,一次读一行
  21. result = result + s + "n";
  22. }
  23. br.close();
  24. }catch(Exception e){
  25. e.printStackTrace();
  26. }
  27. return result;
  28. }
  29. public void splitWord(){ //对文章根据分隔符进行分词,将结果保存到rawWords数组中
  30. final char SPACE = ' '; //分词的时候,所有的符号全部替换为空格
  31. content = content.replace(''', SPACE).replace(',', SPACE).replace('.', SPACE);
  32. content = content.replace('(', SPACE).replace(')', SPACE).replace('-', SPACE);
  33. rawWords = content.split("\s+"); //凡是空格隔开的都算单词
  34. }
  35. public void countWordFreq(){ //统计单词个数
  36. Set<String> set = new TreeSet<String>(); //将所有出现的字符串放入唯一的set中
  37. for(String word: rawWords){
  38. set.add(word);
  39. }
  40. System.out.println(set);
  41. Iterator ite = set.iterator();
  42. List<String> wordsList = new ArrayList<String>(); //开辟空间函数
  43. List<Integer> freqList = new ArrayList<Integer>();
  44. while(ite.hasNext()){
  45. String word = (String) ite.next();
  46. int count = 0; //统计相同字符串的个数
  47. for(String str: rawWords){
  48. if(str.equals(word)){
  49. count++;
  50. }
  51. }
  52. wordsList.add(word);
  53. freqList.add(count++);
  54. }
  55. words = wordsList.toArray(new String[0]); //存入数组当中
  56. wordFreqs = new int[freqList.size()];
  57. for(int i = 0; i < freqList.size(); i++){
  58. wordFreqs[i] = freqList.get(i);
  59. }
  60. }
  61. public static void main(String[] args) {
  62. // TODO Auto-generated method stub
  63. TestTxt t = new TestTxt();
  64. t.file = new File("D:/test1.txt");
  65. t.content = txtToString(t.file);
  66. t.splitWord();
  67. t.countWordFreq();
  68. for(int i = 0;i < t.wordFreqs.length ; i++){
  69. System.out.println(t.words[i] + ":" + t.wordFreqs[i]);
  70. }
  71. }
  72. }
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-5-6 12:47

Copyright 2015-2025 djqfx

返回顶部