//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: private void calculateIndices(org.maltparser.core.syntaxgraph.PhraseStructure phraseStructure) throws org.maltparser.core.exception.MaltChainedException private void calculateIndices(PhraseStructure phraseStructure) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.SortedMap<int,int> heights = new java.util.TreeMap<int,int>(); SortedDictionary <int, int> heights = new SortedDictionary <int, int>(); foreach (int index in phraseStructure.NonTerminalIndices) { heights[index] = ((NonTerminalNode)phraseStructure.getNonTerminalNode(index)).Height; } bool done = false; int h = 1; int ntid = START_ID_OF_NONTERMINALS; nonTerminalIndexMap.clear(); while (!done) { done = true; foreach (int index in phraseStructure.NonTerminalIndices) { if (heights[index] == h) { NonTerminalNode nt = (NonTerminalNode)phraseStructure.getNonTerminalNode(index); nonTerminalIndexMap.put(nt.Index, ntid++); // nonTerminalIndexMap.put(nt.getIndex(), nt.getIndex()+START_ID_OF_NONTERMINALS-1); done = false; } } h++; } // boolean done = false; // int h = 1; //// int ntid = START_ID_OF_NONTERMINALS; //// nonTerminalIndexMap.clear(); // while (!done) { // done = true; // for (int index : phraseStructure.getNonTerminalIndices()) { // if (heights.get(index) == h) { // NonTerminalNode nt = (NonTerminalNode)phraseStructure.getNonTerminalNode(index); //// nonTerminalIndexMap.put(nt.getIndex(), ntid++); // nonTerminalIndexMap.put(nt.getIndex(), nt.getIndex()+START_ID_OF_NONTERMINALS-1); // done = false; // } // } // h++; // } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public void writeNonTerminals(org.maltparser.core.syntaxgraph.PhraseStructure phraseStructure) throws org.maltparser.core.exception.MaltChainedException public virtual void writeNonTerminals(PhraseStructure phraseStructure) { try { SortedDictionary <int, int> heights = new SortedDictionary <int, int>(); foreach (int index in phraseStructure.NonTerminalIndices) { heights[index] = ((NonTerminalNode)phraseStructure.getNonTerminalNode(index)).Height; } writer.Write(" <nonterminals>\n"); bool done = false; int h = 1; while (!done) { done = true; foreach (int index in phraseStructure.NonTerminalIndices) { if (heights[index] == h) { NonTerminalNode nt = (NonTerminalNode)phraseStructure.getNonTerminalNode(index); tmpID.Length = 0; tmpID.Append(sentenceID); tmpID.Append('_'); tmpID.Append(Convert.ToString(nt.Index + START_ID_OF_NONTERMINALS - 1)); writeNonTerminal(phraseStructure.SymbolTables, nt, tmpID.ToString()); done = false; } } h++; } writeNonTerminal(phraseStructure.SymbolTables, (NonTerminalNode)phraseStructure.PhraseStructureRoot, rootID.ToString()); writer.Write(" </nonterminals>\n"); } catch (IOException e) { throw new DataFormatException("The TigerXML writer is not able to write. ", e); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public boolean readSentence(org.maltparser.core.syntaxgraph.TokenStructure syntaxGraph) throws org.maltparser.core.exception.MaltChainedException public virtual bool readSentence(ITokenStructure syntaxGraph) { if (syntaxGraph == null || !(syntaxGraph is PhraseStructure)) { return(false); } syntaxGraph.Clear(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.maltparser.core.syntaxgraph.PhraseStructure phraseStructure = (org.maltparser.core.syntaxgraph.PhraseStructure)syntaxGraph; PhraseStructure phraseStructure = (PhraseStructure)syntaxGraph; PhraseStructureNode parent = null; PhraseStructureNode child = null; // if (header == null) { // header = new TigerXMLHeader(syntaxGraph.getSymbolTables()); // } try { while (true) { int @event = reader.next(); if (@event == XMLStreamConstants.START_ELEMENT) { if (reader.LocalName.length() == 0) { continue; } if (reader.LocalName.charAt(0) == 'e') { // e -> edge, edgelabel if (reader.LocalName.length() == 4) { //edge int childid = -1; int indexSep = reader.getAttributeValue(null, "idref").IndexOf('_'); try { if (indexSep != -1) { childid = int.Parse(reader.getAttributeValue(null, "idref").substring(indexSep + 1)); } else { childid = int.Parse(reader.getAttributeValue(null, "idref")); } if (childid == -1) { throw new SyntaxGraphException("The tiger reader couldn't recognize the idref attribute '" + reader.getAttributeValue(null, "idref") + "' of the edge element. "); } } catch (System.FormatException) { throw new SyntaxGraphException("The tiger reader couldn't recognize the idref attribute '" + reader.getAttributeValue(null, "idref") + "' of the edge element. "); } if (childid < START_ID_OF_NONTERMINALS) { child = phraseStructure.GetTokenNode(childid); } else { child = phraseStructure.getNonTerminalNode(childid - START_ID_OF_NONTERMINALS + 1); } Edge.Edge e = phraseStructure.addPhraseStructureEdge(parent, child); SortedDictionary <string, SymbolTable> inputTables = dataFormatInstance.getPhraseStructureEdgeLabelSymbolTables(phraseStructure.SymbolTables); foreach (string name in inputTables.Keys) { e.addLabel(inputTables[name], reader.getAttributeValue(null, name.ToLower())); } } else if (reader.LocalName.Equals("edgelabel")) { // edgelabel // domain = Domain.EL; } } else if (reader.LocalName.charAt(0) == 'n') { // n -> nt, nonterminals, name if (reader.LocalName.length() == 2) { // nt //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final String id = reader.getAttributeValue(null, "id"); string id = reader.getAttributeValue(null, "id"); if (graphRootID.Length == id.Length && graphRootID.ToString().Equals(id)) { parent = phraseStructure.PhraseStructureRoot; } else { int index = id.IndexOf('_'); if (index != -1) { parent = phraseStructure.addNonTerminalNode(int.Parse(id.Substring(index + 1)) - START_ID_OF_NONTERMINALS + 1); } } SortedDictionary <string, SymbolTable> inputTables = dataFormatInstance.getPhraseStructureNodeLabelSymbolTables(phraseStructure.SymbolTables); foreach (string name in inputTables.Keys) { parent.addLabel(inputTables[name], reader.getAttributeValue(null, name.ToLower())); } } else if (reader.LocalName.Equals("name")) { // name // elementContent.setLength(0); // collectChar = true; } } else if (reader.LocalName.charAt(0) == 't') { // t -> t, terminals if (reader.LocalName.length() == 1) { // t SortedDictionary <string, SymbolTable> inputTables = dataFormatInstance.getInputSymbolTables(phraseStructure.SymbolTables); child = syntaxGraph.AddTokenNode(); foreach (string name in inputTables.Keys) { child.addLabel(inputTables[name], reader.getAttributeValue(null, name.ToLower())); } } } else if (reader.LocalName.charAt(0) == 's') { // s -> subcorpus, secedge, s, secedgelabel if (reader.LocalName.length() == 1) { // s string id = reader.getAttributeValue(null, "id"); bool indexable = false; int index = -1; if (!ReferenceEquals(id, null) && id.Length > 0) { for (int i = 0, n = id.Length; i < n; i++) { if (char.IsDigit(id[i])) { if (index == -1) { index = i; } indexable = true; } } } if (indexable) { phraseStructure.SentenceID = int.Parse(id.Substring(index)); } else { phraseStructure.SentenceID = sentenceCount + 1; } } } else if (reader.LocalName.charAt(0) == 'v') { // v -> variable, value // if (reader.getLocalName().equals("value")) { // valueName.setLength(0); // valueName.append(reader.getAttributeValue(null, "name")); // elementContent.setLength(0); // collectChar = true; // } } else { // a -> annotation, author // b -> body // c -> corpus // d -> date, description, // f -> feature, format // g -> graph // h -> head, history // m -> matches, match if (reader.LocalName.Equals("graph")) { graphRootID.Length = 0; graphRootID.Append(reader.getAttributeValue(null, "root")); } else if (reader.LocalName.Equals("corpus")) { // header.setCorpusID(reader.getAttributeValue(null, "id")); // header.setCorpusID(reader.getAttributeValue(null, "version")); } else if (reader.LocalName.Equals("feature")) { // if (header != null) { // currentFeatureName.setLength(0); // currentFeatureName.append(reader.getAttributeValue(null, "name")); // header.addFeature(reader.getAttributeValue(null, "name"), reader.getAttributeValue(null, "domain")); // } // domain = Domain.valueOf(reader.getAttributeValue(null, "domain")); } else if (reader.LocalName.Equals("secedgelabel")) { // domain = Domain.SEL; } else if (reader.LocalName.Equals("author")) { // elementContent.setLength(0); // collectChar = true; } else if (reader.LocalName.Equals("date")) { // elementContent.setLength(0); // collectChar = true; } else if (reader.LocalName.Equals("description")) { // elementContent.setLength(0); // collectChar = true; } else if (reader.LocalName.Equals("format")) { // elementContent.setLength(0); // collectChar = true; } else if (reader.LocalName.Equals("history")) { // elementContent.setLength(0); // collectChar = true; } } } else if (@event == XMLStreamConstants.END_ELEMENT) { if (reader.LocalName.length() == 0) { continue; } if (reader.LocalName.charAt(0) == 'e') { // e -> edge, edgelabel } else if (reader.LocalName.charAt(0) == 'n') { // n -> nt, nonterminals, name if (reader.LocalName.Equals("nt")) { ntid.Length = 0; } else if (reader.LocalName.Equals("nonterminals")) { if (phraseStructure.NTokenNode() == 1 && phraseStructure.nNonTerminals() == 0 && ((NonTerminalNode)phraseStructure.PhraseStructureRoot).nChildren() == 0) { Edge.Edge e = phraseStructure.addPhraseStructureEdge(phraseStructure.PhraseStructureRoot, phraseStructure.GetTokenNode(1)); SortedDictionary <string, SymbolTable> inputTables = dataFormatInstance.getPhraseStructureEdgeLabelSymbolTables(phraseStructure.SymbolTables); foreach (string name in inputTables.Keys) { e.addLabel(inputTables[name], "--"); } } } // else if (reader.getLocalName().equals("name")) { // if (header != null) { // header.setMetaName(elementContent.toString()); // } // collectChar = false; // } } else if (reader.LocalName.charAt(0) == 't') { // t -> t, terminals } else if (reader.LocalName.charAt(0) == 's') { // s -> subcorpus, secedge, s, secedgelabel if (reader.LocalName.Equals("s")) { if (syntaxGraph.HasTokens()) { sentenceCount++; } if (syntaxGraph is MappablePhraseStructureGraph) { ((MappablePhraseStructureGraph)syntaxGraph).Mapping.updateDependenyGraph(((MappablePhraseStructureGraph)syntaxGraph), ((PhraseStructure)syntaxGraph).PhraseStructureRoot); } return(true); } } else if (reader.LocalName.charAt(0) == 'v') { // v -> variable, value // if (reader.getLocalName().equals("value")) { // if (header != null) { // if (domain == Domain.T || domain == Domain.NT || domain == Domain.FREC) { // header.addFeatureValue(currentFeatureName.toString(), valueName.toString(), elementContent.toString()); // } else if (domain == Domain.EL) { // header.addEdgeLabelValue(valueName.toString(), elementContent.toString()); // } else if (domain == Domain.SEL) { // header.addSecEdgeLabelValue(valueName.toString(), elementContent.toString()); // } // } // collectChar = false; // } } else { // a -> annotation, author // b -> body // c -> corpus // d -> date, description, // f -> feature, format // g -> graph // h -> head, history // m -> matches, match if (reader.LocalName.Equals("body")) { //sentence = dataStructures.getSentence(); //phraseTree = dataStructures.getInPhraseTree(); //sentence.clear(); //phraseTree.clear(); //dataStructures.setLastProcessObject(true); } else if (reader.LocalName.Equals("author")) { // if (header != null) { // header.setMetaAuthor(elementContent.toString()); // } // collectChar = false; } else if (reader.LocalName.Equals("date")) { // if (header != null) { // header.setMetaInDate(elementContent.toString()); // } // collectChar = false; } else if (reader.LocalName.Equals("description")) { // if (header != null) { // header.setMetaDescription(elementContent.toString()); // } // collectChar = false; } else if (reader.LocalName.Equals("format")) { // if (header != null) { // header.setMetaFormat(elementContent.toString()); // } // collectChar = false; } else if (reader.LocalName.Equals("history")) { // if (header != null) { // header.setMetaHistory(elementContent.toString()); // } // collectChar = false; } /* else if (reader.getLocalName().equals("annotation")) { * if (header != null) { * System.out.println(header.toTigerXML()); * } * collectChar = false; * } */ } } else if (@event == XMLStreamConstants.END_DOCUMENT) { if (syntaxGraph.HasTokens()) { sentenceCount++; } if (cIterations < nIterations) { cIterations++; reopen(); return(true); } return(false); } else if (@event == XMLStreamConstants.CHARACTERS) { // if (collectChar) { // char[] ch = reader.getTextCharacters(); // final int size = reader.getTextStart()+reader.getTextLength(); // for (int i = reader.getTextStart(); i < size; i++) { // elementContent.append(ch[i]); // } // } } } } catch (XMLStreamException e) { throw new DataFormatException("", e); } }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: private void writeNonTerminals(org.maltparser.core.syntaxgraph.PhraseStructure phraseStructure) throws org.maltparser.core.exception.MaltChainedException private void writeNonTerminals(PhraseStructure phraseStructure) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.maltparser.core.symbol.SymbolTableHandler symbolTables = phraseStructure.getSymbolTables(); SymbolTableHandler symbolTables = phraseStructure.SymbolTables; foreach (int index in nonTerminalIndexMap.Keys) { // for (int index : phraseStructure.getNonTerminalIndices()) { NonTerminalNode nonTerminal = (NonTerminalNode)phraseStructure.getNonTerminalNode(index); if (nonTerminal == null || nonTerminal.Root) { return; } try { writer.BaseStream.WriteByte('#'); // writer.write(Integer.toString(index+START_ID_OF_NONTERMINALS-1)); writer.Write(Convert.ToString(nonTerminalIndexMap.get(index))); writer.Write("\t\t\t--\t\t\t"); if (nonTerminal.hasLabel(symbolTables.getSymbolTable("CAT"))) { writer.BaseStream.WriteByte(nonTerminal.getLabelSymbol(symbolTables.getSymbolTable("CAT"))); } else { writer.Write("--"); } writer.Write("\t--\t\t"); if (nonTerminal.hasParentEdgeLabel(symbolTables.getSymbolTable("LABEL"))) { writer.Write(nonTerminal.getParentEdgeLabelSymbol(symbolTables.getSymbolTable("LABEL"))); } else { writer.Write("--"); } writer.BaseStream.WriteByte('\t'); if (nonTerminal.Parent == null || nonTerminal.Parent.Root) { writer.BaseStream.WriteByte('0'); } else { // writer.write(Integer.toString(nonTerminal.getParent().getIndex()+START_ID_OF_NONTERMINALS-1)); writer.Write(Convert.ToString(nonTerminalIndexMap.get(nonTerminal.Parent.Index))); } foreach (Edge.Edge e in nonTerminal.IncomingSecondaryEdges) { if (e.hasLabel(symbolTables.getSymbolTable("SECEDGELABEL"))) { writer.BaseStream.WriteByte('\t'); writer.Write(e.getLabelSymbol(symbolTables.getSymbolTable("SECEDGELABEL"))); writer.BaseStream.WriteByte('\t'); if (e.Source is NonTerminalNode) { // writer.write(Integer.toString(e.getSource().getIndex()+START_ID_OF_NONTERMINALS-1)); writer.Write(Convert.ToString(nonTerminalIndexMap.get(e.Source.Index))); } else { writer.Write(Convert.ToString(e.Source.Index)); } } } writer.Write("\n"); } catch (IOException e) { throw new DataFormatException("The Negra writer is not able to write the non-terminals. ", e); } } }