コード例 #1
0
        public bool SetLabel(Sentence sent, TagSet tagSet)
        {
            List <string[]> tokensList = sent.TokensList;

            if (tokensList.Count != States.Length)
            {
                Logger.WriteLine(Logger.Level.warn, String.Format("Error: Inconsistent token({0}) and state({1}) size. Tokens list: {2}",
                                                                  tokensList.Count, States.Length, sent.ToString()));
                return(false);
            }

            for (int i = 0; i < tokensList.Count; i++)
            {
                string strTagName = tokensList[i][tokensList[i].Length - 1];
                int    tagId      = tagSet.GetIndex(strTagName);
                if (tagId < 0)
                {
                    Logger.WriteLine(Logger.Level.warn, String.Format("Error: tag {0} is unknown. Tokens list: {1}",
                                                                      strTagName, sent.ToString()));
                    return(false);
                }

                States[i].Label = tagId;
            }

            return(true);
        }
コード例 #2
0
ファイル: Sequence.cs プロジェクト: zhangweiabc/RNNSharp
        public void SetLabel(Sentence sent, TagSet tagSet)
        {
            List<string[]> tokensList = sent.TokensList;
            if (tokensList.Count != States.Length)
            {
                throw new DataMisalignedException(String.Format("Error: Inconsistent token({0}) and state({1}) size. Tokens list: {2}",
                    tokensList.Count, States.Length, sent.ToString()));
            }

            for (int i = 0; i < tokensList.Count; i++)
            {
                string strTagName = tokensList[i][tokensList[i].Length - 1];
                int tagId = tagSet.GetIndex(strTagName);
                if (tagId < 0)
                {
                    throw new DataMisalignedException(String.Format("Error: tag {0} is unknown. Tokens list: {1}", 
                        strTagName, sent.ToString()));
                }

                States[i].Label = tagId;
            }
        }
コード例 #3
0
ファイル: Sequence.cs プロジェクト: zero76114/RNNSharp
        public void SetLabel(Sentence sent, TagSet tagSet)
        {
            List <string[]> tokensList = sent.TokensList;

            if (tokensList.Count != States.Length)
            {
                throw new DataMisalignedException(String.Format("Error: Inconsistent token({0}) and state({1}) size. Tokens list: {2}",
                                                                tokensList.Count, States.Length, sent.ToString()));
            }

            for (int i = 0; i < tokensList.Count; i++)
            {
                string strTagName = tokensList[i][tokensList[i].Length - 1];
                int    tagId      = tagSet.GetIndex(strTagName);
                if (tagId < 0)
                {
                    throw new DataMisalignedException(String.Format("Error: tag {0} is unknown. Tokens list: {1}",
                                                                    strTagName, sent.ToString()));
                }

                States[i].Label = tagId;
            }
        }
コード例 #4
0
ファイル: RNNDecoder.cs プロジェクト: vahpetr/RNNSharp
        public int[] Process(Sentence sent)
        {
            int[] predicted = null;
            var   rnn       = GetRNNInstance();

            if (sent.TokensList.Count >= rnn.MaxSeqLength)
            {
                Logger.WriteLine($"The length of given sentnce is larger than {rnn.MaxSeqLength}, so ignore it: {sent.ToString()}");
            }
            else
            {
                predicted = rnn.IsCRFTraining ? rnn.DecodeCRF(sent, Config) : rnn.DecodeNN(sent, Config);
            }

            FreeRNNInstance(rnn);

            return(predicted);
        }