public NameSampleSequenceStream(IObjectStream <NameSample> psi, INameContextGenerator pcg, bool useOutcomes, ISequenceCodec <string> seqCodec) { this.psi = psi; this.useOutcomes = useOutcomes; this.pcg = pcg; this.seqCodec = seqCodec; }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderFactory"/> with the given parameters. /// </summary> /// <param name="featureGeneratorBytes">The feature generator bytes.</param> /// <param name="resources">The resources dictionary.</param> /// <param name="seqCodec">The sequence codec.</param> public TokenNameFinderFactory(byte[] featureGeneratorBytes, Dictionary <string, object> resources, ISequenceCodec <string> seqCodec) { FeatureGenerator = featureGeneratorBytes; Resources = resources; SequenceCodec = seqCodec; }
public NameFinderEventStream(IObjectStream <NameSample> dataStream, string type, INameContextGenerator contextGenerator, ISequenceCodec <string> codec) : base(dataStream) { this.codec = codec ?? new BioCodec(); additionalContextFeatureGenerator = new AdditionalContextFeatureGenerator(); this.contextGenerator = contextGenerator; this.contextGenerator.AddFeatureGenerator(new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8)); // TODO: How to make the type really do something?! // Type = type ?? "default"; }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderModel" /> class. /// </summary> /// <param name="languageCode">The language code.</param> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="manifestInfoEntries">The manifest information entries.</param> /// <param name="seqCodec">The sequence codec.</param> /// <param name="factory">The tool factory.</param> /// <exception cref="InvalidOperationException">Model not compatible with name finder!</exception> /// <exception cref="System.InvalidOperationException">Model not compatible with name finder!</exception> public TokenNameFinderModel( string languageCode, ISequenceClassificationModel<string> nameFinderModel, byte[] generatorDescriptor, Dictionary<string, object> resources, Dictionary<string, string> manifestInfoEntries, ISequenceCodec<string> seqCodec, TokenNameFinderFactory factory) : base(ComponentName, languageCode, manifestInfoEntries, factory) { Init(nameFinderModel, generatorDescriptor, resources, seqCodec); if (!seqCodec.AreOutcomesCompatible(nameFinderModel.GetOutcomes())) { throw new InvalidOperationException("Model not compatible with name finder!"); } }
/// <summary> /// Initializes a new instance of the <see cref="NameFinderME"/> using the given <see cref="TokenNameFinderModel"/>. /// </summary> /// <param name="model">The model.</param> /// <exception cref="System.ArgumentNullException">model</exception> public NameFinderME(TokenNameFinderModel model) { if (model == null) throw new ArgumentNullException("model"); sequenceCodec = model.Factory.CreateSequenceCodec(); sequenceValidator = sequenceCodec.CreateSequenceValidator(); this.model = model.NameFinderSequenceModel; contextGenerator = model.Factory.CreateContextGenerator(); // TODO: We should deprecate this. And come up with a better solution! additionalContextFeatureGenerator = new AdditionalContextFeatureGenerator(); contextGenerator.AddFeatureGenerator( new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8)); }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderModel"/> class. /// </summary> /// <param name="languageCode">The language code.</param> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="manifestInfoEntries">The manifest information entries.</param> /// <param name="sequenceCodec">The sequence codec.</param> /// <exception cref="System.InvalidOperationException">Model not compatible with name finder!</exception> public TokenNameFinderModel( string languageCode, ISequenceClassificationModel <string> nameFinderModel, byte[] generatorDescriptor, Dictionary <string, object> resources, Dictionary <string, string> manifestInfoEntries, ISequenceCodec <string> sequenceCodec) : base(ComponentName, languageCode, manifestInfoEntries) { Init(nameFinderModel, generatorDescriptor, resources, sequenceCodec); if (!sequenceCodec.AreOutcomesCompatible(nameFinderModel.GetOutcomes())) { throw new InvalidOperationException("Model not compatible with name finder!"); } }
/// <summary> /// Initializes a new instance of the <see cref="NameFinderME"/> using the given <see cref="TokenNameFinderModel"/>. /// </summary> /// <param name="model">The model.</param> /// <exception cref="System.ArgumentNullException">model</exception> public NameFinderME(TokenNameFinderModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } sequenceCodec = model.Factory.CreateSequenceCodec(); sequenceValidator = sequenceCodec.CreateSequenceValidator(); this.model = model.NameFinderSequenceModel; contextGenerator = model.Factory.CreateContextGenerator(); // TODO: We should deprecate this. And come up with a better solution! additionalContextFeatureGenerator = new AdditionalContextFeatureGenerator(); contextGenerator.AddFeatureGenerator( new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8)); }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderModel" /> class. /// </summary> /// <param name="languageCode">The language code.</param> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="beamSize">Size of the beam.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="manifestInfoEntries">The manifest information entries.</param> /// <param name="sequenceCodec">The sequence codec.</param> /// <exception cref="System.InvalidOperationException">Model not compatible with name finder!</exception> public TokenNameFinderModel( string languageCode, IMaxentModel nameFinderModel, int beamSize, byte[] generatorDescriptor, Dictionary <string, object> resources, Dictionary <string, string> manifestInfoEntries, ISequenceCodec <string> sequenceCodec) : base(ComponentName, languageCode, manifestInfoEntries) { Manifest[Parameters.BeamSize] = beamSize.ToString(CultureInfo.InvariantCulture); Init(nameFinderModel, generatorDescriptor, resources, sequenceCodec); if (!IsModelValid(nameFinderModel)) { throw new InvalidOperationException("Model not compatible with name finder!"); } }
/// <summary> /// Initializes a new instance of the <see cref="NameSampleSequenceStream"/> class. /// </summary> /// <param name="psi">The sample stream.</param> /// <param name="pcg">The context generator.</param> /// <param name="useOutcomes">if set to <c>true</c> will be used in the samples.</param> /// <param name="seqCodec">The sequence codec.</param> public NameSampleSequenceStream(IObjectStream<NameSample> psi, INameContextGenerator pcg, bool useOutcomes, ISequenceCodec<string> seqCodec) { this.psi = psi; this.useOutcomes = useOutcomes; this.pcg = pcg; this.seqCodec = seqCodec; }
/// <summary> /// Initializes the specified name finder model. /// </summary> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="seqCodec">The seq codec.</param> /// <exception cref="System.ArgumentException"></exception> private void Init(object nameFinderModel, byte[] generatorDescriptor, Dictionary <string, object> resources, ISequenceCodec <string> seqCodec) { if (!Library.TypeResolver.IsRegistered(seqCodec.GetType())) { throw new NotSupportedException("The sequence codec " + seqCodec.GetType().Name + " is not registered on the TypeResolver."); } Manifest[SequenceCodecNameParam] = Library.TypeResolver.ResolveName(seqCodec.GetType()); artifactMap[MaxentModelEntry] = nameFinderModel; if (generatorDescriptor != null && generatorDescriptor.Length > 0) { artifactMap[GeneratorDescriptorEntry] = generatorDescriptor; } if (resources != null) { // The resource map must not contain key which are already taken // like the name finder maxent model name if (resources.ContainsKey(MaxentModelEntry) || resources.ContainsKey(GeneratorDescriptorEntry)) { throw new ArgumentException(); } // TODO: Add checks to not put resources where no serializer exists, // make that case fail here, should be done in the BaseModel artifactMap.AddRange(resources); } CheckArtifactMap(); }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderModel" /> class. /// </summary> /// <param name="languageCode">The language code.</param> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="beamSize">Size of the beam.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="manifestInfoEntries">The manifest information entries.</param> /// <param name="sequenceCodec">The sequence codec.</param> /// <param name="factory">The tool factory.</param> /// <exception cref="InvalidOperationException">Model not compatible with name finder!</exception> /// <exception cref="System.InvalidOperationException">Model not compatible with name finder!</exception> public TokenNameFinderModel( string languageCode, IMaxentModel nameFinderModel, int beamSize, byte[] generatorDescriptor, Dictionary<string, object> resources, Dictionary<string, string> manifestInfoEntries, ISequenceCodec<string> sequenceCodec, TokenNameFinderFactory factory) : base(ComponentName, languageCode, manifestInfoEntries, factory) { Manifest[Parameters.BeamSize] = beamSize.ToString(CultureInfo.InvariantCulture); Init(nameFinderModel, generatorDescriptor, resources, sequenceCodec); if (!IsModelValid(nameFinderModel)) throw new InvalidOperationException("Model not compatible with name finder!"); }
/// <summary> /// Initializes the specified name finder model. /// </summary> /// <param name="nameFinderModel">The name finder model.</param> /// <param name="generatorDescriptor">The generator descriptor.</param> /// <param name="resources">The resources.</param> /// <param name="seqCodec">The seq codec.</param> /// <exception cref="System.ArgumentException"></exception> private void Init(object nameFinderModel, byte[] generatorDescriptor, Dictionary<string, object> resources, ISequenceCodec<string> seqCodec) { if (!Library.TypeResolver.IsRegistered(seqCodec.GetType())) throw new NotSupportedException("The sequence codec " + seqCodec.GetType().Name + " is not registered on the TypeResolver."); Manifest[SequenceCodecNameParam] = Library.TypeResolver.ResolveName(seqCodec.GetType()); artifactMap[MaxentModelEntry] = nameFinderModel; if (generatorDescriptor != null && generatorDescriptor.Length > 0) artifactMap[GeneratorDescriptorEntry] = generatorDescriptor; if (resources != null) { // The resource map must not contain key which are already taken // like the name finder maxent model name if (resources.ContainsKey(MaxentModelEntry) || resources.ContainsKey(GeneratorDescriptorEntry)) { throw new ArgumentException(); } // TODO: Add checks to not put resources where no serializer exists, // make that case fail here, should be done in the BaseModel artifactMap.AddRange(resources); } CheckArtifactMap(); }
/// <summary> /// Initializes a new instance of the <see cref="TokenNameFinderFactory"/> with the given parameters. /// </summary> /// <param name="featureGeneratorBytes">The feature generator bytes.</param> /// <param name="resources">The resources dictionary.</param> /// <param name="seqCodec">The sequence codec.</param> public TokenNameFinderFactory(byte[] featureGeneratorBytes, Dictionary<string, object> resources, ISequenceCodec<string> seqCodec) { FeatureGenerator = featureGeneratorBytes; Resources = resources; SequenceCodec = seqCodec; }