关于中文分词

关于中文分词

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

眼下全量索引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的反序列化过程也可能拖慢索引速度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118678.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JAVA环境配置

    JAVA环境配置JAVA开发环境配置1window系统搭建java环境1.1下载JDK首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork

  • php 删除一维数组中某一个值元素的操作方法

    php 删除一维数组中某一个值元素的操作方法

  • 【数据库–db4o 介绍】

    【数据库–db4o 介绍】一、db4o 简介db4o(databaseforobjects)wasanembeddableopensourceobjectdatabaseforJavaand.NETdevelopers.Itwasdeveloped,commerciallylicensedandsupportedbyActian.InOctober2014,Ac…

  • Android开发环境配置(以windows为例)

    Android开发环境配置(以windows为例)Android开发环境配置工具   如果你准备从事Android开发,那么无论选择在eclipse下开发,还是选择在AndroidStudio下开发,都可以参照以下步骤进行Android开发环境的配置。Android开发环境配置过程1.准备笔记本或台式机  使用笔记本还是台式机,视个人需求而定,但我要强调的是在配置上不要手软,要舍得下手。一台流畅的电脑,会让

  • Java中containsKey()方法[通俗易懂]

    Java中containsKey()方法[通俗易懂]containsKey方法——判断是否包含指定的键名在HashMap中经常用到containsKey()来判断键(key)是否存在。HashMap中允许值对象(value)为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况:一种是在HashMap中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在HashMap中不应该利用get()方法来判断是否存在某个键,而应该利用containsKey()方法来判断。例如:HashMap&l

  • docker搭建kafka集群

    docker搭建kafka集群docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号