I am using crfsuite-python to implement a linear chain CRF in which I would like to use numerical features rather than strings as is the case with the standard CRF application parts of speech tagging. The documentation of crfsuite mentions "Formally, the amount of the influence of a feature is determined by a scaling value of the corresponding attribute multiplied by the feature weight." My sample input looks like,
Walking no_of_pauses:4 lat:32.91469737 lon:-117.18923483 snrUsed:235
Walking no_of_pauses:4 lat:32.91469737 lon:-117.18923483 snrUsed:235
Walking no_of_pauses:4 lat:32.91469737 lon:-117.18923483 snrUsed:235
And the output crf model looks like,
LABELS = {
0: Walking
}
ATTRIBUTES = {
0: no_of_pauses
1: lat
2: snrUsed
}
TRANSITIONS = {
}
STATE_FEATURES = {
(0) no_of_pauses --> Walking: -0.000000
(0) lat --> Walking: 0.000000
(0) snrUsed --> Walking: 0.000000
(0)
--> Walking: -0.000000
}
If no_of_pauses was a numerical attribute, then What does the "no_of_pauses --> Walking" : 0.00000 imply here? Also, the model does not take into consideration the "lon" attribute specified in the input. This is because there is an option in the CRF trainer in crfsuite called "feature.minfreq" which is 0 by default and hence drops the attributes with negative values. What does the word minfreq mean here if it is simply referring to scaling value?
Note: I have used a very small sample set, so there is only one label and the computed probabilities do not make much sense