/*/// <summary> * /// Constructs context information for the specified mention. * /// </summary> * /// <param name="mentionParse"> * /// Mention parse structure for which context is to be constructed. * /// </param> * /// <param name="mentionIndex"> * /// mention position in sentence. * /// </param> * /// <param name="mentionsInSentence"> * /// Number of mentions in the sentence. * /// </param> * /// <param name="mentionsInDocument"> * /// Number of mentions in the document. * /// </param> * /// <param name="sentenceIndex"> * /// Sentence number for this mention. * /// </param> * /// <param name="nameType"> * /// The named-entity type for this mention. * /// </param> * /// <param name="headFinder"> * /// Object which provides head information. * /// </param> * public MentionContext(Parse mentionParse, int mentionIndex, int mentionsInSentence, int mentionsInDocument, int sentenceIndex, string nameType, HeadFinder headFinder) { * nounLocation = mentionIndex; * maxNounLocation = mentionsInDocument; * sentenceNumber = sentenceIndex; * parse = mentionParse; * indexSpan = mentionParse.getSpan(); * prevToken = mentionParse.getPreviousToken(); * nextToken = mentionParse.getNextToken(); * head = headFinder.getLastHead(mentionParse); * List headTokens = head.getTokens(); * tokens = (Parse[]) headTokens.toArray(new Parse[headTokens.size()]); * basalNextToken = head.getNextToken(); * indexHeadSpan = head.getSpan(); * nonDescriptorStart = 0; * initHeads(headFinder.getHeadIndex(head)); * this.neType= nameType; * if (PartsOfSpeech.IsNoun(getHeadTokenTag()) && !PartsOfSpeech.IsProperNoun(getHeadTokenTag())) { * //if (PartsOfSpeech.IsProperNoun(headTokenTag) && neType != null) { * this.synsets = getSynsetSet(this); * } * else { * this.synsets=Collections.EMPTY_SET; * } * gender = GenderEnum.UNKNOWN; * this.genderProb = 0d; * number = NumberEnum.UNKNOWN; * this.numberProb = 0d; * } */ private void InitializeHeads(int headIndex) { HeadTokenIndex = headIndex; mHeadToken = (IParse)Tokens[HeadTokenIndex]; HeadTokenText = mHeadToken.ToString(); HeadTokenTag = mHeadToken.SyntacticType; FirstToken = (IParse)Tokens[0]; FirstTokenTag = FirstToken.SyntacticType; FirstTokenText = FirstToken.ToString(); }
public static TokenInputStream MakeTokenInput(string sInput) { var stream = new TokenInputStream(); var splited = sInput.Split(TokenConfigs.SeparatorChar); var first = new FirstToken() { Value = splited.FirstOrDefault(), TokenType = TokenType.Init_Line }; stream.AddToken(first); var execPlan = splited.Skip(1).Project(ss => string.Join(TokenConfigs.SeparatorString, ss)); var sSeqs = execPlan.Split(new string[] { TokenConfigs.Seq }, StringSplitOptions.None); var seqSymbols = sSeqs.Length.Project(l => l - 1).ToEnumerable(() => new SeqSymbolToken() { Value = TokenConfigs.Seq, }); int cont = 1; if (seqSymbols.Any()) { foreach (var seq in sSeqs) { var seqs = MakePipeExpressions(seq); stream.AddTokens(seqs); if (cont < sSeqs.Length) { stream.AddToken(seqSymbols.First()); } cont++; } } else { //no seq symbol stream.AddTokens(MakePipeExpressions(execPlan)); } return(stream); }
/// <summary> /// 获取标签内容的字符串引用 /// </summary> /// <returns></returns> public override String ToString() { if (LastToken != null && FirstToken != LastToken) { StringBuilder sb = new StringBuilder(); Token t = FirstToken; sb.Append(t.ToString()); while ((t = t.Next) != null && t != LastToken) { sb.Append(t.ToString()); } sb.Append(LastToken.ToString()); return(sb.ToString()); } else { return(FirstToken.ToString()); } }