Диссертация (1137241), страница 21
Текст из файла (страница 21)
Meltzer and D.Michie (Eds.). Machine Intelligence. – 1970. – Vol. 5. Elsevier NorthHolland, New York. – P. 153–163.56. Galitsky, B., Kuznetsov, S.O. Learning communicative actions ofconflicting human agents. J. Exp. Theor. Artif. Intell.
– 2008. – Vol.20(4). – P. 277–317.57. Galitsky B., de la Rosa, J., Dobrocsi, G. Inferring the semanticproperties of sentences by mining syntactic parse trees. Data &Knowledge Engineering. – 2012. – Vol. 81–82. – P. 21–45.58. Mann, W., Matthiessen, C., Thompson, S. Rhetorical Structure Theoryand Text Analysis. Discourse Description: Diverse linguistic analysesof a fund-raising text / ed. by W. C. Mann and S. A. Thompson. –Amsterdam. – 1992. – P. 39–78.59. Collins, M., Duffy, N.Convolution kernels for natural language.Proceedings of NIPS. – 2002. – P. 625–632.60. Lee, H., Chang, A., Peirsman, Y., Chambers, N., Surdeanu, M.,Jurafsky, D.
Deterministic coreference resolution based on entitycentric, precision-ranked rules. Computational Linguistics. – 2013.61. Zelenko, D., Aone, C., Richardella, A. Kernel methods for relationextraction. JMLR. – 2003.62. Zhang, M., Che, W., Zhou, G., Aw, A., Tan, C., Liu, T., Li, S. Semanticrole labeling using a grammar-driven convolution tree kernel. IEEEtransactions on audio, speech, and language processing. – 2008.
– Vol.16 (7). – P. 1315–1329.15463. Zhang, M., Zhang, H., Li, H., Convolution Kernel over Packed ParseForest. ACL-2010. 2010.64. Vapnik, V. The Nature of Statistical Learning Theory. – SpringerVerlag. – 1995.65. Searle, J. Speech acts: An essay in the philosophy of language. –Cambridge: Cambridge University. – 1969.66. Marcu, D. From Discourse Structures to Text Summaries. Proceedingsof ACL Workshop on Intelligent Scalable Text Summarization / eds.
I.Mani and M. Maybury. – Madrid, 1997. – P. 82–88.67. Ganter, B., Kuznetsov, S. O. Pattern Structures and Their Projections,ICCS '01. – 2001. – P. 129–142.68. Kann, V.On the Approximability of the Maximum CommonSubgraph Problem. In (STACS '92) / еds. Alain Finkel and MatthiasJantzen. – 1992. – Springer-Verlag, London, UK. – P. 377–388.69. Sun, J., Zhang, M., Lim Tan, C.
Tree Sequence Kernel for NaturalLanguage. AAAI-25. – 2011.70. Dean, J. Challenges in Building Large-Scale Information RetrievalSystems.URL:research.google.com/people/jeff/WSDM09-keynote.pdf.71. Galitsky, B. Machine Learning of Syntactic Parse Trees for Search andClassification of Text. Engineering Application of AI. URL:http://dx.doi.org/10.1016/j.engappai.2012.09.017.72. Kottmann, J., Ingersoll, G., Kosin, J., Galitsky, B. The ApacheOpenNLPlibrary.URL:http://opennlp.apache.org/documentation/1.5.3/manual/opennlp.html.15573. TheStanfordNaturalLanguageProcessingGroup.URL:http://nlp.stanford.edu/.74. Haussler, D.
Convolution kernels on discrete structures. 1999.75. Mel’cuk, I. Communicative Organization in Natural Language: TheSemantic-communicative Structure of Sentences. ‒ John BenjaminsPublishing, 2001.76. Yevtushenko, S.A. System of data analysis "Concept Explorer".Proceedings of the 7th national conference on Artificial IntelligenceKII-2000. Russia. 2000. P. 127-134.77.
Conexp-clj: [сайт]. URL: http://daniel.kxpq.de/math/conexp-clj/.78. Valtchev, P., Grosser, D., Roume, C., Hacene, M.R. GALICIA: an openplatform for lattices, in Using Conceptual Structures. Contributions tothe 11th Intl. Conference on Conceptual Structures (ICCS'03).
– 2003.P. 241-254.79. Tockit: Framework for Conceptual Knowledge Processing: [сайт].URL: http://www.tockit.org.80. Becker, P., Hereth J., and Stumme G. ToscanaJ: An Open Source Toolfor Qualitative Data Analysis. Workshop FCAKDD of the 15thEuropean Conference on Artificial Intelligence (ECAI 2002). Lyon. –2002.81.
Priss, U. FcaStone - FCA file format conversion and interoperabilitysoftware. Conceptual Structures Tool Interoperability Workshop (CSTIW). – 2008.82. Lahcen, B., Kwuida, L. Lattice Miner: A Tool for Concept LatticeConstructionandExploration.SupplementaryProceedingInternational Conference on Formal concept analysis. –2010.of15683.
Borza, P.V., Sabou, O., Sacarea C. OpenFCA, an open source formalconcept analysis toolbox. Proc. of IEEE International Conference onAutomation Quality and Testing Robotics (AQTR). – 2010. P. 1-5.84. Lin,J.Data-IntensiveTextProcessingwithMapReduce.intool.github.io/MapReduceAlgorithms/MapReduce-book-final.pdf.–2013.85. Cascadingen.wikipedia.org/wiki/Cascading.http://www.cascading.org/. –2013.86. Shawe-Taylor, J., Cristianini, N. Kernel Methods for Pattern Analysis.Cambridge Univ.
Press. – 2004.87. Cumby, C., Roth, D. Kernel methods for relational learning. ICML. –2003.88. Moschitti, A., Pighin, D., Basili, R. Tree kernels for semantic rolelabeling. Comput. Linguist. 34, 2. – 2008. P. 193-224.89. Moschitti, A. Efficient convolution kernels for dependency andconstituent syntactic trees. Proceedings of ECML.‒ 2006.90. Joachims, T. Making large-scale SVM learning practical. Advances inKernel Methods.
‒ Support Vector Learning.‒ 1999.91. Severyn, A., Moschitti, A. Structural relationships for large-scalelearning of answer re-ranking. SIGIR 2012.‒ 2012.‒ P.741-750.92. Severyn, A., Moschitti, A. 2012. Fast Support Vector Machines forConvolution Tree Kernels.
Data Mining Knowledge Discovery 25.‒2012.‒ P.325-357.93. Aiolli, F., Da San Martino, G., Sperduti, A., Moschitti, A. EfficientKernel-based Learning for Trees. Proceeding of the IEEE Symposiumon Computational Intelligence and Data Mining, Honolulu.‒ 2007.15794. Zhang, D., Sun Lee., W. Question Classification using Support VectorMachines. In Proceedings of the 26th ACM SIGIR.‒ 2003.‒ P. 26-32.95. Yang, X.F., Su, J., Chew, C.L. Kernel-based pronoun resolution withstructured syntactic knowledge. COLING-ACL’2006.‒ 2006.96. Zhang, H., Zhang, M., Li, H., Aw, A., Tan, C. Forest-based treesequence to string translation model.
Proceedings of the JointConference of the 47th Annual Meeting of the ACL.‒ 2009.97. Levy, R., Galen, A. Tregex and Tsurgeon: tools for querying andmanipulating tree data structures. 5th International Conference onLanguage Resources and Evaluation (LREC 2006).‒ 2006.98. Suzuki, J., Hirao, H., Sasaki, Y and Maeda, E. Hierarchical DirectedAcyclic Graph Kernel: Methods for Structured Natural Language Data.In Proceedings of the 41th Annual Meeting of Association forComputational Linguistics (ACL).‒ 2003.99. Recasens, M., de Marneffe, M., Potts, C.
The Life and Death ofDiscourse Entities: Identifying Singleton Mentions. Proceedings ofNAACL 2013. ‒2013.100. Hausser, R. A Computational Model of Natural LanguageCommunication; Interpretation, Inference, and Production in DatabaseSemantics. Springer, Berlin, Heidelberg, New York. ‒2006.101. Kamp, H., Reyle, U. Introduction to Modeltheoretic Semantics ofNatural Language, Formal Logic and Discourse Representation Theory.Kluwer Academic Publishers, Dordrecht.
‒ 1993.102. Fomichov, V.A. Semantics-Oriented Natural Language Processing:Mathematical Models and Algorithms. IFSR International Series onSystems Science and Engineering, Vol. 27. Springer.‒ 2010.158103. Carpineto,C., Romano,G. A Lattice Conceptual Clustering Systemand Its Application to Browsing Retrieval.
Machine Learning 24(2): 95122.‒ 1996.104. Cole II, R., Eklund, P., Stumme, G. Document Retrieval for E-MailSearch and Discovery Using Formal Concept Analysis. AppliedArtificial Intelligence 17(3). ‒2003. P.257-280.105. Koester, B. Conceptual Knowledge Retrieval with FooCA:Improving Web Search Engine Results with Contexts and ConceptHierarchies. Industrial Conference on Data Mining 2006. ‒2006.
P 176190.106. Bron, C., Kerbosch, J. Algorithm 457: finding all cliques of anundirected graph, Commun. ACM (ACM) 16 (9). ‒1973. P. 575–577.107. Vismara, P., Benoît, V. Finding Maximum Common ConnectedSubgraphsUsingCliqueDetectionorConstraintSatisfactionAlgorithms. Modelling, Computation and Optimization in InformationSystems and Management Sciences, Springer. ‒ 2008.108.
Messai, N., Devignes, M., Napoli, A., Smaïl-Tabbone, M. ManyValued Concept Lattices for Conceptual Clustering and InformationRetrieval. ECAI 2008. ‒ 2008. P.127-131.109. Zamir, O., Etzioni, O. Grouper: a dynamic clustering interface toWeb search results. Computer Networks 31.11. ‒ 1999. P.1361-1374.110. Zeng, H., He, Q., Chen, Z., Ma, W., Ma, J.
Learning to cluster websearch results. Proceedings of the 27th annual international ACM SIGIRconference on Research and development in information retrieval.ACM. ‒ 2004.159ПриложенияПриложение 1В данном приложении приведены основные фрагменты кода (наязыке Java), предназначенного для реализации работы с чащамиразбора и с синтаксическими и расширенными группами.Определение класса для чащ разбора. Пакет parse_thicket, файлparse_thicket.java.public class ParseThicket {// parse treesprivate List<Tree> sentenceTrees;// there should be an arc for each sentenceprivate List<WordWordInterSentenceRelationArc> arcs;// lists of nodes for each sentence// then list for all sentencesprivate List<List<ParseTreeNode>> sentenceNodes;public List<Tree> getSentences() {return sentenceTrees;}public void setSentences(List<Tree> sentences) {this.sentenceTrees = sentences;}public List<WordWordInterSentenceRelationArc> getArcs() {return arcs;}public void setArcs(List<WordWordInterSentenceRelationArc> arcs) {this.arcs = arcs;}160public List<List<ParseTreeNode>> getNodesThicket() {return sentenceNodes;}public void setNodesThicket(List<List<ParseTreeNode>> nodesThicket){this.sentenceNodes = nodesThicket;}public ParseThicket(String paragraph){ParseCorefsBuilder builder = ParseCorefsBuilder.getInstance();ParseThicket res = builder.buildParseThicket(paragraph);this.sentenceTrees= res.sentenceTrees;this.arcs = res.arcs;}public ParseThicket(List<Tree> ptTrees,List<WordWordInterSentenceRelationArc> barcs) {this.sentenceTrees= ptTrees;this.arcs = barcs;}public String toString(){return this.sentenceTrees+"\n"+this.arcs;}}Построение групп для чащи разбора.
Пакет matching, файлPT2ThicketPhraseBuilder.RhetoricStructureArcsBuilder rstBuilder = new RhetoricStructureArcsBuilder();/** Building phrases takes a Parse Thicket and forms phrases for eachsentence individually* Then based on built phrases and obtained arcs, it builds arcs for RST161* Finally, based on all formed arcs, it extends phrases with thicketphrases*/public List<List<ParseTreeNode>> buildPT2ptPhrases(ParseThicket pt ){List<List<ParseTreeNode>>ArrayList<List<ParseTreeNode>> ();phrasesAllSent=newMap<Integer, List<List<ParseTreeNode>>> sentNumPhrases =new HashMap<Integer, List<List<ParseTreeNode>>>();// build regular phrasesfor(int nSent=0; nSent<pt.getSentences().size(); nSent++){List<ParseTreeNode>pt.getNodesThicket().get(nSent);sentence=Tree ptree = pt.getSentences().get(nSent);//ptree.pennPrint();List<List<ParseTreeNode>>buildPT2ptPhrasesForASentence(ptree, sentence);phrasesSystem.out.println(phrases);phrasesAllSent.addAll(phrases);sentNumPhrases.put(nSent, phrases);}// discover and add RST arcsList<WordWordInterSentenceRelationArc> arcsRST =rstBuilder.buildRSTArcsFromMarkersAndCorefs(pt.getArcs(),sentNumPhrases, pt);List<WordWordInterSentenceRelationArc> arcs = pt.getArcs();arcs.addAll(arcsRST);pt.setArcs(arcs);=162List<List<ParseTreeNode>>expandedPhrasesexpandTowardsThicketPhrases(phrasesAllSent, pt.getArcs(), sentNumPhrases, pt);=return expandedPhrases;}/* Take all phrases, all arcs and merge phrases into Thicket phrases.* Then add the set of generalized (Thicket) phrases to the input set of phrases* phrasesAllSent - list of lists of phrases for each sentence* sentNumPhrase - map , gives for each sentence id, the above list* arcs - arcs formed so far* pt - the built Parse Thicket*/private List<List<ParseTreeNode>> expandTowardsThicketPhrases(List<List<ParseTreeNode>> phrasesAllSent,List<WordWordInterSentenceRelationArc> arcs,Map<Integer,List<List<ParseTreeNode>>>sentNumPhrases,ParseThicket pt ) {List<List<ParseTreeNode>>ArrayList<List<ParseTreeNode>>();for(intthicketPhrasesAllSentnSent=0;=newnSent<pt.getSentences().size();nSent++){for(intmSent<pt.getSentences().size(); mSent++){mSent=nSent+1;// for given arc, find phrases connected bythis arc and add to the list of phrasesfor(WordWordInterSentenceRelationArcarc: arcs){List<List<ParseTreeNode>>phrasesFrom = sentNumPhrases.get(nSent);List<List<ParseTreeNode>>phrasesTo = sentNumPhrases.get(mSent);intfromIndex=inttoIndex=arc.getCodeFrom().getFirst();arc.getCodeTo().getFirst();163if(nSent==fromIndex&&mSent==toIndex){intsentPosFrom=intsentPosTo=arc.getCodeFrom().getSecond();arc.getCodeTo().getSecond();// for the given arc arc, findphrases which are connected by itList<ParseTreeNode>lFromFound = null, lToFound = null;for(List<ParseTreeNode>lFrom: phrasesFrom){if (lToFound!=null)break;for(ParseTreeNodelFromP: lFrom){if(lFromP.getId()!=null && lFromP.getId()==sentPosFrom){lFromFound = lFrom;break;}}}for(List<ParseTreeNode>lTo: phrasesTo){if (lToFound!=null)break;for(ParseTreeNodelToP: lTo)if(lToP.getId()!=null && lToP.getId()==sentPosTo){lToFound = lTo;break;}}164// obtain a thicket phraseand add it to the listif (lFromFound!=null &&lToFound!=null){if(identicalSubPhrase(lFromFound, lToFound))continue;List<ParseTreeNode> appended = append(lFromFound, lToFound);if(thicketPhrasesAllSent.contains(appended))continue;System.out.println("rel: "+arc);System.out.println("From "+lFromFound);System.out.println("TO "+lToFound);thicketPhrasesAllSent.add(append(lFromFound, lToFound));//break;}}}}}phrasesAllSent.addAll(thicketPhrasesAllSent);return phrasesAllSent;}/* check that one phrase is subphrase of another by lemma (ignoring other nodeproperties)* returns true if not found different word*/private boolean identicalSubPhrase(List<ParseTreeNode> lFromFound,165List<ParseTreeNode> lToFound) {for(int pos=0; pos<lFromFound.size()&& pos<lToFound.size();pos++){if(!lFromFound.get(pos).getWord().equals(lToFound.get(pos).getWord()))return false;}return true;}privateList<ParseTreeNode>append(List<ParseTreeNode>lFromFound,List<ParseTreeNode> lToFound) {List<ParseTreeNode>ArrayList<ParseTreeNode>();appendList=newappendList.addAll(lFromFound);appendList.addAll(lToFound);return appendList;}publicList<List<ParseTreeNode>>buildPT2ptPhrasesForASentence(Tree tree, List<ParseTreeNode> sentence ) {List<List<ParseTreeNode>> phrases;phrases = new ArrayList<List<ParseTreeNode>>();navigateR(tree, sentence, phrases);return phrases;}/**166[[<1>NP'Iran':NNP], [<2>VP'refuses':VBZ, <3>VP'to':TO, <4>VP'accept':VB,<5>VP'the':DT, <6>VP'UN':NNP,<7>VP'proposal':NN, <8>VP'to':TO, <9>VP'end':VB,<11>VP'dispute':NN, <12>VP'over':IN, <13>VP'its':PRP$,<10>VP'its':PRP$,<14>VP'work':NN,<15>VP'on':IN,<16>VP'nuclear':JJ,<17>VP'weapons':NNS], [<3>VP'to':TO, <4>VP'accept':VB, <5>VP'the':DT,<6>VP'UN':NNP, <7>VP'proposal':NN, <8>VP'to':TO,<10>VP'its':PRP$, <11>VP'dispute':NN, <12>VP'over':IN,<9>VP'end':VB,<13>VP'its':PRP$, <14>VP'work':NN, <15>VP'on':IN, <16>VP'nuclear':JJ,<17>VP'weapons':NNS], [<4>VP'accept':VB,<5>VP'the':DT, <6>VP'UN':NNP, <7>VP'proposal':NN,<9>VP'end':VB, <10>VP'its':PRP$, <11>VP'dispute':NN,<12>VP'over':IN, <13>VP'its':PRP$,<16>VP'nuclear':JJ, <17>VP'weapons':NNS],<14>VP'work':NN,<8>VP'to':TO,<15>VP'on':IN,[<5>NP'the':DT, <6>NP'UN':NNP, <7>NP'proposal':NN], [<8>VP'to':TO,<9>VP'end':VB, <10>VP'its':PRP$, <11>VP'dispute':NN,<12>VP'over':IN, <13>VP'its':PRP$,<16>VP'nuclear':JJ, <17>VP'weapons':NNS],<14>VP'work':NN,<15>VP'on':IN,[<9>VP'end':VB, <10>VP'its':PRP$, <11>VP'dispute':NN, <12>VP'over':IN,<13>VP'its':PRP$, <14>VP'work':NN, <15>VP'on':IN,<16>VP'nuclear':JJ,<17>VP'weapons':NNS],<11>NP'dispute':NN], [<12>PP'over':IN, <13>PP'its':PRP$,[<10>NP'its':PRP$,<14>PP'work':NN,<15>PP'on':IN,<17>PP'weapons':NNS], [<13>NP'its':PRP$, <14>NP'work':NN,<16>PP'nuclear':JJ,<15>NP'on':IN,<16>NP'nuclear':JJ,[<13>NP'its':PRP$, <14>NP'work':NN],<17>NP'weapons':NNS],[<15>PP'on':IN,<16>PP'nuclear':JJ,[<16>NP'nuclear':JJ, <17>NP'weapons':NNS]]<17>PP'weapons':NNS],***/private void navigateR(Tree t, List<ParseTreeNode> sentence,List<List<ParseTreeNode>> phrases) {if (!t.isPreTerminal()) {if (t.label() != null) {if (t.value() != null) {// if ROOT or S, returns emptyList<ParseTreeNode>parsePhrase(t.label().value(), t.toString());nodes=167nodes=assignIndexToNodes(nodes,sentence);if (!nodes.isEmpty())phrases.add(nodes);if(nodes.size()>0&&nodes.get(0).getId()==null){System.err.println("Failedalignment:"+nodes);}}}Tree[] kids = t.children();if (kids != null) {for (Tree kid : kids) {navigateR(kid,sentence, phrases);}}return ;}}/* alignment of phrases extracted from tree against the sentence as a listof lemma-pos */privateassignIndexToNodes(List<ParseTreeNode> node,List<ParseTreeNode>List<ParseTreeNode> sentence) {if (sentence==null || sentence.size()<1)return node;List<ParseTreeNode>ArrayList<ParseTreeNode>();results=for(int i= 0; i<node.size(); i++){String thisLemma = node.get(i).getWord();new168String thisPOS = node.get(i).getPos();String nextLemma = null, nextPOS = null;if (i+1<node.size()){nextLemma = node.get(i+1).getWord();nextPOS = node.get(i+1).getPos();}Boolean matchOccurred = false;int j = 0;for(j= 0; j<sentence.size(); j++){if (!(sentence.get(j).getWord().equals(thisLemma)&& (sentence.get(j).getPos().equals(thisPOS))))continue;if (i+1<node.size() && j+1 < sentence.size() &&nextLemma!=null&&!(sentence.get(j+1).getWord().equals(nextLemma)&&sentence.get(j+1).getPos().equals(nextPOS)))continue;matchOccurred = true;break;}ParseTreeNode n = node.get(i);if (matchOccurred){n.setId(sentence.get(j).getId());n.setNe(sentence.get(j).getNe());}results.add(n);}try {if(results!=null&&results.get(0)!=null && results.get(0).getId()!=null &&results.size()>1&&results.get(1)results.get(1).getId()!=null && results.get(1).getId()>0){!=null&&169ParseTreeNode p = results.get(0);p.setId(results.get(1).getId()-1);results.set(0, p);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return results;}/** [[NP'':], ['(NNP':Iran)], [VP'':], ['(VBZ':refuses)], [VP'':], ['(TO':to)],[VP'':], ['(VB':accept)], [NP'':],* ['(DT':the)], ['(NNP':UN)], ['(NN':proposal)], [VP'':], ['(TO':to)],[VP'':], ['(VB':end)], [NP'':],* ['(PRP$':its)], ['(NN':dispute)], [PP'':], ['(IN':over)], [NP'':], [NP'':],* ['(PRP$':its)], ['(NN':work)], [PP'':], ['(IN':on)], [NP'':], ['(JJ':nuclear)],['(NNS':weapons)], ['(.':.)]]** [[NP'':], ['(NNP':Iran)],[VP'':], ['(VBZ':refuses)],[VP'':], ['(TO':to)],[VP'':], ['(VB':accept)],[NP'':], ['(DT':the)], ['(NNP':UN)], ['(NN':proposal)],[VP'':], ['(TO':to)], [VP'':], ['(VB':end)],[NP'':], ['(PRP$':its)], ['(NN':dispute)],[PP'':], ['(IN':over)],[NP'':], [NP'':], ['(PRP$':its)], ['(NN':work)],[PP'':], ['(IN':on)],[NP'':], ['(JJ':nuclear)], ['(NNS':weapons)],['(.':.)]]*/private void navigateR1(Tree t, List<ParseTreeNode> sentence, int l,List<List<ParseTreeNode>> phrases) {170if (t.isPreTerminal()) {if (t.label() != null) {List<ParseTreeNode>node=parsePhrase(t.toString());if (!node.isEmpty())phrases.add(node);}return;} else {if (t.label() != null) {if (t.value() != null) {List<ParseTreeNode>node=parsePhrase(t.label().value());if (!node.isEmpty())phrases.add(node);}}Tree[] kids = t.children();if (kids != null) {for (Tree kid : kids) {navigateR1(kid,sentence, l, phrases);}}return ;}}protected List<ParseTreeNode> parsePhrase(String value) {List<ParseTreeNode> nlist = new ArrayList<ParseTreeNode>();if (value==null)return nlist;if (value.equals("ROOT")|| value.equals("S"))return nlist;String[] pos_value = value.split(" ");171ParseTreeNode node = null;if (value.endsWith("P")){node = new ParseTreeNode("", "");node.setPhraseType(value);} elseif (pos_value != null && pos_value.length==2){node = new ParseTreeNode(pos_value[0], pos_value[1]);} else {node = new ParseTreeNode(value, "");}nlist.add(node);return nlist;}private ParseTreeNode parsePhraseNode(String value) {if (value.equals("ROOT")|| value.equals("S"))return null;String[] pos_value = value.split(" ");ParseTreeNode node = null;if (value.endsWith("P")){node = new ParseTreeNode("", "");node.setPhraseType(value);} elseif (pos_value != null && pos_value.length==2){node = new ParseTreeNode(pos_value[0], pos_value[1]);} else {node = new ParseTreeNode(value, "");}return node;}172public List<ParseTreeNode> parsePhrase(String value, String fullDump){List<ParseTreeNode> nlist = new ArrayList<ParseTreeNode>();if (value.equals("S")|| value.equals("ROOT"))return nlist;Stringflattened=fullDump.replace("(ROOT","").replace("(NP","").replace("(VP","").replace("(PP","").replace("(ADVP","").replace("(UCP","").replace("(ADJP","").replace("(SBAR","").replace("(PRT", "").replace("(WHNP","").replace("))))",")").replace(")))",")").replace("))",")").replace(" ", " ").replace(" ", " ").replace("(S","").replace(") (","#").replace(") (", "#");String[] flattenedArr = flattened.split("#");for(String term: flattenedArr){term = term.replace('(', ' ').replace(')',' ').trim();if (term!=null && term.split(" ")!=null && term.split("").length==2){ParseTreeNodeParseTreeNode(term.split(" ")[1],term.split(" ")[0] );node=node.setPhraseType(value);nlist.add(node);}}return nlist;}/* recursion example */private StringBuilder toStringBuilder(StringBuilder sb, Tree t) {if (t.isLeaf()) {if (t.label() != null) {sb.append(t.label().value());new173}return sb;} else {sb.append('(');if (t.label() != null) {if (t.value() != null) {sb.append(t.label().value());}}Tree[] kids = t.children();if (kids != null) {for (Tree kid : kids) {sb.append(' ');toStringBuilder(sb, kid);}}return sb.append(')');}}Приложение 2В данном приложении приведены основные фрагменты кода (наязыкеJava),предназначенногодлянахожденияиобработкикореферентных связей, риторических отношений и коммуникативныхдействий и построения на их основе расширенных групп.Построение кореферентных связей.