Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.3k views
in Others[杂七杂八] by (180 points)

please help me with my errors in code

this is the code :::::::


import dsa.DiGraph;

import dsa.SeparateChainingHashST;

import dsa.Set;

import stdlib.In;

import stdlib.StdOut;

public class WordNet {

    //...

    private SeparateChainingHashST<String, Set<Integer>> st; // Maps a synset noun to set of

    // synset ID

    private SeparateChainingHashST<Integer, String> rst; // Maps a synset ID to the

    // corresponding synset string.

    private DiGraph G;

    private ShortestCommonAncestor sca;     // Computations of shortest common ancestor

    // Constructs a WordNet object given the names of the input (synset and hypernym) files.

    public WordNet(String synsets, String hypernyms) {

        //...

        if (synsets == null || hypernyms == null) {

            throw new IllegalArgumentException("Input files cannot be null");

        }

        st = new SeparateChaningHashST<>();

        rst = new SeparateChainingHashST<>();

        int vertices = 0;

        In in = new In(synsets);

        while (in.hasNextLine()) {

            vertices++;

            String[] line = in.readLine().split(",");

            String[] word = line[1].split(" ");

            int id = Integer.parseInt(line[0]);

            rst.put(id, line[1]);

            for (int i = 0; i < word.length; i++) {

                if (st.contains(word[i])) {

                    st.get(word[i]).add(id);

                } else {

                    st.put(word[i], new Set<Integer>());

                    st.get(word[i]).add(id);

                }

            }

        }

        DiGraph G = new DiGraph(vertices);

        in = new In(hypernyms);

        while (in.hasNextLine()) {

            String[] line = in.readLine().split(",");

            for (int i = 1; i < line.length; i++) {

                G.addEdge(Integer.parseInt(line[0]), Integer.parseInt(line[i]));

            }

        }

        sca = new ShortestCommonAncestor ();

        if (!sca.isRootedDAG()) {

            throw new IllegalArgumentException("hypernyms not rooted DAG");

        }

    }

    // Returns all WordNet nouns.

    public Iterable<String> nouns() {

        //...

        return st.keys();

    }

    // Returns true if the given word is a WordNet noun, and false otherwise.

    public boolean isNoun(String word) {

        //...

        if (word == null) {

            throw new NullPointerException();

            return st.contains(word);

        }

    }

    // Returns a synset that is a shortest common ancestor of noun1 and noun2.

    public String sca(String noun1, String noun2) {

        //...

        if (noun1 == null || noun2 == null) {

            throw new NullPointerException();

        }

        if (st.get(noun1) == null || st.get(noun2) == null) {

            throw new NullPointerException();

        }

        Iterable<Integer> integer1 = st.get(noun1);

        Iterable<Integer> integer2 = st.get(noun2);

        return rst.get(sca.ancestor(integer1, integer2));

    }

    // Returns the length of the shortest ancestral path between noun1 and noun2.

    public int distance(String noun1, String noun2) {

        //...

        if (noun1 == null || noun2 == null || st.get(noun2) == null) {

            throw new NullPointerException();

        }

        Iterable<Integer> integer1 = st.get(noun1);

        Iterable<Integer> integer2 = st.get(noun2);

        return sca.length(integer1, integer2);

    }

    // Unit tests the data type. [DO NOT EDIT]

    public static void main(String[] args) {

        WordNet wordnet = new WordNet(args[0], args[1]);

        String word1 = args[2];

        String word2 = args[3];

        int nouns = 0;

        for (String noun : wordnet.nouns()) {

            nouns++;

        }

        StdOut.printf("# of nouns = %d\n", nouns);

        StdOut.printf("isNoun(%s)? %s\n", word1, wordnet.isNoun(word1));

        StdOut.printf("isNoun(%s)? %s\n", word2, wordnet.isNoun(word2));

        StdOut.printf("isNoun(%s %s)? %s\n", word1, word2, wordnet.isNoun(word1 + " " + word2));

        StdOut.printf("sca(%s, %s) = %s\n", word1, word2, wordnet.sca(word1, word2));

        StdOut.printf("distance(%s, %s) = %s\n", word1, word2, wordnet.distance(word1, word2));

    }

}
Welcome To Ask or Share your Answers For Others

Please log in or register to reply this article.

OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...