4

PennTreebankタグセットの単語とタグの基本形があるとします。共役形を取得するにはどうすればよいですか?たとえば、「do」と「VBN」の場合、どうすれば「done」を取得できますか?

このタスクはすでにいくつかのnlpライブラリに実装されていると思うので、自転車を発明したくありません。そのようなものは存在しますか?

4

2 に答える 2

0

ここで実行したいのは、回答を保持するスパース配列を作成し、用語自体を1つのキーとしてインデックス付けし、PTTSコード(CC、TO、VBD)をもう1つのキーとして作成することです。

于 2010-04-10T08:11:21.640 に答える
0

クラスがある場合:

public Treebank {
    public String conjugate(String base, String formTag);

    ...
}

それで:

String conjugated = treebank.conjugate(base, formTag);

Treebankクラスがない場合は、次のようになります。

public Treebank {
    private Map<String, Map<String, String>> m_map = new HashMap<String, Map<String, String>>();

    public Treebank() {
        populate();
    }

    public String conjugate(String base, String formTag) {
        return m_map.get(base, formTag);
    }

    private void populate() {
        InputStream istream = openDataFile();

        try {
            for (Record record = readRecord(istream); record !== null; record = readRecord(istream)) {

                // Add the entry
                Map<String, String> entry = m_map.get(record.base);

                if (entry == null)
                    entry = new HashMap<String, String>();

                entry.put(record.formTag, record.conjugatedForm);
                m_map.put(record.base, entry);
           }
        }
        finally {
            closeDataFile(istream);
        }
    }

    // Data management - to be implemented.
    private InputStream openDataFile()                     { ... }
    private Record      readRecord(InputStream istream)    { ... }
    private void        closeDataFile(InputStream istream) { ... }

    private static class Record {
        String base;
        String formTag;
        String conjugatedForm;
    }
}

より良い解決策は、データファイルの代わりにデータベースを含むかもしれません。また、データアクセスコードをデータアクセスオブジェクトにリファクタリングします。

于 2010-04-10T08:14:48.107 に答える