fillNumericDefaults(Dictionary <string, dynamic> inputData, string average = "mean") { foreach (KeyValuePair <string, DataSet.Field> idAndField in _fields) { float default_value; DataSet.Field field = idAndField.Value; string fieldId = idAndField.Key; if (summaryFields.IndexOf(fieldId) > -1 && OptionalFields.Contains <string>(field.Optype.ToString()) && !inputData.ContainsKey(fieldId)) { if (!NumericDefaults.Contains <string>(average)) { throw (new System.Exception("The available defaults are: %s" + string.Join(",", NumericDefaults))); } if (average == "zero") { default_value = 0; } else { // get property by reflection default_value = (float)field.FieldSummary.GetType().GetProperty(average).GetValue(field.FieldSummary, null); } inputData[fieldId] = default_value; } } return(inputData); }
private Dictionary <string, string> getFieldTermAnalysis(DataSet.Field currentField) { Dictionary <string, string> options = new Dictionary <string, string>(); DataSet.Field.Summary.Text textSummary; string fieldId, regex; int i, totalOptions; fieldId = currentField.Id; textSummary = (DataSet.Field.Summary.Text)currentField.FieldSummary; //term options per field regex = ""; foreach (KeyValuePair <string, string[]> termOptions in textSummary.TermForms) { regex = "(\b|_)" + termOptions.Key + "(\b|_)"; totalOptions = termOptions.Value.Length; for (i = 0; i < totalOptions; i++) { regex += "|(\b|_)" + termOptions.Value[i] + "(\b|_)"; } options.Add(termOptions.Key, regex); } return(options); }
internal LocalModel(JsonValue jsonObject, Dictionary<string, DataSet.Field> fields) { Dictionary<string, Dictionary<string, string>> termForms = new Dictionary<string, Dictionary<string, string>>(); Dictionary<string, string> options; Dictionary<string, bool> caseSensitive = new Dictionary<string, bool>(); string fieldId; DataSet.Field currentField; _jsonObject = jsonObject; // parse or fill the Fields information if (fields != null) { _fields = fields; // populate nameToIdDict from 'fields' param foreach (var kv in fields) { fieldId = kv.Key; nameToIdDict.Add(_fields[fieldId].Name, fieldId); //text analysis initialization options = new Dictionary<string, string>(); if (_fields[fieldId].OpType == OpType.Text) { currentField = fields[kv.Key]; //case sensitive per field caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]); //text analysis initialization options = getFieldTermAnalysis(currentField); } fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items); termForms[fieldId] = options; } } else { _fields = new Dictionary<string, DataSet.Field>(); // process each 'field' properties and // populate nameToIdDict from 'fields' param foreach (var kv in _jsonObject["fields"]) { fieldId = kv.Key; kv.Value["id"] = fieldId; _fields[fieldId] = new DataSet.Field(kv.Value); nameToIdDict.Add(_fields[fieldId].Name, fieldId); //text analysis initialization options = new Dictionary<string, string>(); if (_fields[fieldId].OpType == OpType.Text) { currentField = fields[kv.Key]; //case sensitive per field caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]); options = getFieldTermAnalysis(currentField); } fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items); termForms[fieldId] = options; } } // fill the array with all the fields' names modelFieldsNames = new string[nameToIdDict.Keys.Count]; nameToIdDict.Keys.CopyTo(modelFieldsNames, 0); _caseSensitive = caseSensitive; _termForms = termForms; }
public LocalCluster(JObject jsonObject) { _jsonObject = jsonObject; resourceId = (string)jsonObject["resource"]; defaultNumericValue = (string)jsonObject["default_numeric_value"]; summaryFields = new List <string>(); foreach (JObject oneSummaryField in jsonObject["summary_fields"]) { summaryFields.Add((string)oneSummaryField); } centroids = new List <LocalCentroid>(); foreach (JObject oneCentroid in jsonObject["clusters"]["clusters"]) { LocalCentroid c = new LocalCentroid(oneCentroid); centroids.Add(c); } clusterGlobal = (JObject)jsonObject["clusters"]["global"]; Dictionary <string, dynamic> fields = jsonObject["clusters"]["fields"].ToObject <Dictionary <string, dynamic> >(); _fields = new Dictionary <string, DataSet.Field>(); foreach (KeyValuePair <string, dynamic> fieldData in fields) { string fieldId = fieldData.Key; DataSet.Field field = new DataSet.Field(fieldData.Value); _fields[fieldId] = field; nameToIdDict.Add(_fields[fieldId].Name, fieldId); fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items); if (_fields[fieldId].OpType.Equals(OpType.Text)) { this.termForms[fieldId] = new Dictionary <string, string[]>(); this.termForms[fieldId] = fieldData.Value["summary"]["term_forms"].ToObject <Dictionary <string, string[]> >(); List <string> listTags = new List <string>(); foreach (var tag in fieldData.Value["summary"]["tag_cloud"]) { listTags.Add((string)tag[0]); } this.tagClouds[fieldId] = listTags.ToArray(); this.termAnalysis[fieldId] = new Dictionary <string, dynamic>(); this.termAnalysis[fieldId] = field.TermAnalysis; } if (_fields[fieldId].OpType.Equals(OpType.Items)) { List <string> listItems = new List <string>(); foreach (string item in fieldData.Value["items"]) { listItems.Add(item); } this.items[fieldId] = listItems.ToArray(); this.itemAnalysis[fieldId] = new Dictionary <string, dynamic>(); this.itemAnalysis[fieldId] = field.ItemAnalysis; } } scales = jsonObject["scales"].ToObject <Dictionary <string, double> >(); }
internal LocalModel(JObject jsonObject, Dictionary <string, DataSet.Field> fields) { Dictionary <string, Dictionary <string, string> > termForms = new Dictionary <string, Dictionary <string, string> >(); Dictionary <string, string> options; Dictionary <string, bool> caseSensitive = new Dictionary <string, bool>(); string fieldId; DataSet.Field currentField; _jsonObject = jsonObject; // parse or fill the Fields information if (fields != null) { _fields = fields; // populate nameToIdDict from 'fields' param foreach (var kv in fields) { fieldId = kv.Key; nameToIdDict.Add(_fields[fieldId].Name, fieldId); //text analysis initialization options = new Dictionary <string, string>(); if (_fields[fieldId].OpType == OpType.Text) { currentField = fields[kv.Key]; //case sensitive per field caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]); //text analysis initialization options = getFieldTermAnalysis(currentField); } fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items); termForms[fieldId] = options; } } else { _fields = new Dictionary <string, DataSet.Field>(); // process each 'field' properties and // populate nameToIdDict from 'fields' param foreach (var kv in _jsonObject["fields"].ToObject <Dictionary <string, JObject> >()) { fieldId = kv.Key; kv.Value["id"] = fieldId; _fields[fieldId] = new DataSet.Field(kv.Value); if (!nameToIdDict.ContainsKey(_fields[fieldId].Name)) { nameToIdDict.Add(_fields[fieldId].Name, fieldId); } //text analysis initialization options = new Dictionary <string, string>(); if (_fields[fieldId].OpType == OpType.Text) { currentField = _fields[kv.Key]; //case sensitive per field caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]); options = getFieldTermAnalysis(currentField); } fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items); termForms[fieldId] = options; } } // fill the array with all the fields' names modelFieldsNames = new string[nameToIdDict.Keys.Count]; nameToIdDict.Keys.CopyTo(modelFieldsNames, 0); _caseSensitive = caseSensitive; _termForms = termForms; if (jsonObject["boosting"] != null) { _boosting = _jsonObject["boosting"].ToObject <Dictionary <string, dynamic> >(); } }