public string[][] ReadLines(StreamReader reader)
{
string line = reader.ReadLine();
string posLine = reader.ReadLine();
string labLine = Labeled ? reader.ReadLine() : posLine;
string depsLine = reader.ReadLine();
reader.ReadLine(); // blank line
if (line == null) return null;
string[] toks = line.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string[] pos = posLine.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string[] labs = labLine.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string[] deps = depsLine.Split("\t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var toksNew = new string[toks.Length + 1];
var posNew = new string[pos.Length + 1];
var labsNew = new string[labs.Length + 1];
var depsNew = new string[deps.Length + 1];
toksNew[0] = "<root>";
posNew[0] = "<root-POS>";
labsNew[0] = "<no-Type>";
depsNew[0] = "-1";
for (int i = 0; i < toks.Length; i++)
{
toksNew[i + 1] = Normalize(toks[i]);
posNew[i + 1] = pos[i];
labsNew[i + 1] = Labeled ? labs[i] : "<no-Type>";
depsNew[i + 1] = deps[i];
}
toks = toksNew;
pos = posNew;
labs = labsNew;
deps = depsNew;
var result = new string[4][];
result[0] = toks;
result[1] = pos;
result[2] = labs;
result[3] = deps;
return result;
}