Диссертация (1137218), страница 23
Текст из файла (страница 23)
The ApacheOpenNLPlibrary.URL:http://opennlp.apache.org/documentation/1.5.3/manual/opennlp.html.96. Haussler, D. Convolution kernels on discrete structures. 1999.97. Mel’cuk, I. Communicative Organization in Natural Language: TheSemantic-communicative Structure of Sentences.
‒ John BenjaminsPublishing, 2001.98. Croft, B., Metzler, D., Strohman, T. Search Engines - InformationRetrieval in Practice. Pearson Education. North America. 2009.99. Salton, G., Buckley, C. Term-weighting approaches in automatic textretrieval. Information Processing & Management 24(5): 513—23. 1988.100. John, G.H., Langley, P. Estimating Continuous Distributions inBayesian Classifiers. In Eleventh Conference on Uncertainty inArtificial Intelligence, San Mateo, 338-45.
1995.101. Kohavi, R. A Study of Cross-Validation and Bootstrap for AccuracyEstimation and Model Selection. International Joint Conference onArtificial Intelligence. 1137-43. 1995.102. Moore, JS, Boyer RS. MJRTY - A Fast Majority Vote Algorithm.Automated Reasoning: Essays in Honor of Woody Bledsoe, AutomatedReasoning Series, Kluwer Academic Publishers, Dordrecht, TheNetherlands, pp. 105-17. 1991.103. Yevtushenko, S.A. System of data analysis "Concept Explorer".Proceedings of the 7th national conference on Artificial IntelligenceKII-2000. Russia.
2000. P. 127-134.104. Valtchev, P., Grosser, D., Roume, C., Hacene, M.R. GALICIA: anopenplatformforlattices,inUsingConceptualStructures.161Contributions to the 11th Intl. Conference on Conceptual Structures(ICCS'03). – 2003. P.
241-254.105. Becker, P., Hereth J., and Stumme G. ToscanaJ: An Open SourceTool for Qualitative Data Analysis. Workshop FCAKDD of the 15thEuropean Conference on Artificial Intelligence (ECAI 2002). Lyon. –2002.106. Priss, U. FcaStone - FCA file format conversion and interoperabilitysoftware. Conceptual Structures Tool Interoperability Workshop (CSTIW). – 2008.107. Lahcen, B., Kwuida, L. Lattice Miner: A Tool for Concept LatticeConstructionandExploration.SupplementaryProceedingofInternational Conference on Formal concept analysis. –2010.108. 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.109. Lin,J.Data-IntensiveTextProcessingwithMapReduce.intool.github.io/MapReduceAlgorithms/MapReduce-book-final.pdf.–2013.110. Shawe-Taylor, J., Cristianini, N. Kernel Methods for PatternAnalysis. Cambridge Univ. Press. – 2004.111.
Cumby, C., Roth, D. Kernel methods for relational learning. ICML.– 2003.112. Moschitti, A., Pighin, D., Basili, R. Tree kernels for semantic rolelabeling. Comput. Linguist. 34, 2. – 2008. P. 193-224.113. Moschitti, A. Efficient convolution kernels for dependency andconstituent syntactic trees.
Proceedings of ECML.‒ 2006.162114. Joachims, T. Making large-scale SVM learning practical. Advancesin Kernel Methods. ‒ Support Vector Learning.‒ 1999.115. Severyn, A., Moschitti, A. Structural relationships for large-scalelearning of answer re-ranking. SIGIR 2012.‒ 2012.‒ P.741-750.116. Severyn, A., Moschitti, A. 2012. Fast Support Vector Machines forConvolution Tree Kernels. Data Mining Knowledge Discovery 25.‒2012.‒ P.325-357.117. 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.118.
Zhang, D., Sun Lee., W. Question Classification using SupportVector Machines. In Proceedings of the 26th ACM SIGIR.‒ 2003.‒ P.26-32.119. Yang, X.F., Su, J., Chew, C.L. Kernel-based pronoun resolution withstructured syntactic knowledge. COLING-ACL’2006.‒ 2006.120. 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.121. Levy, R., Galen, A. Tregex and Tsurgeon: tools for querying andmanipulating tree data structures. 5th International Conference onLanguage Resources and Evaluation (LREC 2006).‒ 2006.122. Suzuki, J., Hirao, H., Sasaki, Y., 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.163123.
Recasens, M., de Marneffe, M., Potts, C. The Life and Death ofDiscourse Entities: Identifying Singleton Mentions. Proceedings ofNAACL 2013. ‒2013.124. Joty, S., Carenini, G., Ng, R. T. A Novel Discriminative Frameworkfor Sentence-Level Discourse Analysis. Proceedings of the 2012 JointConference on Empirical Methods in Natural Language Processing andComputational Natural Language Learning, EMNLP-CoNLL’12, pages904–915,JejuIsland,Korea.AssociationforComputationalLinguistics.
2012.125. Joty, S., Carenini, G., Ng, R. T., Mehdad, Y. Combining Intra- andMulti-sentential Rhetorical Parsing for Document-level DiscourseAnalysis. Proceedings of the 51st Annual Meeting of the Associationfor Computational Linguistics, Sofia, Bulgaria. 2013.126. Joty, S., Moschitti, A. Discriminative Reranking of Discourse ParsesUsing Tree Kernels. Proceedings of EMNLP 2014.
2014.127. Hausser, R. A Computational Model of Natural LanguageCommunication; Interpretation, Inference, and Production in DatabaseSemantics. Springer, Berlin, Heidelberg, New York. ‒2006.128. Kamp, H., Reyle, U. Introduction to Model theoretic Semantics ofNatural Language, Formal Logic and Discourse Representation Theory.Kluwer Academic Publishers, Dordrecht.
‒ 1993.129. Carpineto, C., Romano, G. A Lattice Conceptual Clustering Systemand Its Application to Browsing Retrieval. Machine Learning 24(2): 95122.‒ 1996.130. Carpineto, C., Romano, G. Using concept lattices for text retrievaland mining. Formal Concept Analysis. Springer-Verlag, Berlin,Heidelberg. 161-179. 2005.164131. Priss, U. Lattice-based information retrieval. Knowl. Organ. 27,132–142. 2000.132. 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.133. 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.134. Bron, C., Kerbosch, J. Algorithm 457: finding all cliques of anundirected graph, Commun. ACM (ACM) 16 (9). ‒1973. P. 575–577.135.
Vismara, P., Benoît, V. Finding Maximum Common ConnectedSubgraphsUsingCliqueDetectionorConstraintSatisfactionAlgorithms. Modelling, Computation and Optimization in InformationSystems and Management Sciences, Springer. ‒ 2008.136. Messai, N., Devignes, M., Napoli, A., Smaïl-Tabbone, M. ManyValued Concept Lattices for Conceptual Clustering and InformationRetrieval.
ECAI 2008. ‒ 2008. P.127-131.137. Zamir, O., Etzioni, O. Grouper: a dynamic clustering interface toWeb search results. Computer Networks 31.11. ‒ 1999. P.1361-1374.138. 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.139. Cimiano, P. Ontology Learning and Population from Text:Algorithms, Evaluation and Applications. Springer-Verlag New York,Inc., Secaucus, NJ, USA. 2006.165ПриложенияПриложение 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;}166public 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 RST167* 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);=168List<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();169if(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;}}170// 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,171List<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;}/**172[[<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=173nodes=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();new174String 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&&175ParseTreeNode 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) {176if (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(" ");177ParseTreeNode 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;}178public 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());new179}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),предназначенногодлянахожденияиобработкикореферентных связей, риторических отношений и коммуникативныхдействий и построения на их основе расширенных групп.Построение кореферентных связей.