package jhazm.reader; import com.infomancers.collections.yield.Yielder; import jhazm.model.Verb; import java.io.*; import java.nio.charset.Charset; /** * interfaces [Verb Valency Corpus](http://dadegan.ir/catalog/pervallex) * Mohammad Sadegh Rasooli, Amirsaeid Moloodi, Manouchehr Kouhestani, & Behrouz Minaei Bidgoli. (2011). A Syntactic Valency Lexicon for Persian Verbs: The First Steps towards Persian Dependency Treebank. in 5th Language & Technology Conference(LTC): Human Language Technologies as a Challenge for Computer Science and Linguistics(pp. 227�231). Pozna?, Poland. * * Created by Mojtaba Khallash on 30/10/2015. */ public class VerbValencyReader { // // Fields // private String valencyFile; // // Constructors // public VerbValencyReader() { this("resources/corpora/valency.txt"); } public VerbValencyReader(String valencyFile) { this.valencyFile = valencyFile; } // // API // public Iterable<Verb> getVerbs() throws IOException { return new YieldVernValency(); } // // Helper // private String getValencyFile() { return this.valencyFile; } class YieldVernValency extends Yielder<Verb> { private BufferedReader br; public YieldVernValency() { try { FileInputStream fstream = new FileInputStream(getValencyFile()); DataInputStream in = new DataInputStream(fstream); br = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF8"))); } catch (Exception ex) { ex.printStackTrace(); } } @Override protected void yieldNextCore() { try { String line; while ((line = br.readLine()) != null) { if (line.contains("بن ماضی")) continue; line = line.trim().replace("-\t", "\t"); String[] parts = line.split("\t"); if (parts.length == 6) { yieldReturn(new Verb( parts[0], // PastLightVerb parts[1], // PresentLightVerb parts[2], // Prefix parts[3], // NonVerbalElement parts[4], // Preposition parts[5])); // Valency return; } } br.close(); } catch (Exception ex) { ex.printStackTrace(); } } } }