0

我正在创建一个视觉词库,它将作为此处显示的淡化版本: https ://www.visualthesaurus.com/

我是一名新程序员,这将是我的第一个项目之一。我正在为我的词库列表使用 Moby Grady 的词库文本文件,但我遇到了问题。

Moby Thesaurus 的格式设置为有一个词根,后跟一个逗号,然后是类似或相关的词,而不是回车符/换行符和另一个词根...

前任。词根,如字,如字,如字

我现在用于查找同义词的技术如下: 1. 输入单词以查找 2. 从第一行开始,将行转换为字符串数组,然后测试 wordToFind 是否在该行中,如果它即,打印该行并搜索更多行以查找 wordToFind。

我已成功打印出包含我的 wordToFind 的每一行,但该行中的每个单词都不是同义词的良好匹配。我要求任何有这种经验的人帮助我想出一种方法来获得与我的 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();
        }
    }
}
4

1 回答 1

0

这是一个更复杂的 NLP 问题,需要的不仅仅是读取文本文件,但我们会处理您所拥有的。我首先建议您查看可以在线使用的WordNet或下载,您可以在其中获得每个单词的词义。

因此,从上面的代码中可以看出,您正在以类似的方式处理根词和“相似词”。因此,如果您搜索的单词首先被列为另一个单词的同义词,您将在该行停止。我建议您将词根的概念与同义词分开。

您在运行时可以做的是将整个文件读入HashMap<String, List<String>>. 键是词根,列表是词根的同义词列表。无论如何,这是手动词库的工作方式,您查找词根并为您提供同义词。扫描所有条目以查看它是否包含您要查找的术语是不切实际的。

一旦完成了这一一次性地图创建,您就可以对 HashMap 进行简单的查找以查找用户感兴趣的术语。

我看到你引用的网站做了一个基于图表的表示,这当然是一个好主意。它在许多基于本体的问题中非常流行。此图形表示允许您跟踪链接,因为您可能更倾向于这样做,以便您可以找到同义词的同义词等等。

于 2014-04-15T19:31:02.437 回答