Example #1
0
        /*/// <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();
        }
Example #2
0
        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);
        }
Example #3
0
 /// <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());
     }
 }