/// <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); } }
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()); } }