代码之家  ›  专栏  ›  技术社区  ›  Fluffy

如何在Java中结合英语单词?

  •  4
  • Fluffy  · 技术社区  · 14 年前

    假设我有一个单词的基本形式和 Penn Treebank Tag Set . 如何得到共轭形式?例如,对于“do”和“vbn”,如何才能获得“done”?

    我认为这个任务已经在一些NLP库中实现了,所以我不想发明自行车。这样的东西存在吗?

    2 回复  |  直到 12 年前
        1
  •  0
  •   richj    14 年前

    如果你有课:

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

    更好的解决方案可能涉及数据库而不是数据文件。我还将把数据访问代码重构为数据访问对象。

        2
  •  0
  •   pbr    14 年前

    这里您要做的是创建一个包含答案的稀疏数组,可以通过术语本身作为一个键进行索引,并将ptts代码(cc、to、vbd)作为另一个键。