Quelle est la meilleure façon d'obtenir uniquement les synonymes du thésaurus Moby Grady en Java?


Je crée un thésaurus visuel qui agira comme une version édulcorée montrée ici: https://www.visualthesaurus.com/

Je suis un nouveau programmeur et ce sera l'un de mes premiers projets. J'utilise le fichier texte du Thésaurus de Moby Grady pour ma liste de thésaurus mais je rencontre des problèmes.

Le thésaurus Moby est formaté de sorte qu'il y a un mot racine, suivi d'une virgule, suivi de mots similaires ou relatifs, qu'un flux de transport / saut de ligne et qu'une autre racine mot...

Ex. Mot racine, comme mot, comme mot, comme mot

La technique que j'utilise pour trouver les synonymes en ce moment va comme ceci: 1. Entrez word pour trouver 2. Commencez à la première ligne, transformez la ligne en tableau de chaînes et testez pour voir si le wordToFind est dans cette ligne, si c'est le cas, imprimez la ligne et recherchez plus de lignes pour le wordToFind.

J'imprime avec succès chaque ligne qui contient mon wordToFind mais chacun de ces mots dans la ligne ne correspond pas bien aux synonymes. Je demande à quiconque ayant ce genre d'expérience de m'aider à trouver un moyen d'obtenir des mots plus similaires à mon wordsToFind.

import java.io.BufferedReader;
import java.io.Console;
import java.io.File;
import java.io.FileReader;
import java.util.Arrays;
import java.util.Scanner;

public class Thesaurus {
    File godFile = new File("C:\\Users\\Joe\\Documents\\moby.txt");
    Console console = System.console();
    String inputWord;
    Scanner reader;

    void bigBang() {
        try (Scanner inputScanner = new Scanner(new BufferedReader(
                new FileReader(godFile)))) {

            Scanner reader = new Scanner(System.in);
            System.out.print("Synonyms for word: ");
            String theWord = reader.next();

            one: while (inputScanner.hasNextLine()) {
                String line = inputScanner.nextLine();
                String[] splitLine = line.split(",");
                for (String word : splitLine) {
                    if (word.equalsIgnoreCase(theWord)) {
                        System.out.println("Word Found!");
                        System.out.println("Synonyms for " + theWord + ":");
                        System.out.print((Arrays.toString(splitLine)));

                    }
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Author: user3037986, 2014-04-08

1 answers

Il s'agit d'un problème de PNL plus complexe qui nécessite plus que la lecture dans un fichier texte, mais nous allons travailler avec ce que vous avez. Je suggère d'abord de regarder WordNet avec lequel vous pouvez travailler en ligne ou en téléchargement où vous pouvez obtenir le sens du mot pour chaque mot.

Il apparaît donc dans le code ci-dessus que vous traitez le mot racine et les "mots similaires" de la même manière. Par conséquent, si le mot que vous recherchez est d'abord répertorié comme un synonyme d'un mot, vous vous arrêtez à cette ligne. Je vous suggère de séparer le concept de mots racines des synonymes.

Ce que vous pouvez faire à l'exécution est de lire le fichier entier dans un HashMap<String, List<String>>. La clé est le mot racine et la liste est la liste des synonymes pour un mot racine. C'est la façon dont un thésaurus manuel fonctionne de toute façon, vous recherchez les mots racines et il vous donne les synonymes. Il ne serait pas pratique de scanner toutes les entrées pour voir si elles contiennent le terme que vous recherchez.

Une fois cette création de carte unique a été fait, vous pouvez ensuite faire une simple recherche sur le HashMap pour le terme qui intéresse l'utilisateur.

Je vois que le site Web que vous référencez fait une représentation basée sur un graphique, ce qui peut certainement être une bonne idée. Il est très populaire avec de nombreux problèmes basés sur l'ontologie. Cette représentation graphique permet de suivre les liens que vous pourriez être plus enclins à faire de sorte que vous pouvez trouver des synonymes synonymes et ainsi de suite et ainsi de suite.

 0
Author: demongolem, 2014-04-17 21:32:20