关于中文分词

眼下全量索引17G,不到1300万document花费大约25分钟的时间(Lucene 4.0),吞吐量远远低于lucene nightly build宣称的170G/h的量。换用StandardAnalyzer,有34%的提高,比較下使用的KAnalyzer,mmseg4j1.9.2-snapshot,standardanalyzer,性能分别在1.7M/s,10M/s,20M/s这样量级。所以觉得假设分词性能有明显提高,索引速度应该会有加快。

分析了下眼下使用的KAnalyzer,它同一时候运行正向最大匹配和反向最大匹配,取概率最大那个(1-gram累计词频),假设有歧义/交集的三元组,用概率算第三种分词方式,假设最高,当然选用第三种分词方式。

感觉起来效率不太高,由于有三次匹配,我会尝试例如以下动作:

1)分别測试仅仅使用最大正向和最大反向的性能,有个直观感觉,再建索引看看性能;

2)mmseg相同是启示式的,但仅仅做一次匹配,孰优孰劣,还要看准确率,召回率,必须通过的測试是否都通过,这一套标准须要建立起来

3)算法是一方面,词典质量更重要,算法方面性能,准确率,召回率各个方面做个tradeoff就能够。

4)对于"南京西路",想保留"南京|西|路",感觉建个额外字典,某些词必须拆掉就能够了。

5)里面的概率所有改用ln(freq),累计频率所有使用加法,提高效率,少用string,看看是否能用bytesref,按句子分,不要按整块文本分。diffrate = Max / (Min + 1)看起来有点费解...

6)最大匹配里面放进去的匹配规则要揪出来,要看看mmseg4j的实现。

最后想说理论上viterbi算法分词准确率最优,仅仅是性能太差了..

另外补充个,geo眼下按多级(15级)索引,可能是导致索引慢的原因。还有从csv文本到ReusableDocument的反序列化过程也可能拖慢索引速度。

关于中文分词,布布扣,bubuko.com

时间: 2024-10-09 21:52:41

关于中文分词的相关文章

PHP中文分词扩展 SCWS

1.scws简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点. SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩

Elasticsearch安装中文分词插件ik

Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词.例如: curl -XPOST "http://localhost:9200/userinfo/_analyze?analyzer=standard&pretty=true&text=我是中国人" 我们会得到这样的结果: { tokens: [ { token: text start_offset: 2 end_offset: 6 type: <ALPHANUM>

中文分词实践(基于R语言)

背景:分析用户在世界杯期间讨论最多的话题. 思路:把用户关于世界杯的帖子拉下来,然后做中文分词+词频统计,最后将统计结果简单做个标签云,效果如下: 后续:中文分词是中文信息处理的基础,分词之后,其实还有特别多有趣的文本挖掘工作可以做,也是个知识发现的过程,以后有机会再学习下. ================================================== * 中文分词常用实现: 单机:R语言+Rwordseg分词包 (建议数据量<1G) 分布式:Hadoop+Smallse

中文分词之结巴分词~~~附使用场景+demo

常用技能(更新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 先说下注意点,结巴分词他没有对分

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成.当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据.Sphinx创建索引的速度为:创建100万条记录的索引只需3-4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒.Sphinx的

python 读写txt文件并用jieba库进行中文分词

python用来批量处理一些数据的第一步吧. 对于我这样的的萌新.这是第一步. #encoding=utf-8 file='test.txt' fn=open(file,"r") print fn.read() fn.close() 在控制台输出txt文档的内容,注意中文会在这里乱码.因为和脚本文件放在同一个地方,我就没写路径了. 还有一些别的操作. 这是文件open()函数的打开mode,在第二个参数中设置.特别需要注意一下.具体还有一些别的细节操作. http://www.jb51

【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示

前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用smartcn中文分词器以及对结果的高亮显示. 1. 中文分词 使用中文分词的话,首先到添加中文分词的jar包. <!-- lucene中文分词器 --> <dependency> <groupId>org.apache.lucene</groupId> <

在Hadoop上运行基于RMM中文分词算法的MapReduce程序

原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词算法的MapReduce程序 23条回复 我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文!其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分词算法进行研究.这个实验报告是我做高性能计算课程的实验里提交的.所以,下面的内容是从我的实验报告里摘录出来的,当作是我学

简单中文分词系统的实现

中文分词系统工程报告 一.研究背景 随着互联网的快速发展,信息也呈了爆炸式的增长趋势.在海量的信息中,我们如何快速抽取出有效信息成为了必须要解决的问题.由于信息处理的重复性,而计算机又善于处理机械的.重复的.有规律可循的工作,因此自然就想到了利用计算机来帮助人们进行处理.在用计算机进行自然语言处理时,主要使用的还是基于统计的方法,并且实际的使用中取得了不错的效果. 因为中文句子的特点——没有分隔符来分离句子中的词,所以在进行中文处理的时候,首先要做的就是如何对中文语句进行分词.这也是本次工程所要

中文分词之9577组同义词

这9577组同义词出自Java分布式中文分词组件 - word分词,这里列出50组同义词,更多同义词请看这里. 一一 逐一 一下子 一会儿 一丝不动 纹丝不动 一举成名 一鸣惊人 一乾二净 六根清净 一人得道 鸡犬升天 一再 几回再三 一古脑儿 一股脑儿 一叶知秋 尝鼎一脔 一名 一位 一呼百应 一呼百诺 一呼百诺 前呼后拥 一命呜呼 与世长辞 一唱一和 遥相呼应 一块儿 一起 一壁 一面 一声不响 一言不发 一孔之见 一知半解 一定 必然 一尘不染 一乾二净 一帆风顺 风平浪静 一往无前 勇往