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");