根據常用漢字生成雜亂的句子 --- java

花椒CX發表於2018-08-07

概要

做智慧問答時,演算法是必不可少的一個環節,但是怎麼驗證演算法的準確性是個問題,比如,我需要一個可以驗證句子合理性的演算法,但是需要兩種標註好的資料,一種是合理的句子,一種是不合理的句子。合理的句子很好找,但是不合理的句子呢?其實,更簡單,將中國常用的2000多漢字隨機組成句子即可。

程式碼

        List<String> wordDataList = new ArrayList<>();
        try {
            String encoding = "utf-8";
            File file = new File("C:\\Users\\Administrator\\Desktop\\word_data.txt");
            if (file.isFile() && file.exists()) { //判斷檔案是否存在
                InputStreamReader read = new InputStreamReader(
                        new FileInputStream(file), encoding);//考慮到編碼格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    wordDataList.add(lineTxt);
                }
                read.close();
            } else {
                System.out.println("找不到指定的檔案");
            }
        } catch (Exception e) {
            System.out.println("讀取檔案內容出錯");
            e.printStackTrace();
        }

        try{
            FileWriter writer = new FileWriter("C:\\Users\\Administrator\\Desktop\\word_data_result.txt");
            BufferedWriter bw = new BufferedWriter(writer);

            Random random = new Random();
            for (int m = 2; m < 30; m++){       //取2到30長度的句子
                for (int n = 0 ; n < 10000; n++){   //每種長度的句子取一萬個
                    StringBuilder stringBuilder = new StringBuilder();
                    for (int i = 0; i < m; i++) {
                        stringBuilder.append(wordDataList.get(random.nextInt(2500)));  \\從資料來源中隨機取出一個字
                    }
                    System.out.println(stringBuilder.toString());
                    bw.write(stringBuilder.toString()+"\r\n");
                }
            }

            bw.close();
            writer.close();

        }catch (Exception e){

        }
複製程式碼

所用到的方法比較簡單,這裡不再細說。

資料來源

連結:https://pan.baidu.com/s/1N5nipTWpFQ_zvqdZwtMlYw 密碼:bie2

相關文章