public Paraphraser(String wordnetPath) throws IOException {
// Membuat objek Dictionary
dict = new Dictionary(new java.io.File(wordnetPath));
dict.open();
}
// Metode untuk memperoleh sinonim dari sebuah kata
public List getSynonyms(String word) {
List synonyms = new ArrayList<>();
SimpleStemmer stemmer = new SimpleStemmer();
// Mendapatkan POS (Part-of-Speech) dari kata
POS pos = POS.getPartOfSpeech(stemmer.findStems(word, null).get(0));
// Mendapatkan indeks kata di WordNet
IIndexWord idxWord = dict.getIndexWord(word, pos);
if (idxWord != null) {
// Mendapatkan semua sinonim dari synset-synset yang berhubungan dengan kata tersebut
for (IWord iWord : idxWord.getWordIDs().stream().map(dict::getWord).collect(Collectors.toList())) {
ISynset synset = iWord.getSynset();
synonyms.addAll(synset.getWords().stream().map(IWord::getLemma).collect(Collectors.toList()));
}
}
return synonyms;
}
// Metode untuk memparafrase teks
public String paraphraseText(String text) {
StringBuilder paraphrasedText = new StringBuilder();
String[] words = text.split(" ");
for (String word : words) {
List synonyms = getSynonyms(word);
// Jika ditemukan sinonim, pilih satu secara acak
if (!synonyms.isEmpty()) {
paraphrasedText.append(synonyms.get((int) (Math.random() * synonyms.size()))).append(" ");
} else {
paraphrasedText.append(word).append(" ");
}
}
return paraphrasedText.toString().trim();
}
public static void main(String[] args) throws IOException {
Paraphraser paraphraser = new Paraphraser("/path/to/WordNet-3.0/dict");