public static bool Recognition(List <Vertex> vertices, WordNet wordnet_op, WordNet wordnet_all) { var tagItems = RoleTag(vertices, wordnet_all); var nss = ViterbiExCompute(tagItems); PlaceDictionary.PatternMatch(nss, vertices, wordnet_op, wordnet_all); return(true); }
public static bool Recognition(LinkedList <Vertex> pWordSegResult, WordNet wordNetOptimum, WordNet wordNetAll) { LinkedList <EnumItem <Corpus.Tag.NS> > roleTagList = roleTag(pWordSegResult, wordNetAll); if (HanLP.Config.DEBUG) { StringBuilder sbLog = new StringBuilder(); //Iterator<Vertex> iterator = pWordSegResult.iterator(); foreach (EnumItem <Corpus.Tag.NS> NSEnumItem in roleTagList) { sbLog.Append('['); //sbLog.Append(iterator.next().realWord); sbLog.Append(' '); sbLog.Append(NSEnumItem); sbLog.Append(']'); } Console.WriteLine("地名角色观察:%s\n", sbLog.ToString()); } List <Corpus.Tag.NS> NSList = viterbiExCompute(roleTagList); if (HanLP.Config.DEBUG) { StringBuilder sbLog = new StringBuilder(); //Iterator<Vertex> iterator = pWordSegResult.iterator(); sbLog.Append('['); foreach (Corpus.Tag.NS NS in NSList) { //sbLog.Append(iterator.next().realWord); sbLog.Append('/'); sbLog.Append(NS); sbLog.Append(" ,"); } if (sbLog.Length > 1) { sbLog.Remove(sbLog.Length - 2, sbLog.Length); } sbLog.Append(']'); Console.WriteLine("地名角色标注:%s\n", sbLog.ToString()); } PlaceDictionary.parsePattern(NSList, pWordSegResult, wordNetOptimum, wordNetAll); return(true); }
static DataManager() { using (FileStream fs = new FileStream(@".\Data\data_large.json", FileMode.Open, FileAccess.Read)) using (StreamReader sr = new StreamReader(fs)) using (JsonTextReader reader = new JsonTextReader(sr)) { reader.Read(); if (reader.TokenType == JsonToken.StartObject) { while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { JsonSerializer serializer = new JsonSerializer(); var place = serializer.Deserialize <Place>(reader); PlaceDictionary[place.ID] = place; } else if (reader.TokenType == JsonToken.EndArray) { break; } } } while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { JsonSerializer serializer = new JsonSerializer(); var person = serializer.Deserialize <Person>(reader); if (person.Place_Id.HasValue && PlaceDictionary.ContainsKey(person.Place_Id.Value)) { person.PlaceObj = PlaceDictionary[person.Place_Id.Value]; } PersonDictionary[person.ID] = person; if (!NameDictionary.ContainsKey(person.Name)) { NameDictionary[person.Name] = person.ID; } if (!DirectAncestors.ContainsKey(person.ID)) { DirectAncestors[person.ID] = new HashSet <int>(); } var fatherId = person.Father_Id ?? -1; if (fatherId != -1) { if (!DirectDesendants.ContainsKey(fatherId)) { DirectDesendants[fatherId] = new HashSet <int>(); } DirectAncestors[person.ID].Add(fatherId); DirectDesendants[fatherId].Add(person.ID); } var motherId = person.Mother_Id ?? -1; if (motherId != -1) { if (!DirectDesendants.ContainsKey(motherId)) { DirectDesendants[motherId] = new HashSet <int>(); } DirectAncestors[person.ID].Add(motherId); DirectDesendants[motherId].Add(person.ID); } } } } }