package edu.fudan.nlp.parser.dep; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Merge { public static void main(String[] args) throws IOException { String testfile = "/home/feng/Corpus/semantic/CoNLL2009-ST-evaluation-English-Joint.txt"; String headfile = "/home/feng/Corpus/semantic/CoNLL2009-ST-evaluation-English.10.PHEAD.txt"; String relafile = "/home/feng/Corpus/semantic/CoNLL2009-ST-evaluation-English.12.PDEPREL.txt"; String resufile = "/home/feng/Corpus/semantic/CoNLL2009-ST-evaluation-English.txt"; BufferedReader testread = new BufferedReader(new FileReader(testfile)); BufferedReader headread = new BufferedReader(new FileReader(headfile)); BufferedReader relaread = new BufferedReader(new FileReader(relafile)); BufferedWriter out = new BufferedWriter(new FileWriter(resufile)); String line = null; List<String[]> sentence = new ArrayList<String[]>(); List<String> heads = new ArrayList<String>(); List<String> relations = new ArrayList<String>(); while ((line = testread.readLine()) != null) { line = line.trim(); if (line.matches("^$")) { line = headread.readLine(); line = relaread.readLine(); StringBuffer buf = new StringBuffer(); for(int i = 0; i < sentence.size(); i++) { String[] toks = sentence.get(i); for(int j = 0; j < 8; j++) { buf.append(toks[j]); buf.append("\t"); } buf.append(heads.get(i)); buf.append("\t"); buf.append("_"); buf.append("\t"); buf.append(relations.get(i)); buf.append("\t"); buf.append("_"); buf.append("\t"); buf.append(toks[12]); buf.append("\n"); } out.write(buf.toString()); out.newLine(); sentence.clear(); heads.clear(); relations.clear(); } else { String[] toks = line.split("\\t+|\\s+"); sentence.add(toks); line = headread.readLine().trim(); assert(line.matches("^$")); heads.add(line); line = relaread.readLine().trim(); assert(line.matches("^$")); relations.add(line); } } out.flush(); out.close(); } }