常用技能(更新ing):http://www.cnblogs.com/dunitian/p/4822808.html#skill

技能总纲(更新ing):http://www.cnblogs.com/dunitian/p/5493793.html

在线演示:http://cppjieba-webdemo.herokuapp.com

完整demo:https://github.com/dunitian/TempCode/tree/master/2016-09-05

逆天修改版:https://github.com/dunitian/TempCode/blob/master/2016-09-05/jieba.NET.0.38.2.zip

先说下注意点,结巴分词他没有对分词进行一次去重,我们得自己干这件事;字典得自行配置或者设置成输出到bin目录

应用场景举例(搜索那块大家都知道,说点其他的)

——————————————————————————————————————————————————

言归正传:看一组民间统计数据:(非Net版,指的是官方版)

net版的IKanalyzer盘古分词好多年没更新了,所以这次选择了结巴分词(这个名字也很符合分词的意境~~结巴说话,是不是也是一种分词的方式呢?

下面简单演示一下:

1.先引入包:

2.字典设置:

3.简单封装的帮助类:

using System.Linq;
using JiebaNet.Segmenter;
using System.Collections.Generic; namespace LoTLib.Word.Split
{
#region 分词类型
public enum JiebaTypeEnum
{
/// <summary>
/// 精确模式---最基础和自然的模式,试图将句子最精确地切开,适合文本分析
/// </summary>
Default,
/// <summary>
/// 全模式---可以成词的词语都扫描出来, 速度更快,但是不能解决歧义
/// </summary>
CutAll,
/// <summary>
/// 搜索引擎模式---在精确模式的基础上对长词再次切分,提高召回率,适合用于搜索引擎分词
/// </summary>
CutForSearch,
/// <summary>
/// 精确模式-不带HMM
/// </summary>
Other
}
#endregion /// <summary>
/// 结巴分词
/// </summary>
public static partial class WordSplitHelper
{
/// <summary>
/// 获取分词之后的字符串集合
/// </summary>
/// <param name="objStr"></param>
/// <param name="type"></param>
/// <returns></returns>
public static IEnumerable<string> GetSplitWords(string objStr, JiebaTypeEnum type = JiebaTypeEnum.Default)
{
var jieba = new JiebaSegmenter();
switch (type)
{
case JiebaTypeEnum.Default:
return jieba.Cut(objStr); //精确模式-带HMM
case JiebaTypeEnum.CutAll:
return jieba.Cut(objStr, cutAll: true); //全模式
case JiebaTypeEnum.CutForSearch:
return jieba.CutForSearch(objStr); //搜索引擎模式
default:
return jieba.Cut(objStr, false, false); //精确模式-不带HMM
}
} /// <summary>
/// 获取分词之后的字符串
/// </summary>
/// <param name="objStr"></param>
/// <param name="type"></param>
/// <returns></returns>
public static string GetSplitWordStr(this string objStr, JiebaTypeEnum type = JiebaTypeEnum.Default)
{
var words = GetSplitWords(objStr, type);
//没结果则返回空字符串
if (words == null || words.Count() < 1)
{
return string.Empty;
}
words = words.Distinct();//有时候词有重复的,得自己处理一下
return string.Join(",", words);//根据个人需求返回
}
}
}

调用很简单:

            string str = "bootstrap-datetimepicker 进一步跟进~~~开始时间和结束时间的样式显示";
Console.WriteLine("\n精确模式-带HMM:\n");
Console.WriteLine(str.GetSplitWordStr()); Console.WriteLine("\n全模式:\n");
Console.WriteLine(str.GetSplitWordStr(JiebaTypeEnum.CutAll)); Console.WriteLine("\n搜索引擎模式:\n");
Console.WriteLine(str.GetSplitWordStr(JiebaTypeEnum.CutForSearch)); Console.WriteLine("\n精确模式-不带HMM:\n");
Console.WriteLine(str.GetSplitWordStr(JiebaTypeEnum.Other)); Console.ReadKey();

效果:

--------------------------

有人可能会说,那内容关键词提取呢?==》别急,看下面:

这种方式所对应的字典是它=》idf.txt

简单说下Constants==》

效果:

完整帮助类(最新看github):https://github.com/dunitian/TempCode/tree/master/2016-09-05

using System.Linq;
using JiebaNet.Segmenter;
using System.Collections.Generic;
using JiebaNet.Analyser; namespace LoTLib.Word.Split
{
#region 分词类型
public enum JiebaTypeEnum
{
/// <summary>
/// 精确模式---最基础和自然的模式,试图将句子最精确地切开,适合文本分析
/// </summary>
Default,
/// <summary>
/// 全模式---可以成词的词语都扫描出来, 速度更快,但是不能解决歧义
/// </summary>
CutAll,
/// <summary>
/// 搜索引擎模式---在精确模式的基础上对长词再次切分,提高召回率,适合用于搜索引擎分词
/// </summary>
CutForSearch,
/// <summary>
/// 精确模式-不带HMM
/// </summary>
Other
}
#endregion /// <summary>
/// 结巴分词
/// </summary>
public static partial class WordSplitHelper
{
#region 公用系列
/// <summary>
/// 获取分词之后的字符串集合
/// </summary>
/// <param name="objStr"></param>
/// <param name="type"></param>
/// <returns></returns>
public static IEnumerable<string> GetSplitWords(string objStr, JiebaTypeEnum type = JiebaTypeEnum.Default)
{
var jieba = new JiebaSegmenter();
switch (type)
{
case JiebaTypeEnum.Default:
return jieba.Cut(objStr); //精确模式-带HMM
case JiebaTypeEnum.CutAll:
return jieba.Cut(objStr, cutAll: true); //全模式
case JiebaTypeEnum.CutForSearch:
return jieba.CutForSearch(objStr); //搜索引擎模式
default:
return jieba.Cut(objStr, false, false); //精确模式-不带HMM
}
} /// <summary>
/// 提取文章关键词集合
/// </summary>
/// <param name="objStr"></param>
/// <returns></returns>
public static IEnumerable<string> GetArticleKeywords(string objStr)
{
var idf = new TfidfExtractor();
return idf.ExtractTags(objStr, 10, Constants.NounAndVerbPos);//名词和动词
} /// <summary>
/// 返回拼接后的字符串
/// </summary>
/// <param name="words"></param>
/// <returns></returns>
public static string JoinKeyWords(IEnumerable<string> words)
{
//没结果则返回空字符串
if (words == null || words.Count() < 1)
{
return string.Empty;
}
words = words.Distinct();//有时候词有重复的,得自己处理一下
return string.Join(",", words);//根据个人需求返回
}
#endregion #region 扩展相关
/// <summary>
/// 获取分词之后的字符串
/// </summary>
/// <param name="objStr"></param>
/// <param name="type"></param>
/// <returns></returns>
public static string GetSplitWordStr(this string objStr, JiebaTypeEnum type = JiebaTypeEnum.Default)
{
var words = GetSplitWords(objStr, type);
return JoinKeyWords(words);
} /// <summary>
/// 提取文章关键词字符串
/// </summary>
/// <param name="objStr"></param>
/// <returns></returns>
public static string GetArticleKeywordStr(this string objStr)
{
var words = GetArticleKeywords(objStr);
return JoinKeyWords(words);
}
#endregion
}
}

还有耐心或者只看末尾的有福了~

web端的字典配置那是个烦啊,逆天把源码微调了下

使用方法和上面一样

web版演示:

https://github.com/dunitian/LoTCode/blob/master/PawChina/PawChina/PawChina.UI/Areas/PawRoot/assets/js/note.js

https://github.com/dunitian/LoTCode/blob/master/PawChina/PawChina/PawChina.UI/Areas/PawRoot/Controllers/PartialViewController.cs

结巴中文分词相关:

https://github.com/fxsjy/jieba

https://github.com/anderscui/jieba.NET

http://cppjieba-webdemo.herokuapp.com

中文分词之结巴分词~~~附使用场景+demo(net)的更多相关文章

  1. python中文分词:结巴分词

    中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词.其基本实现原理有三点: 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规 ...

  2. python 中文分词:结巴分词

    中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词.其基本实现原理有三点: 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规 ...

  3. python中文分词工具——结巴分词

    传送门: http://www.iteye.com/news/26184-jieba

  4. 结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

    Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现. 变更日志 创作目的 分词是做 NLP 相关工作,非常基础的一项功能. jieba-analysis 作 ...

  5. python 结巴分词简介以及操作

    中文分词库:结巴分词 文档地址:https://github.com/fxsjy/jieba 代码对 Python 2/3 均兼容 全自动安装:easy_install jieba 或者 pip in ...

  6. ElasticSearch自定义分析器-集成结巴分词插件

    关于结巴分词 ElasticSearch 插件: https://github.com/huaban/elasticsearch-analysis-jieba 该插件由huaban开发.支持Elast ...

  7. Simple: SQLite3 中文结巴分词插件

    一年前开发 simple 分词器,实现了微信在两篇文章中描述的,基于 SQLite 支持中文和拼音的搜索方案.具体背景参见这篇文章.项目发布后受到了一些朋友的关注,后续也发布了一些改进,提升了项目易用 ...

  8. 北大开源全新中文分词工具包:准确率远超THULAC、结巴分词

    最近,北大开源了一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率.其中广泛使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32% ...

  9. 中文分词接口api,采用结巴分词PHP版中文分词接口

    中文分词,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程.我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字.句和段能通过明显的分界符来简单划界,唯独词没有一个形式上 ...

随机推荐

  1. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  2. C++中的变长参数

    新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...

  3. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  4. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  5. 实现代理设置proxy

    用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...

  6. MVC Core 网站开发(Ninesky) 2、栏目

    栏目是网站的常用功能,按照惯例栏目分常规栏目,单页栏目,链接栏目三种类型,这次主要做添加栏目控制器和栏目模型两个内容,控制器这里会用到特性路由,模型放入业务逻辑层中(网站计划分数据访问.业务逻辑和We ...

  7. Aaron Stannard谈Akka.NET 1.1

    Akka.NET 1.1近日发布,带来新特性和性能提升.InfoQ采访了Akka.net维护者Aaron Stannard,了解更多有关Akka.Streams和Akka.Cluster的信息.Aar ...

  8. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

  9. FullCalendar应用——整合农历节气和节日

    FullCalendar用来做日程管理功能非常强大,但是唯一不足的地方是没有将中国农历历法加进去,今天我将结合实例和大家分享如何将中国农历中的节气和节日整合到FullCalendar中,从而增强其实用 ...

  10. cesium自定义气泡窗口infoWindow

    一.自定义气泡窗口与cesium默认窗口效果对比: 1.cesium点击弹出气泡窗口显示的位置固定在地图的右上角,默认效果: 2.对于习惯arcgis或者openlayer气泡窗口样式的giser来说 ...