/// <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(); }
/// <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(); }