概要
做智慧問答時,演算法是必不可少的一個環節,但是怎麼驗證演算法的準確性是個問題,比如,我需要一個可以驗證句子合理性的演算法,但是需要兩種標註好的資料,一種是合理的句子,一種是不合理的句子。合理的句子很好找,但是不合理的句子呢?其實,更簡單,將中國常用的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