Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
                                }
                            }
                        }
                    }
        }