Frage

Sprich ich habe eine Grundform eines Wortes und ein Tag aus der Penn Treebank Tag Set . Wie kann ich die konjugierte Form bekommen? Zum Beispiel für „do“ und „VBN“ Wie kann ich „fertig“ werden?

ich denke diese Aufgabe bereits in einiger nlp Bibliothek implementiert ist, so würde ich lieber nicht mit dem Fahrrad erfinden. Gibt es so etwas wie die vorhanden sind?

War es hilfreich?

Lösung

Wenn Sie eine Klasse:

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

    ...
}

Dann:

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

Wenn Sie nicht über die Treebank Klasse haben es vielleicht ein bisschen wie folgt aussehen:

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;
    }
}

Eine bessere Lösung könnte eine Datenbank statt eine Datendatei einzubeziehen. Ich würde auch den Datenzugriffscode in einem Data Access Object Refactoring.

Andere Tipps

Was wollen Sie hier zu tun ist, eine spärliche Array erstellen, die Antworten halten, Wende über den Begriff selbst als einen Schlüssel, und der PTTS-Code (CC, TO, VBD) als andere Taste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top