转自:http://www.cnblogs.com/anderslly/p/jiebanet.html
简介
平时经常用Python写些小程序。在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词。jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字)。
.NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了。最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果。另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterbi算法”,效果看起来也不错。
基于以上两点,加上对于中文分词的兴趣,就尝试将jieba移植到.NET平台上,已经把代码放在了github上:jieba.NET。在试用jieba.NET之前,先简单介绍下jieba的实现思路。
jieba实现浅析
jieba本身提供的文档较少,但我们可以在《对Python中文分词模块结巴分词算法过程的理解和分析》、《jieba 分词源代码研读(1)》这一系列文章中一窥jieba实现的整体思路。简言之,它的核心模块和分词过程大致是:
- 前缀词典(Trie):用于存储主词典,也可以动态增删词条,这个词典可以理解为jieba所“知道”的词,或者说已登录词;
- 有向无环图(DAG):通过前缀词典,可以找出句子所有可能的成词结果;
- 最大概率路径:通过DAG,可以了解所有的成词结果,每个结果对应于一条路径及其概率。由于不同词条的出现概率不同,不同的结果就对应了不同的概率,我们找出概率最大的那条路径。到这里,我们对于已登录词做出了最合理的划分;
- HMM模型和Viterbi算法:最大概率路径之后,我们可能会遇到一些未登录词(不包含在前缀词典中的词),这时通过HMM和Viterbi尝试进一步的划分,得到最终结果
这个过程与人的分词过程很类似。比如看到这句话:“语言学家参加学术会议”,我们会把它划分为:“语言学家 参加 学术会议”。尽管这个过程是瞬间完成的,但是它确实包含了上述过程的前三步:分词之前,大脑中已有一个“前缀词典”,它包括语言、语言学、语言学家等等各个词条;大脑知道这句话确实存在多种分词的可能;但它最后还是选出了那个最可能的结果,舍弃了诸如“语言学 家 参加 学术 会议”这样的结果。
前面这句话仅包含了已登录词,再来看另一句话:“他来到了网易杭研大厦”。一般人可以迅速做出划分:“他 来到 了 网易 (杭研)? 大厦”,除了“杭研”这两个字,其它的都属于已登录词,容易划分出来。对于“杭研”,我们要想一想它们是两个单字呢,还是一个新词。最后,可能会伴随着这样一个过程:我知道网易是有研发中心或研究院之类的在杭州的,那么“杭研”可能是与此相关的一个缩写,嗯,又知道了一个新词。尽管这个过程与HMM不同,但我们至少了解到,jieba确实是通过某种方式去尝试寻找未登录词。
不过可以想象的是,基于状态转移概率的HMM模型(建议参考文章《中文分词之HMM模型详解》)能够发现的词应该也是比较自然或正常的词,对于新的人名、机构名或网络词(喜大普奔之类的),效果不会很好。
jieba.NET用法
jieba.NET当前版本是0.37.1,与jieba保持一致,可以通过NuGet安装:
PM> Install-Package jieba.NET
相关推荐
《深入理解dotnet-jieba中文分词NETCore版:构建高效中文处理工具》 在当今信息化社会,中文处理技术愈发重要,特别是在自然语言处理、搜索引擎优化、文本挖掘等领域。dotnet-jieba是一个专门为.NET Core平台打造的...
进行中文文本分词时,使用的是jieba分词工具。文档中演示了结巴分词器的.Net版本在VS2013中的使用流程。新人上货,请指正!
jieba.NET-master 是一个针对C#开发的项目,实现了对中文文本进行分词的功能,它是在C#中对著名的开源中文分词库“结巴分词”(jieba)的一个移植。结巴分词最初是为Python设计的,因其高效且易用的特点,广泛应用于...
jieba分词是中文处理领域的一个著名开源项目,主要用于对...总之,jieba.NET是.NET平台上处理中文文本的强大工具,它的分词性能高效且准确,且具有丰富的功能和良好的可扩展性,是C#开发者进行中文文本处理的得力助手。
《jieba+百度分词词库(60万+)》是一个专门为中文文本处理设计的资源包,它结合了jieba分词库与百度分词词库的优势,为中文信息处理提供了一个强大的工具。jieba是一个广受欢迎的Python库,专用于中文分词,而百度...
jieba分词是中文处理领域的一个著名开源项目,主要用于对中文文本进行分词。这个Java版本的项目使得在Java环境中也可以方便地应用jieba分词的功能。以下是对该项目的详细说明: 1. **jieba分词简介**: jieba分词...
jieba分词工具是Python中广泛使用的中文分词库,尤其在自然语言处理(NLP)领域中扮演着重要角色。这个工具包提供了一个高效、易用的接口,能够对中文文本进行精确、全模式和搜索引擎模式的分词。jieba库支持动态...
在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备丰富的词汇库和优秀的分词算法,能有效地对中文文本进行拆分。 - **IK Analyzer**:是一个开源的...
《jieba中文分词:深度解析与应用》 jieba是一个强大的开源中文分词库,专为处理中文文本而设计。在Python编程语言中,它以其高效、灵活和易用的特点,深受广大开发者喜爱。本篇文章将深入探讨jieba分词的工作原理...
jieba分词基于著名的Python版本的jieba库,为Java环境提供了同样的功能,使得Java开发者能够方便地进行中文文本的分词、词性标注、关键词提取等任务。 首先,我们要理解什么是分词。分词是自然语言处理(NLP)中的...
分词 jieba.NET版本(C#实现) * 支持三种分词模式: - 精确模式,试图将句子最精确地切开,适合文本分析; - 全模式,把句子中所有的可以成词的词语都扫描出来, **速度非常快,但是不能解决歧义。 具体来说...
**Python-jieba结巴中文分词:打造顶级的Python中文处理工具** jieba,一个在Python开发者中广受欢迎的库,被誉为“结巴”中文分词,是处理中文文本的强大武器。它专为了解决中文分词问题而设计,为Python提供了...
2. **分词词典**:分词词典是jieba分词的基础,其中包含了大量预定义的词汇。这些词汇是根据语言习惯和语料库统计得来的,用于指导分词算法正确地切分句子。词典的质量直接影响到分词的准确性和效率。 3. **清华...
jieba分词包是一款在Python编程语言中广泛使用的开源中文分词库,它的全称是“结巴分词”,由李航(Hankcs)开发并维护。这个名字来源于中文分词的一个常见错误——将“不是”误分作“不”和“是”,形象地反映了...
- **基于字的分词方法**:jieba使用的是基于字的分词策略,首先将汉字转化为UTF-8编码,然后通过正则表达式匹配出可能的词语组合。 - **前向最大匹配法(FMM)**:jieba采用FMM算法,从左到右扫描输入的文本,选取...
jieba分词是Python编程语言中广泛用于中文文本处理的一个著名库,尤其在自然语言处理(NLP)领域。它的核心功能是对中文文本进行高效、准确的分词,以理解和分析文本内容。jieba库提供了多种分词模式,如精确模式、...
jieba是Python编程语言中的一款著名中文分词库,它为开发者提供了强大的中文处理能力,尤其是在文本分析、自然语言处理等领域。...通过不断迭代和优化,jieba-0.42.1版本将继续在中文分词领域保持领先地位。
jieba-lucene-analysis是将jieba分词库与Apache Lucene搜索引擎库相结合的项目,旨在为Lucene提供更适应中文处理的分析器和令牌生成器。这个项目的主要目的是解决在Lucene中对中文文本进行索引和搜索时的效率和准确...
"盘古分词"是一个专门针对中文的分词工具,它可以将中文文本有效地切分成一个个独立的词语,为Lucene.Net提供精确的索引和查询基础。盘古分词以其高效、准确和丰富的词汇库,广泛应用于各种中文信息处理系统,包括...
jieba分词,作为中文自然语言处理领域的一款杰出工具,被广泛应用于文本分析、信息检索、情感分析等多个场景。这个资源包,即"jieba分词资源包",是jieba分词库的重要组成部分,它包含了jieba分词运行所需的基础数据...