Пример #1
0
        /// <summary>
        /// .ctor()
        /// </summary>
        /// <param name="crfAttributes">Составные части N-граммы</param>
        public CRFNgram(CRFAttribute[] crfAttributes)
        {
            CRFAttributes = crfAttributes;

            var attrs_len = CRFAttributes.Length;

            switch (attrs_len)
            {
            case 1:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '=';
            }
                #endregion
                break;

            case 2:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                CRFAttribute_1 = CRFAttributes[1];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '|' +
                                   CRFAttribute_1.AttributeName + "[" + CRFAttribute_1.Position + ']' + '=';
            }
                #endregion
                break;

            case 3:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                CRFAttribute_1 = CRFAttributes[1];
                CRFAttribute_2 = CRFAttributes[2];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '|' +
                                   CRFAttribute_1.AttributeName + "[" + CRFAttribute_1.Position + ']' + '|' +
                                   CRFAttribute_2.AttributeName + "[" + CRFAttribute_2.Position + ']' + '=';
            }
                #endregion
                break;

            case 4:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                CRFAttribute_1 = CRFAttributes[1];
                CRFAttribute_2 = CRFAttributes[2];
                CRFAttribute_3 = CRFAttributes[3];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '|' +
                                   CRFAttribute_1.AttributeName + "[" + CRFAttribute_1.Position + ']' + '|' +
                                   CRFAttribute_2.AttributeName + "[" + CRFAttribute_2.Position + ']' + '|' +
                                   CRFAttribute_3.AttributeName + "[" + CRFAttribute_3.Position + ']' + '=';
            }
                #endregion
                break;

            case 5:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                CRFAttribute_1 = CRFAttributes[1];
                CRFAttribute_2 = CRFAttributes[2];
                CRFAttribute_3 = CRFAttributes[3];
                CRFAttribute_4 = CRFAttributes[4];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '|' +
                                   CRFAttribute_1.AttributeName + "[" + CRFAttribute_1.Position + ']' + '|' +
                                   CRFAttribute_2.AttributeName + "[" + CRFAttribute_2.Position + ']' + '|' +
                                   CRFAttribute_3.AttributeName + "[" + CRFAttribute_3.Position + ']' + '|' +
                                   CRFAttribute_4.AttributeName + "[" + CRFAttribute_4.Position + ']' + '=';
            }
                #endregion
                break;

            case 6:
                #region
            {
                CRFAttribute_0 = CRFAttributes[0];
                CRFAttribute_1 = CRFAttributes[1];
                CRFAttribute_2 = CRFAttributes[2];
                CRFAttribute_3 = CRFAttributes[3];
                CRFAttribute_4 = CRFAttributes[4];
                CRFAttribute_5 = CRFAttributes[5];
                //CRFAttributes  = null;

                AttributesHeader = CRFAttribute_0.AttributeName + "[" + CRFAttribute_0.Position + ']' + '|' +
                                   CRFAttribute_1.AttributeName + "[" + CRFAttribute_1.Position + ']' + '|' +
                                   CRFAttribute_2.AttributeName + "[" + CRFAttribute_2.Position + ']' + '|' +
                                   CRFAttribute_3.AttributeName + "[" + CRFAttribute_3.Position + ']' + '|' +
                                   CRFAttribute_4.AttributeName + "[" + CRFAttribute_4.Position + ']' + '|' +
                                   CRFAttribute_5.AttributeName + "[" + CRFAttribute_5.Position + ']' + '=';
            }
                #endregion
                break;

            default:
                #region
            {
                for (var j = 0; j < attrs_len; j++)
                {
                    var attr = CRFAttributes[j];

                    AttributesHeader += attr.AttributeName + "[" + attr.Position + ']' + '|';
                }
                AttributesHeader = AttributesHeader.Remove(AttributesHeader.Length - 1) + '=';
            }
                #endregion
                break;
            }

            CRFAttributesLength    = attrs_len;
            AttributesHeaderLength = AttributesHeader.Length;

            _GCHandle             = GCHandle.Alloc(AttributesHeader, GCHandleType.Pinned);
            _AttributesHeaderBase = (char *)_GCHandle.AddrOfPinnedObject().ToPointer();
        }
Пример #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="crfAttributes">Составные части N-граммы</param>
        public CRFNgram(CRFAttribute[] crfAttributes)
        {
            CRFAttributes = crfAttributes;

            var attrs_len = CRFAttributes.Length;

            switch (attrs_len)
            {
            case 1:
            {
                CRFAttribute_0   = CRFAttributes[0];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'='}";
            }
            break;

            case 2:
            {
                CRFAttribute_0   = CRFAttributes[0];
                CRFAttribute_1   = CRFAttributes[1];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'|'}{CRFAttribute_1.AttributeName}[{CRFAttribute_1.Position}{']'}{'='}";
            }
            break;

            case 3:
            {
                CRFAttribute_0   = CRFAttributes[0];
                CRFAttribute_1   = CRFAttributes[1];
                CRFAttribute_2   = CRFAttributes[2];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'|'}{CRFAttribute_1.AttributeName}[{CRFAttribute_1.Position}{']'}{'|'}{CRFAttribute_2.AttributeName}[{CRFAttribute_2.Position}{']'}{'='}";
            }
            break;

            case 4:
            {
                CRFAttribute_0   = CRFAttributes[0];
                CRFAttribute_1   = CRFAttributes[1];
                CRFAttribute_2   = CRFAttributes[2];
                CRFAttribute_3   = CRFAttributes[3];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'|'}{CRFAttribute_1.AttributeName}[{CRFAttribute_1.Position}{']'}{'|'}{CRFAttribute_2.AttributeName}[{CRFAttribute_2.Position}{']'}{'|'}{CRFAttribute_3.AttributeName}[{CRFAttribute_3.Position}{']'}{'='}";
            }
            break;

            case 5:
            {
                CRFAttribute_0   = CRFAttributes[0];
                CRFAttribute_1   = CRFAttributes[1];
                CRFAttribute_2   = CRFAttributes[2];
                CRFAttribute_3   = CRFAttributes[3];
                CRFAttribute_4   = CRFAttributes[4];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'|'}{CRFAttribute_1.AttributeName}[{CRFAttribute_1.Position}{']'}{'|'}{CRFAttribute_2.AttributeName}[{CRFAttribute_2.Position}{']'}{'|'}{CRFAttribute_3.AttributeName}[{CRFAttribute_3.Position}{']'}{'|'}{CRFAttribute_4.AttributeName}[{CRFAttribute_4.Position}{']'}{'='}";
            }
            break;

            case 6:
            {
                CRFAttribute_0   = CRFAttributes[0];
                CRFAttribute_1   = CRFAttributes[1];
                CRFAttribute_2   = CRFAttributes[2];
                CRFAttribute_3   = CRFAttributes[3];
                CRFAttribute_4   = CRFAttributes[4];
                CRFAttribute_5   = CRFAttributes[5];
                AttributesHeader = $"{CRFAttribute_0.AttributeName}[{CRFAttribute_0.Position}{']'}{'|'}{CRFAttribute_1.AttributeName}[{CRFAttribute_1.Position}{']'}{'|'}{CRFAttribute_2.AttributeName}[{CRFAttribute_2.Position}{']'}{'|'}{CRFAttribute_3.AttributeName}[{CRFAttribute_3.Position}{']'}{'|'}{CRFAttribute_4.AttributeName}[{CRFAttribute_4.Position}{']'}{'|'}{CRFAttribute_5.AttributeName}[{CRFAttribute_5.Position}{']'}{'='}";
            }
            break;

            default:
            {
                for (var j = 0; j < attrs_len; j++)
                {
                    var attr = CRFAttributes[j];
                    AttributesHeader += $"{attr.AttributeName}[{attr.Position}{']'}{'|'}";
                }
                AttributesHeader = $"{AttributesHeader.Remove(AttributesHeader.Length - 1)}{'='}";
            }
            break;
            }

            CRFAttributesLength    = attrs_len;
            AttributesHeaderLength = AttributesHeader.Length;

            _GCHandle             = GCHandle.Alloc(AttributesHeader, GCHandleType.Pinned);
            _attributesHeaderBase = (char *)_GCHandle.AddrOfPinnedObject().ToPointer();
        }