PennTreebankタグセットの単語とタグの基本形があるとします。共役形を取得するにはどうすればよいですか?たとえば、「do」と「VBN」の場合、どうすれば「done」を取得できますか?
このタスクはすでにいくつかのnlpライブラリに実装されていると思うので、自転車を発明したくありません。そのようなものは存在しますか?
PennTreebankタグセットの単語とタグの基本形があるとします。共役形を取得するにはどうすればよいですか?たとえば、「do」と「VBN」の場合、どうすれば「done」を取得できますか?
このタスクはすでにいくつかのnlpライブラリに実装されていると思うので、自転車を発明したくありません。そのようなものは存在しますか?
ここで実行したいのは、回答を保持するスパース配列を作成し、用語自体を1つのキーとしてインデックス付けし、PTTSコード(CC、TO、VBD)をもう1つのキーとして作成することです。
クラスがある場合:
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;
}
}
より良い解決策は、データファイルの代わりにデータベースを含むかもしれません。また、データアクセスコードをデータアクセスオブジェクトにリファクタリングします。