Ejemplo n.º 1
0
        /// <summary>
        /// CRF 分词
        ///https://www.hankcs.com/nlp/segment/crf-segmentation-of-the-pure-java-implementation.html
        ///https://www.hankcs.com/nlp/the-crf-model-format-description.html
        /// </summary>
        /// <param name="str"></param>

        public void Segement_CRF(string[] str)
        {
            HanLP.Config.ShowTermNature = false;    // 关闭词性显示
            Segment segment = new CRFSegment();

            String[] sentenceArray = new String[]
            {
                "HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。",
                "鐵桿部隊憤怒情緒集結 馬英九腹背受敵",                                               // 繁体无压力
                "馬英九回應連勝文“丐幫說”:稱黨內同志談話應謹慎",
                "高锰酸钾,强氧化剂,紫红色晶体,可溶于水,遇乙醇即被还原。常用作消毒剂、水净化剂、氧化剂、漂白剂、毒气吸收剂、二氧化碳精制剂等。", // 专业名词有一定辨识能力
                "《夜晚的骰子》通过描述浅草的舞女在暗夜中扔骰子的情景,寄托了作者对庶民生活区的情感",                        // 非新闻语料
                "这个像是真的[委屈]前面那个打扮太江户了,一点不上品...@hankcs",                             // 微博
                "鼎泰丰的小笼一点味道也没有...每样都淡淡的...淡淡的,哪有食堂2A的好次",
                "克里斯蒂娜·克罗尔说:不,我不是虎妈。我全家都热爱音乐,我也鼓励他们这么做。",
                "今日APPS:Sago Mini Toolbox培养孩子动手能力",
                "财政部副部长王保安调任国家统计局党组书记",
                "2.34米男子娶1.53米女粉丝 称夫妻生活没问题",
                "你看过穆赫兰道吗",
                "乐视超级手机能否承载贾布斯的生态梦"
            };
            foreach (var sentence in sentenceArray)
            {
                var termList = segment.seg(sentence);
                Console.WriteLine(termList);
            }
        }
Ejemplo n.º 2
0
        public void CRF_Segment()
        {
            Config.ShowTermNature = false;                               // 关闭词性显示
            var segment   = new CRFSegment().SetCustomDictionary(false); // 不使用自定义词典
            var testCases = new[]
            {
                "HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。",
                "鐵桿部隊憤怒情緒集結 馬英九腹背受敵",                                               // 繁体无压力
                "馬英九回應連勝文“丐幫說”:稱黨內同志談話應謹慎",
                "高锰酸钾,强氧化剂,紫红色晶体,可溶于水,遇乙醇即被还原。常用作消毒剂、水净化剂、氧化剂、漂白剂、毒气吸收剂、二氧化碳精制剂等。", // 专业名词有一定辨识能力
                "《夜晚的骰子》通过描述浅草的舞女在暗夜中扔骰子的情景,寄托了作者对庶民生活区的情感",                        // 非新闻语料
                "这个像是真的[委屈]前面那个打扮太江户了,一点不上品...@hankcs",                             // 微博
                "鼎泰丰的小笼一点味道也没有...每样都淡淡的...淡淡的,哪有食堂2A的好次",
                "克里斯蒂娜·克罗尔说:不,我不是虎妈。我全家都热爱音乐,我也鼓励他们这么做。",
                "今日APPS:Sago Mini Toolbox培养孩子动手能力",
                "财政部副部长王保安调任国家统计局党组书记",
                "2.34米男子娶1.53米女粉丝 称夫妻生活没问题",
                "你看过穆赫兰道吗",
                "国办发布网络提速降费十四条指导意见 鼓励流量不清零",
                "乐视超级手机能否承载贾布斯的生态梦"
            };

            var expects = new[]
            {
                "HanLP/ 是/ 由/ 一系列/ 模型/ 与/ 算法/ 组成/ 的/ Java/ 工具包/ ,/ 目标/ 是/ 普及/ 自然/ 语言/ 处理/ 在/ 生产/ 环境/ 中/ 的/ 应用/ 。",
                "鐵桿/ 部隊/ 憤怒/ 情緒/ 集結/  / 馬英九/ 腹背受敵",
                "馬英九/ 回應/ 連勝文/ “/ 丐幫/ 說”/ :/ 稱/ 黨內/ 同志/ 談話/ 應/ 謹慎",
                "高锰酸钾/ ,/ 强/ 氧化剂/ ,/ 紫红色/ 晶体/ ,/ 可/ 溶于/ 水/ ,/ 遇/ 乙醇/ 即/ 被/ 还原/ 。/ 常用/ 作/ 消毒剂/ 、/ 水/ 净化剂/ 、/ 氧化剂/ 、/ 漂白剂/ 、/ 毒气/ 吸收剂/ 、/ 二氧化碳/ 精制剂/ 等/ 。",
                "《/ 夜晚/ 的/ 骰子/ 》/ 通过/ 描述/ 浅草/ 的/ 舞女/ 在/ 暗夜/ 中/ 扔/ 骰子/ 的/ 情景/ ,/ 寄托/ 了/ 作者/ 对/ 庶民/ 生活区/ 的/ 情感",
                "这个/ 像/ 是/ 真的/ [/ 委屈/ ]/ 前面/ 那个/ 打扮/ 太江/ 户/ 了/ ,/ 一点/ 不/ 上品/ ./ ./ ./ @/ hankcs",
                "鼎泰丰/ 的/ 小笼/ 一点/ 味道/ 也/ 没有/ ./ ./ ./ 每样/ 都/ 淡淡的/ ./ ./ ./ 淡淡的/ ,/ 哪/ 有/ 食堂/ 2/ A/ 的/ 好次",
                "克里斯蒂娜·克罗尔/ 说/ :/ 不/ ,/ 我/ 不是/ 虎妈/ 。/ 我/ 全家/ 都/ 热爱/ 音乐/ ,/ 我/ 也/ 鼓励/ 他们/ 这么/ 做/ 。",
                "今日/ APPS/ :/ Sago Mini Toolbox/ 培养/ 孩子/ 动手/ 能力",
                "财政部/ 副部长/ 王保安/ 调任/ 国家/ 统计局/ 党组/ 书记",
                "2.34/ 米/ 男子/ 娶/ 1.53/ 米/ 女/ 粉丝/  / 称/ 夫妻/ 生活/ 没问题",
                "你/ 看过/ 穆赫兰道/ 吗",
                "国办/ 发布/ 网络/ 提速/ 降费/ 十四条/ 指导/ 意见/  / 鼓励/ 流量/ 不/ 清零",
                "乐/ 视/ 超级/ 手机/ 能否/ 承载/ 贾布斯/ 的/ 生态/ 梦"
            };

            for (int j = 0; j < testCases.Length; j++)
            {
                var terms = segment.Seg(testCases[j]);
                var sb    = new StringBuilder();
                for (int i = 0; i < terms.Count; i++)
                {
                    if (i != 0)
                    {
                        sb.Append("/ ");
                    }
                    sb.Append(terms[i].word);
                }
                Assert.AreEqual(expects[j], sb.ToString());
            }
        }