读书人

中文分词算法效率有关问题

发布时间: 2012-12-20 09:53:21 作者: rapoo

中文分词算法效率问题
小弟最近写了一个基于词典的中文分词算法,不知道是否算效率,请各位高手指教下。

我的词典是载入到内存中的,我随便找了几个句子测试,测试结果如下:

关键字: 内容存入剪贴板
中文分词算法结束:
中文部分
内容
存入
剪贴
剪贴板
英文部分
分词算法耗时:00:00:00.1760101

关键字: 您的问题得到解答并完成结帖操作,将返还您本帖50%可用分! 查看论坛积分策略,让您快速获得可用分。
中文分词算法结束:
中文部分
您的
的问题
问题
问题得到
得到
解答
完成
操作
返还
本帖
可用
查看
论坛
积分
策略
让您
快速
获得
可用
英文部分
50%
分词算法耗时:00:00:00.3400194

关键字: 有回复的时候通知我
中文分词算法结束:
中文部分
回复
复的
的时候
时候
通知
通知我
英文部分
分词算法耗时:00:00:00.0870050

关键字: 这里发言,表示您接受了CSDN社区的 用户行为准则。
中文分词算法结束:
中文部分
这里
发言
表示
接受
接受了
受了
社区
区的
用户
行为
行为准则
为准
为准则
准则
英文部分
CSDN
分词算法耗时:00:00:00.1370078

关键字: 请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。
中文分词算法结束:
中文部分
对您
您的
言行
负责
并遵守
遵守
守中
中华
中华人民
华人
人民
人民共和
人民共和国
共和
共和国
国有
有关
有关法律
法律
法律法规
律法
法规
尊重
网上
道德
英文部分
分词算法耗时:00:00:00.3000171

关键字: 转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。
中文分词算法结束:
中文部分
转载
文章
请注明
注明
出自
如是
商业
业用途
用途
请联系
联系
原作
原作者
作者
英文部分
CSDN
www.csdn.net
分词算法耗时:00:00:00.2140122

请各位高手看看这样是否效率?还请各位高手给点分词算法的思路。
[最优解释]
衡量中文分词好不好,不仅要看速度,还得看正确率啊。。
你的处理未登录词汇的效果咋样
[其他解释]

Private Sub Form_Load()
Dim sentence As String
Dim words As String
Dim WordApp As Object
sentence = "请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。"
words = ""
Set WordApp = CreateObject("Word.Application")
WordApp.Documents.Add
WordApp.Selection.TypeText Text:=sentence
WordApp.Selection.HomeKey
Do
WordApp.Selection.MoveRight Unit:=2, Count:=1, Extend:=1
If WordApp.Selection.Text = vbCr Then Exit Do
words = words + WordApp.Selection.Text + vbCrLf
WordApp.Selection.MoveRight Unit:=1, Count:=1
Loop
WordApp.Quit SaveChanges:=0
Set WordApp = Nothing
MsgBox words
End
End Sub

[其他解释]
我直接调用Word里面按Ctrl-Right的功能进行中文分词。
Selection.MoveRight Unit:=wdWord
请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。




言行
负责


遵守
中华人民共和国
有关
法律
法规
,
尊重
网上
道德

[其他解释]
用正向和反向最大分词算法同时进行分词,曾做过一个敏感词过滤器,效果还可以.
[其他解释]
ICTCLAS
  这可是最早的中文开源分词项目之一,ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名。ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到 3M.ICTCLAS全部采用C/C++编写,支持Linux、FreeBSD及Windows系列操作系统,支持C/C++、C#、Delphi、 Java等主流的开发语言。


[其他解释]
。。。你写的我们哪知道
[其他解释]
你用的啥算法来分词的
[其他解释]

引用:
。。。你写的我们哪知道

我只是让你看关键字和时间。如果是你来写的话同样的关键字时间是否比我的短。当然我希望大家能给点思路。我是基于词典的,大家肯定有更好的思路。所以想听听大家的思路。
[其他解释]
引用:
你用的啥算法来分词的

呵呵,比较弱智,就是将关键字中的字组合。
[其他解释]
引用:
衡量中文分词好不好,不仅要看速度,还得看正确率啊。。
你的处理未登录词汇的效果咋样

我感觉正确率还行,如果词典再花点时间改进正确率应该是挺高的。
[其他解释]
最简单的就是前向最大匹配,后向最大匹配

想追求更好的效果看其他算法 比如基于统计的方法
[其他解释]
原来你用的词典啊。。
词典是永远无法包括所有词汇的,所以在识别未知词上你这个算法肯定有问题
[其他解释]
引用:
原来你用的词典啊。。
词典是永远无法包括所有词汇的,所以在识别未知词上你这个算法肯定有问题

那你能告诉我你有什么更好的办法么?
[其他解释]
如何识别未知词?
[其他解释]
如何识别未知词?
[其他解释]
那个,去google “数学之美与浪潮之巅”
[其他解释]
比楼主的算法快不少,十几倍吧!
[其他解释]
引用:
VB code
Private Sub Form_Load()
Dim sentence As String
Dim words As String
Dim WordApp As Object
sentence = "请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。"
words = ""
Set WordApp = CreateObject……

谁能给我翻译成C语言或者C#或者java呢?再或者delphi也行。我就是不会VB呢。
[其他解释]
不是有开源的分词项目吗?自己看看源码吧。
[其他解释]
引用:
ICTCLAS
  这可是最早的中文开源分词项目之一,ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构SigHan组织的评测中都获得了多项第一名。ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到 3M.ICTCLAS全部采用C/C++编写,支持Linux、FreeBSD及Windows系……

帅哥,能给点实用的东西么?
[其他解释]
楼主能把你写的c语言中文分词代码发给我吗。。。我的邮箱1083717052@qq.com。
先谢谢。。。我急需大侠
[其他解释]
我没下到源码。就是那个ICTCLAS的,我看他这个非常不错,速度也很快。我想学习他的技术。
[其他解释]
我现在也做这个项目呢,可以讨论

读书人网 >C语言

热点推荐