【发布时间】:2010-04-10 08:07:41
【问题描述】:
假设我有来自Penn Treebank Tag Set 的单词和标签的基本形式。我怎样才能得到共轭形式?例如对于“do”和“VBN”,我怎样才能“完成”?
我认为这个任务已经在一些 nlp 库中实现了,所以我宁愿不发明自行车。有这样的东西吗?
【问题讨论】:
标签: java nlp linguistics
假设我有来自Penn Treebank Tag Set 的单词和标签的基本形式。我怎样才能得到共轭形式?例如对于“do”和“VBN”,我怎样才能“完成”?
我认为这个任务已经在一些 nlp 库中实现了,所以我宁愿不发明自行车。有这样的东西吗?
【问题讨论】:
标签: java nlp linguistics
如果你有课:
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;
}
}
更好的解决方案可能涉及数据库而不是数据文件。我还将数据访问代码重构为数据访问对象。
【讨论】:
您在这里要做的是创建一个稀疏数组来保存答案,可通过术语本身作为一个键进行索引,并将 PTTS 代码(CC、TO、VBD)作为另一个键。
【讨论】: