Я программист на C и теперь я перешел на Java. Я пытаюсь конвертировать C-программу в Java-программу. Программы на C просто вычисляют частоту термина и частоту обратного документа ( tf / idf ).
Я создал один класс данных
public class Data {
private String fileName,fileText;
private int fileId;
private float value;
public void addData(String fileName, String fileText, float value){
this.fileName = fileName;
this.fileText = fileText;
this.value = value;
}
public int getFileId(){
return this.fileId;
}
public String getFileName(){
return this.fileName;
}
public String getFileText(){
return this.fileText;
}
public float getValue(){
return this.value;
}
}
Этот класс отвечает за хранение имени файла, текста файла и значения (значение tf или значение idf).
За хранение данных отвечает следующий класс:
public class main {
public static void main(String[] args) {
HashMap<String, Data> map = new HashMap<String, Data>();
Data dt = new Data();
dt.addData("abc.txt", "some contents", 2);
map.put("1",dt);
dt.addData("w", "some more contents in second file", 3);
map.put("2",dt);
System.out.println(map);
}
}
Когда я печатаю карту, она дает мне странные значения. Я думаю, я должен объявить массив данных класса? Я не знаю, сколько там файлов, поэтому я не могу поставить любой номер статического массива.
Кроме того, как я могу рассчитать TF и IDF на основе этой структуры данных?
В программе на Си я просто читаю файлы, подсчитываю слова, разделенные на общее количество слов, чтобы получить TF, и слово, деленное на общее вхождение этого слова во все файлы, чтобы получить IDF. Я не знаю, как это сделать, используя вышеупомянутую структуру данных.
Я получаю странные значения. Может быть, это объекты:
{2=test2.Data@19821f, 1=test2.Data@19821f}
Есть ли способ получить определенное значение из класса Data с помощью функций getFileName
и т. Д.?