首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java中的Moby Grady Thesaurus获得同义词的最佳方法是什么?

从Java中的Moby Grady Thesaurus获得同义词的最佳方法是什么?
EN

Stack Overflow用户
提问于 2014-04-07 22:27:19
回答 1查看 1.8K关注 0票数 0

我正在创建一个可视化的同义词库,它将充当一个经过淡化的版本,如下所示:https://www.visualthesaurus.com/

我是一个新的程序员,这将是我的第一个项目。我使用Moby的主题词典文本文件作为我的词库列表,但是我遇到了一些问题。

Moby Thesaurus是格式化的,因此有一个根词,后面跟着逗号,后面跟着类似或相关的单词,而不是一个运输提要/行中断,还有一个比另一个根词.

例如。词根,就像单词

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

我正在成功地打印出包含我的wordToFind的每一行,但是行中的每个单词都不是很好的同义词匹配。我请求任何有这种经验的人帮助我想出一种方法来获得更类似于我的wordsToFind的词汇。

代码语言:javascript
复制
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();
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 19:31:02

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

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

您可以在运行时将整个文件读入HashMap<String, List<String>>中。关键字是根词,列表是根词的同义词列表。不管怎么说,这是一个手册词库的工作方式,你寻找词根,它给你的同义词。扫描所有条目以确定它是否包含您正在寻找的术语是不实际的。

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

我看到,您所引用的网站做了一个基于图形的表示,这肯定是一个好主意。它在许多基于本体的问题中很受欢迎。这种图形表示方式允许您跟踪链接,因为您可能更倾向于这样做,这样您就可以找到同义词的同义词等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22924252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档