Struct ImmutableDiscreteChar
Represents a distribution over characters.
Implements
Inherited Members
Namespace: Microsoft.ML.Probabilistic.Distributions
Assembly: Microsoft.ML.Probabilistic.dll
Syntax
[Quality(QualityBand.Experimental)]
[Serializable]
public struct ImmutableDiscreteChar : IImmutableDistribution<char, ImmutableDiscreteChar>, IImmutableDistribution, ICloneable, Diffable, CanCreateUniform<ImmutableDiscreteChar>, CanCreatePointMass<char, ImmutableDiscreteChar>, CanGetLogProb<char>, CanCreatePartialUniform<ImmutableDiscreteChar>, CanGetMode<char>, CanGetLogAverageOf<ImmutableDiscreteChar>, CanGetLogAverageOfPower<ImmutableDiscreteChar>, CanGetAverageLog<ImmutableDiscreteChar>, CanEnumerateSupport<char>, CanComputeProduct<ImmutableDiscreteChar>, CanComputeProduct<ImmutableDiscreteChar, ImmutableDiscreteChar>, CanComputeRatio<ImmutableDiscreteChar>, CanComputeRatio<ImmutableDiscreteChar, ImmutableDiscreteChar>, CanComputePower<ImmutableDiscreteChar>, SummableExactly<ImmutableDiscreteChar>, SummableExactly<ImmutableDiscreteChar, ImmutableDiscreteChar>, Summable<ImmutableDiscreteChar, ImmutableDiscreteChar>, Sampleable<char>, ISerializable, IEquatable<ImmutableDiscreteChar>
Properties
IsDigit
Gets a value indicating whether this distribution equals the distribution created by Digit().
Declaration
public readonly bool IsDigit { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsInitialized
Declaration
public readonly bool IsInitialized { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsLetter
Gets a value indicating whether this distribution equals the distribution created by Letter().
Declaration
public readonly bool IsLetter { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsLetterOrDigit
Gets a value indicating whether this distribution equals the distribution created by LetterOrDigit().
Declaration
public readonly bool IsLetterOrDigit { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsLower
Gets a value indicating whether this distribution equals the distribution created by Lower().
Declaration
public readonly bool IsLower { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsPointMass
Gets whether the distribution parameters represent a point mass.
Declaration
public readonly bool IsPointMass { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsUpper
Gets a value indicating whether this distribution equals the distribution created by Upper().
Declaration
public readonly bool IsUpper { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
IsWordChar
Gets a value indicating whether this distribution equals the distribution created by WordChar().
Declaration
public readonly bool IsWordChar { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
Item[Char]
Gets the probability of a given character under this distribution.
Declaration
public readonly double this[char value] { get; }
Parameters
| Type | Name | Description |
|---|---|---|
| Char | value | The character. |
Property Value
| Type | Description |
|---|---|
| Double | The probability of the character under this distribution. |
Point
Gets the point mass represented by the distribution.
Declaration
public readonly char Point { get; }
Property Value
| Type | Description |
|---|---|
| Char |
Ranges
Gets an array of character ranges with associated probabilities.
Declaration
public readonly ReadOnlyArray<ImmutableDiscreteChar.CharRange> Ranges { get; }
Property Value
| Type | Description |
|---|---|
| ReadOnlyArray<ImmutableDiscreteChar.CharRange> | An array of character ranges with associated probabilities. |
Methods
Any()
Creates a uniform distribution over all characters.
Declaration
public static ImmutableDiscreteChar Any()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
AppendRegex(StringBuilder, Boolean)
Appends a regex expression that represents this character to the supplied string builder.
Declaration
public void AppendRegex(StringBuilder stringBuilder, bool useFriendlySymbols = false)
Parameters
| Type | Name | Description |
|---|---|---|
| StringBuilder | stringBuilder | The string builder to append to |
| Boolean | useFriendlySymbols | Whether to use friendly symbols." |
AppendToString(StringBuilder)
Declaration
public void AppendToString(StringBuilder stringBuilder)
Parameters
| Type | Name | Description |
|---|---|---|
| StringBuilder | stringBuilder |
Clone()
Creates a copy of this distribution.
Declaration
public ImmutableDiscreteChar Clone()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created copy. |
Complement()
Creates a distribution which is uniform over all characters that have zero probability under this distribution i.e. that are not 'in' this distribution.
Declaration
public ImmutableDiscreteChar Complement()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Remarks
This is useful for defining characters that are not in a particular distribution e.g. not a letter or not a word character.
Create(IEnumerable<ImmutableDiscreteChar.CharRange>)
Creates a distribution given a list of constant probability character ranges.
Declaration
[Construction(new string[]{"Ranges"})]
public static ImmutableDiscreteChar Create(IEnumerable<ImmutableDiscreteChar.CharRange> ranges)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<ImmutableDiscreteChar.CharRange> | ranges | The constant-probability character ranges. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Remarks
The probabilities do not need to be normalized. The character ranges do not need to be sorted.
CreatePartialUniform()
Creates a distribution uniform over the support of the current distribution.
Declaration
public ImmutableDiscreteChar CreatePartialUniform()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
CreatePointMass(Char)
Creates a point mass distribution.
Declaration
public ImmutableDiscreteChar CreatePointMass(char point)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | point |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
CreateUniform()
Creates a uniform distribution
Declaration
public ImmutableDiscreteChar CreateUniform()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Digit()
Creates a uniform distribution over digits '0'..'9'.
Declaration
[Construction(UseWhen = "IsDigit")]
public static ImmutableDiscreteChar Digit()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Divide(ImmutableDiscreteChar, Boolean)
Computes the product of the current instance and denominator.
Declaration
public ImmutableDiscreteChar Divide(ImmutableDiscreteChar denominator, bool forceProper = false)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | denominator | |
| Boolean | forceProper | If true, the result is modified to have parameters in a safe range |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
EnumerateSupport()
Enumerates over the support of the distribution instance.
Declaration
public IEnumerable<char> EnumerateSupport()
Returns
| Type | Description |
|---|---|
| IEnumerable<Char> | The character values with non-zero mass. |
Equals(ImmutableDiscreteChar)
Checks if that equals to this distribution (i.e. represents the same distribution over characters).
Declaration
public bool Equals(ImmutableDiscreteChar that)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | that | The object to compare this distribution with. |
Returns
| Type | Description |
|---|---|
| Boolean | true if this distribution is equal to |
Equals(Object)
Checks if obj equals to this distribution (i.e. represents the same distribution over characters).
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | obj | The object to compare this distribution with. |
Returns
| Type | Description |
|---|---|
| Boolean | true if this distribution is equal to |
Overrides
FromVector(PiecewiseVector)
Creates a point character from a vector of (unnormalized) character probabilities.
Declaration
public static ImmutableDiscreteChar FromVector(PiecewiseVector vector)
Parameters
| Type | Name | Description |
|---|---|---|
| PiecewiseVector | vector | The vector of unnormalized probabilities. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
FromVector(Vector)
Creates a point character from a vector of (unnormalized) character probabilities.
Declaration
public static ImmutableDiscreteChar FromVector(Vector vector)
Parameters
| Type | Name | Description |
|---|---|---|
| Vector | vector | The vector of unnormalized probabilities. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
GetAverageLog(ImmutableDiscreteChar)
The expected logarithm of that distribution under this distribution.
Declaration
public double GetAverageLog(ImmutableDiscreteChar distribution)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | distribution |
Returns
| Type | Description |
|---|---|
| Double |
|
Remarks
This is also known as the cross entropy.
GetHashCode()
Gets the hash code of this distribution.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 | The hash code. |
Overrides
GetImpliedCharClasses(ImmutableDiscreteChar.CharClasses)
Declaration
public static ImmutableDiscreteChar.CharClasses GetImpliedCharClasses(ImmutableDiscreteChar.CharClasses charClass)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar.CharClasses | charClass |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar.CharClasses |
GetLogAverageOf(ImmutableDiscreteChar)
The log-probability that two distributions would draw the same sample.
Declaration
public double GetLogAverageOf(ImmutableDiscreteChar distribution)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | distribution |
Returns
| Type | Description |
|---|---|
| Double |
|
Remarks
This can be considered a type of inner product between distributions.
GetLogAverageOfPower(ImmutableDiscreteChar, Double)
The log-integral of one distribution times another raised to a power.
Declaration
public double GetLogAverageOfPower(ImmutableDiscreteChar distribution, double power)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | distribution | |
| Double | power | The exponent |
Returns
| Type | Description |
|---|---|
| Double |
|
Remarks
This is not the same as GetLogAverageOf(that^power) because it includes the normalization constant of that.
GetLogProb(Char)
Evaluate the log of the density function at the specified domain value
Declaration
public double GetLogProb(char value)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | value |
Returns
| Type | Description |
|---|---|
| Double | The log density |
GetMode()
Gets the mode of this distribution.
Declaration
public char GetMode()
Returns
| Type | Description |
|---|---|
| Char | The mode. |
GetProbs()
Gets a vector of character probabilities under this distribution.
Declaration
public PiecewiseVector GetProbs()
Returns
| Type | Description |
|---|---|
| PiecewiseVector | A vector of character probabilities. |
InRange(Char, Char)
Creates a uniform distribution over characters in a given range.
Declaration
public static ImmutableDiscreteChar InRange(char start, char end)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | start | The start of the range (inclusive). |
| Char | end | The end of the range (inclusive). |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
InRanges(Char[])
Creates a distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in an array whose length must therefore be even.
Declaration
public static ImmutableDiscreteChar InRanges(params char[] startEndPairs)
Parameters
| Type | Name | Description |
|---|---|---|
| Char[] | startEndPairs | The array of range starts and ends. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
InRanges(IEnumerable<Char>)
Creates a distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in a sequence whose length must therefore be even.
Declaration
public static ImmutableDiscreteChar InRanges(IEnumerable<char> startEndPairs)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<Char> | startEndPairs | The sequence of range starts and ends. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
IsPartialUniform()
Checks whether the distribution is uniform over its support.
Declaration
public bool IsPartialUniform()
Returns
| Type | Description |
|---|---|
| Boolean | true if the distribution is uniform over its support, false otherwise. |
IsUniform()
Checks whether this distribution is a uniform distribution over all characters.
Declaration
public bool IsUniform()
Returns
| Type | Description |
|---|---|
| Boolean | true if this distribution is a uniform distribution over all possible characters, false otherwise. |
Letter()
Creates a uniform distribution over letters.
Declaration
[Construction(UseWhen = "IsLetter")]
public static ImmutableDiscreteChar Letter()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
LetterOrDigit()
Creates a uniform distribution over letters and '0'..'9'.
Declaration
[Construction(UseWhen = "IsLetterOrDigit")]
public static ImmutableDiscreteChar LetterOrDigit()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Lower()
Creates a uniform distribution over lowercase letters.
Declaration
[Construction(UseWhen = "IsLower")]
public static ImmutableDiscreteChar Lower()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
MaxDiff(Object)
Gets the maximum difference between the character probabilities under this distribution and a given one.
Declaration
public double MaxDiff(object distribution)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | distribution | The distribution to compute the maximum probability difference with. |
Returns
| Type | Description |
|---|---|
| Double | The computed maximum probability difference. |
Multiply(ImmutableDiscreteChar)
Computes the product of the current instance and other.
Declaration
public ImmutableDiscreteChar Multiply(ImmutableDiscreteChar other)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | other |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The product. |
NonWordChar()
Creates a uniform distribution over all characters except (letter, digit and '_').
Declaration
public static ImmutableDiscreteChar NonWordChar()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
OneOf(Char[])
Creates a distribution which is uniform over the specified set of characters.
Declaration
public static ImmutableDiscreteChar OneOf(params char[] chars)
Parameters
| Type | Name | Description |
|---|---|---|
| Char[] | chars | The characters. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
OneOf(IEnumerable<Char>)
Creates a distribution which is uniform over the specified set of characters.
Declaration
public static ImmutableDiscreteChar OneOf(IEnumerable<char> chars)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<Char> | chars | The characters. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
PointMass(Char)
Creates a point mass character distribution.
Declaration
public static ImmutableDiscreteChar PointMass(char point)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | point | The point. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Pow(Double)
Computes the value of the current instance raised to a power.
Declaration
public ImmutableDiscreteChar Pow(double power)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | power |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
Read(Func<Int32>, Func<Double>)
Reads a discrete character.
Declaration
public static ImmutableDiscreteChar Read(Func<int> readInt32, Func<double> readDouble)
Parameters
| Type | Name | Description |
|---|---|---|
| Func<Int32> | readInt32 | |
| Func<Double> | readDouble |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
Sample()
Sample the distribution
Declaration
public char Sample()
Returns
| Type | Description |
|---|---|
| Char | The sample value |
Sample(Char)
Draws a sample from the distribution.
Declaration
public char Sample(char result)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | result | A pre-allocated storage for the sample (will be ignored). |
Returns
| Type | Description |
|---|---|
| Char | The drawn sample. |
Sum(Weight, ImmutableDiscreteChar, Weight)
Computes a weighted sum of the current and the given distributions
Declaration
public ImmutableDiscreteChar Sum(Weight weightThis, ImmutableDiscreteChar other, Weight weightOther)
Parameters
| Type | Name | Description |
|---|---|---|
| Weight | weightThis | The weight of the current distribution. |
| ImmutableDiscreteChar | other | The given distribution. |
| Weight | weightOther | The weight of the given distribution. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
Sum(Double, ImmutableDiscreteChar, Double)
Computes a weighted sum of the current and the given distributions
Declaration
public ImmutableDiscreteChar Sum(double weightThis, ImmutableDiscreteChar other, double weightOther)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | weightThis | The weight of the current distribution. |
| ImmutableDiscreteChar | other | The given distribution. |
| Double | weightOther | The weight of the given distribution. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
ToLower(ImmutableDiscreteChar)
Declaration
public static ImmutableDiscreteChar ToLower(ImmutableDiscreteChar unnormalizedCharDist)
Parameters
| Type | Name | Description |
|---|---|---|
| ImmutableDiscreteChar | unnormalizedCharDist |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar |
ToString()
Gets a string that represents this distribution.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| String | A string that represents this distribution. |
Overrides
Uniform()
Creates a uniform distribution over characters.
Declaration
[Construction(UseWhen = "IsUniform")]
public static ImmutableDiscreteChar Uniform()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
UniformInRange(Char, Char)
Creates a uniform distribution over characters in a given range.
Declaration
public static ImmutableDiscreteChar UniformInRange(char start, char end)
Parameters
| Type | Name | Description |
|---|---|---|
| Char | start | The start of the range (inclusive). |
| Char | end | The end of the range (inclusive). |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
UniformInRanges(Char[])
Creates a distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in an array whose length must therefore be even.
Declaration
public static ImmutableDiscreteChar UniformInRanges(params char[] startEndPairs)
Parameters
| Type | Name | Description |
|---|---|---|
| Char[] | startEndPairs | The array of range starts and ends. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
UniformInRanges(IEnumerable<Char>)
Creates a distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in a sequence whose length must therefore be even.
Declaration
public static ImmutableDiscreteChar UniformInRanges(IEnumerable<char> startEndPairs)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<Char> | startEndPairs | The sequence of range starts and ends. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
UniformOver(Char[])
Creates a distribution which is uniform over the specified set of characters.
Declaration
public static ImmutableDiscreteChar UniformOver(params char[] chars)
Parameters
| Type | Name | Description |
|---|---|---|
| Char[] | chars | The characters. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
UniformOver(IEnumerable<Char>)
Creates a distribution which is uniform over the specified set of characters.
Declaration
public static ImmutableDiscreteChar UniformOver(IEnumerable<char> chars)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<Char> | chars | The characters. |
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Upper()
Creates a uniform distribution over uppercase letters.
Declaration
[Construction(UseWhen = "IsUpper")]
public static ImmutableDiscreteChar Upper()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Whitespace()
Creates a uniform distribution over whitespace characters ('\t'..'\r', ' ').
Declaration
public static ImmutableDiscreteChar Whitespace()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
WordChar()
Creates a uniform distribution over word characters (letter, digit and '_').
Declaration
[Construction(UseWhen = "IsWordChar")]
public static ImmutableDiscreteChar WordChar()
Returns
| Type | Description |
|---|---|
| ImmutableDiscreteChar | The created distribution. |
Write(Action<Int32>, Action<Double>)
Writes a discrete character.
Declaration
public void Write(Action<int> writeInt32, Action<double> writeDouble)
Parameters
| Type | Name | Description |
|---|---|---|
| Action<Int32> | writeInt32 | |
| Action<Double> | writeDouble |
Explicit Interface Implementations
ICloneable.Clone()
Creates a copy of this distribution.
Declaration
object ICloneable.Clone()
Returns
| Type | Description |
|---|---|
| Object | The created copy. |
ISerializable.GetObjectData(SerializationInfo, StreamingContext)
Declaration
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
Parameters
| Type | Name | Description |
|---|---|---|
| SerializationInfo | info | |
| StreamingContext | context |