测试C#分词工具jieba.NET(续2:其它用法)

  jieba.NET除分词和关键词提取功能之外,还有一些其它用法,本文基于参考文献学习并记录。

设置停用词

  提取关键词时,部分词语可能不重要或者并非所需的词语,此时可以通过设置停用词,在提取关键词时过滤掉指定的停用词。jieba.NET的停用词词库放在Resources文件夹下的stopwords.txt,程序启动时会自动加载该文件。
在这里插入图片描述
  以之前的测试文本为例,提取前20个关键词,将其中的“一声”、“一脉”两次设置停用词,即在stopwords.txt后追加这两词,再次运行程序提取关键词,可以看到这两个词已经消息。
在这里插入图片描述在这里插入图片描述

词性标注

  jieba.NET中的PosSegmenter类支持在分词的同时,为每个词添加词性标注,词性标注的含义表如下所示(图片来自参考文献):
在这里插入图片描述
  测试代码及程序运行效果如下所示:

	txtResult.Text = String.Empty;
    using (TextReader tr = File.OpenText(txtPath.Text))
    {
        var segmenter = new PosSegmenter();
        var tokens = segmenter.Cut(tr.ReadToEnd());
        txtResult.Text = string.Join(" ", tokens.Select(token => string.Format("{0}/{1}", token.Word, token.Flag)));
    }

在这里插入图片描述

获取分词词语的起始位置

  jieba.NET中的JiebaSegmenter类的Tokenize函数除了返回分词词语之外,还会返回每个分词词语的起止位置。该函数支持默认模式和搜索模式两种分词方式,根据官网说明及测试,默认模式类似于分词函数的精确模式分词,每个词语只会被分一次,而搜索模式类似于全模式及搜索引擎模式分词,把所有可能的分词形式都返回。程序运行效果如下所示:
在这里插入图片描述

词频统计

  jieba.NET中的Counter类支持统计词频,也即指定文本中的词语的使用次数。示意代码请见参考文献3,测试程序运行效果如下所示:
在这里插入图片描述

查找关键词

  jieba.NET中的KeywordProcessor类预先指定的一组关键词,然后在指定的文本中查找存在哪些关键词,也即查找指定的关键词在文本中是否存在。

  除了上述用法之外,jieba.NET的文档中还介绍了与Lucene.NET的集成的方式,后续会学习并进行测试。

参考文献:
[1]https://github.com/linezero/jieba.NET
[2]https://www.jianshu.com/p/6f47b670fcb0
[3]https://github.com/anderscui/jieba.NET
[4]https://github.com/JimLiu/Lucene.Net.Analysis.PanGu
[5]https://github.com/apache/lucenenet
[6]https://blog.csdn.net/lijingguang/article/details/127262360
[7]https://blog.51cto.com/u_15834522/5766716
[8]https://www.cnblogs.com/dacc123/p/8431369.html
[9]https://blog.csdn.net/wangkun9999/article/details/1574114
[10]https://baijiahao.baidu.com/s?id=1744467856047121907&wfr=spider&for=pc
[11]https://blog.csdn.net/qq_57832544/article/details/127806572
[12]https://blog.csdn.net/u012744245/article/details/119967119

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ShootSearch 中文分词组件(c#开源) 技术支持:support@shootsoft.net http://www.shootsoft.net 分词算法:词库+最大匹配 词库来自www.jesoft.cn,已经过一定的修改 使用说明: 先加载词库,再进行分词.分词过程重载两次:支持回车的和不支持回车的,注意选择! 可以手动添加词语到sDict.txt,不过每次手动修改后需要调用SortDic()方法,否则无法实现最大匹配! sDict.txt的编码为UTF-8! 示例: 文字内容来自:http://tech.tom.com/2006-08-09/04B5/34545343.html using ShootSeg; ... Segment seg = new Segment(); seg.InitWordDics(); string str="日前,奇虎董事长周鸿祎新推出了一款反流氓软件“360安全卫士”,并将雅虎中国3721网络实名定义为流氓软件。此举引起了雅虎员工的强烈不满,甚至有就职于雅虎的原3721员工声称将起诉周鸿祎。围绕着3721这个产品,引发了一场雅虎中国与奇虎之间的战争。"; seg.Separator = "/"; Console.WriteLine(seg.SegmentText(str.Text,true)); 日前/,/奇虎/董事长/周鸿祎/新/推出/了/一款/反/流氓/软件/“/360/安全/卫士/”/,/并将/雅虎/中国/3721/网络实名/定义/为/流氓/软件/。/此举/引起/了/雅虎/员工/的/强烈不满/,/甚至有/就职/于/雅虎/的/原/3721员/工/声称/将/起诉/周鸿祎/。/围绕着/3721/这个/产品/,/引发/了/一场/雅虎/中国/与/奇虎/之间/的/战争/。/ 不加人名识别效果如下: 日前/,/奇/虎/董事长/周/鸿/祎/新/推出/了/一款/反/流氓/软件/“/360/安全/卫士/”/,/并将/雅虎/中国/3721/网络实名/定义/为/流氓/软件/。/此举/引起/了/雅虎/员工/的/强烈不满/,/甚至有/就职/于/雅虎/的/原/3721员/工/声称/将/起诉/周/鸿/祎/。/围绕着/3721/这个/产品/,/引发/了/一场/雅虎/中国/与/奇/虎/之间/的/战争/。/ 2006-8-9----1.0 bate 060809 支持英文、数字、中文(简体)混合分词 常用的数量和人名的匹配 超过22万词的词库整理 实现正向最大匹配算法 智能数字,日期,人名识别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值