Exemplo n.º 1
0
        public static void TestBiGraphGenerate()
        {
            WordDictionary coreDict = new WordDictionary();

            if (!coreDict.Load(coreDictFile))
            {
                Console.WriteLine("coreDict 字典装入错误!");
                return;
            }

            WordDictionary biDict = new WordDictionary();

            if (!biDict.Load(biDictFile))
            {
                Console.WriteLine("字典装入错误!");
                return;
            }

            string sSentence = @"他说的确实在理";

            sSentence = Predefine.SENTENCE_BEGIN + sSentence + Predefine.SENTENCE_END;

            //---原子分词
            List <AtomNode> atomSegment = Segment.AtomSegment(sSentence);

            //---检索词库,加入所有可能分词方案并存入链表结构
            RowFirstDynamicArray <ChainContent> segGraph = Segment.GenerateWordNet(atomSegment, coreDict);

            //---检索所有可能的两两组合
            ColumnFirstDynamicArray <ChainContent> biGraphResult = Segment.BiGraphGenerate(segGraph, 0.1, biDict, coreDict);

            Console.WriteLine(biGraphResult.ToString());
        }
Exemplo n.º 2
0
 private void OnGenBiSegGraph(ColumnFirstDynamicArray<ChainContent> biGraph)
 {
     SendEvents(new SegmentEventArgs(SegmentStage.GenBiSegGraph, biGraph.ToString()));
 }
Exemplo n.º 3
0
 private void OnBackwardOptimize(ColumnFirstDynamicArray<ChainContent> biGraph)
 {
     SendEvents(new SegmentEventArgs(SegmentStage.BcakwardOptimize, biGraph.ToString()));
 }
Exemplo n.º 4
0
        public static void TestNShortPath()
        {
            int          n = 2;
            List <int[]> result;

            int[] aPath;
            //--------------------------------------------------------------edie by SharpKey
            string dictPath = Path.Combine(Environment.CurrentDirectory, "Data") + Path.DirectorySeparatorChar;

            Console.WriteLine("正在初始化字典库,请稍候...");
            //WordSegmentSample sample = new WordSegmentSample(DictPath, 2);
            WordSegment wordSegment = new WordSegment();

            wordSegment.InitWordSegment(dictPath);
            Segment m_Seg = new Segment(wordSegment.m_dictBigram, wordSegment.m_dictCore);//Seg class
            //wordSegment.Segment("", 2);
            ColumnFirstDynamicArray <ChainContent> apCost = m_Seg.TestSegment("始##始这个人的确实在末##末", 0.1, 2);

            Console.WriteLine(apCost.ToString());
            //----------------------------------
            NShortPath.Calculate(apCost, n);
            NShortPath.printResultByIndex();

            //----------------------------------------------------
            // 所有路径
            //----------------------------------------------------
            Console.WriteLine("\r\n\r\n所有路径:");
            for (int i = 0; i < n; i++)
            {
                result = NShortPath.GetPaths(i);
                for (int j = 0; j < result.Count; j++)
                {
                    aPath = result[j];
                    for (int k = 0; k < aPath.Length; k++)
                    {
                        Console.Write("{0}, ", aPath[k]);
                    }

                    Console.WriteLine();
                }
                Console.WriteLine("========================");
            }

            //----------------------------------------------------
            // 最佳路径
            //----------------------------------------------------
            Console.WriteLine("\r\n最佳路径:");
            aPath = NShortPath.GetBestPath();
            for (int k = 0; k < aPath.Length; k++)
            {
                Console.Write("{0}, ", aPath[k]);
            }

            Console.WriteLine();

            //----------------------------------------------------
            // 最多 n 个路径
            //----------------------------------------------------
            Console.WriteLine("\r\n最多 {0} 条路径:", 5);
            result = NShortPath.GetNPaths(5);
            for (int j = 0; j < result.Count; j++)
            {
                aPath = result[j];
                for (int k = 0; k < aPath.Length; k++)
                {
                    Console.Write("{0}, ", aPath[k]);
                }

                Console.WriteLine();
            }
        }
Exemplo n.º 5
0
        public static void TestNShortPath()
        {
            int          n = 2;
            List <int[]> result;

            int[] aPath;

            ColumnFirstDynamicArray <ChainContent> apCost = new ColumnFirstDynamicArray <ChainContent>();

            apCost.SetElement(0, 1, new ChainContent(1));
            apCost.SetElement(1, 2, new ChainContent(1));
            apCost.SetElement(1, 3, new ChainContent(2));
            apCost.SetElement(2, 3, new ChainContent(1));
            apCost.SetElement(2, 4, new ChainContent(1));
            apCost.SetElement(3, 4, new ChainContent(1));
            apCost.SetElement(4, 5, new ChainContent(1));
            apCost.SetElement(3, 6, new ChainContent(2));
            apCost.SetElement(4, 6, new ChainContent(3));
            apCost.SetElement(5, 6, new ChainContent(1));
            Console.WriteLine(apCost.ToString());

            NShortPath.Calculate(apCost, n);
            NShortPath.printResultByIndex();

            //----------------------------------------------------
            // 所有路径
            //----------------------------------------------------
            Console.WriteLine("\r\n\r\n所有路径:");
            for (int i = 0; i < n; i++)
            {
                result = NShortPath.GetPaths(i);
                for (int j = 0; j < result.Count; j++)
                {
                    aPath = result[j];
                    for (int k = 0; k < aPath.Length; k++)
                    {
                        Console.Write("{0}, ", aPath[k]);
                    }

                    Console.WriteLine();
                }
                Console.WriteLine("========================");
            }

            //----------------------------------------------------
            // 最佳路径
            //----------------------------------------------------
            Console.WriteLine("\r\n最佳路径:");
            aPath = NShortPath.GetBestPath();
            for (int k = 0; k < aPath.Length; k++)
            {
                Console.Write("{0}, ", aPath[k]);
            }

            Console.WriteLine();

            //----------------------------------------------------
            // 最多 n 个路径
            //----------------------------------------------------
            Console.WriteLine("\r\n最多 {0} 条路径:", 5);
            result = NShortPath.GetNPaths(5);
            for (int j = 0; j < result.Count; j++)
            {
                aPath = result[j];
                for (int k = 0; k < aPath.Length; k++)
                {
                    Console.Write("{0}, ", aPath[k]);
                }

                Console.WriteLine();
            }
        }