easy_install mmseg

38 views
Skip to first unread message

张沈鹏

unread,
Jun 14, 2009, 12:17:35 AM6/14/09
to pyth...@googlegroups.com, ju...@googlegroups.com
http://pypi.python.org/pypi/mmseg/1.1.1

from mmseg import seg_txt
for i in seg_txt("最主要的更动是:张无忌最后没有选定自己的配偶。"):
print i

最主要

更动


张无忌
最后


选定
自己

配偶

是在
pymmseg-cpp
by pluskid
http://code.google.com/p/pymmseg-cpp/
的基础上做了一些小改动

然后加了一个easy_install的安装包

张沈鹏

unread,
Jun 14, 2009, 12:22:41 AM6/14/09
to pyth...@googlegroups.com, ju...@googlegroups.com
http://pypi.python.org/pypi/mmseg/
访问这个链接吧 有时候我会更新一下

YoungKing

unread,
Jun 14, 2009, 12:54:03 AM6/14/09
to pyth...@googlegroups.com, ju...@googlegroups.com
赞啦 决定把我们everydo全文检索中的中文分词模块换成张教主这个

2009/6/14 Zoom.Quiet <zoom....@gmail.com>
On Sun, Jun 14, 2009 at 12:22, 张沈鹏<zsp...@gmail.com> wrote:
> http://pypi.python.org/pypi/mmseg/
> 访问这个链接吧 有时候我会更新一下
>

赞哪!!这是自制搜索引擎的关系部件哪,,,

--
http://zoomquiet.org
'''过程改进乃是催生可促生靠谱的人的组织!'''
Free as in Freedom! 哲思自由软件社区:http://zeuux.org





--
润普公司:zopen.cn
易度项目在线管理平台:everydo.com
个人博客:blog.xmu.me (GAE已挂,还是老老实实用wordpress)

张沈鹏

unread,
Jun 14, 2009, 1:04:07 AM6/14/09
to ju...@googlegroups.com, pyth...@googlegroups.com
事实上

我觉得觉得以字分词效果会更好

但是

缺少一个标注好的的 适宜web2.0网站和时代潮流的 训练语料

所有 现在的想法是

先用一个词库分词

然后用这个来标注

再拿去训练最大熵的以字分词

不过很忙加上很懒

不知道什么时候才才有空去做了:)

张沈鹏

unread,
Jun 14, 2009, 1:12:27 AM6/14/09
to ju...@googlegroups.com, pyth...@googlegroups.com
2009/6/14 YoungKing <yan...@gmail.com>:
> 赞啦 决定把我们everydo全文检索中的中文分词模块换成张教主这个

如果是

全文检索

最好对
/mmseg/mmseg/data
下的
__init__.py chars.dic test.py words.dic

words.dic
做一些处理

最简单的规则就是 把包含下面字符 大于3字长度的词去掉
不然 很可能有会有检索问题


2381820 种
2404595 被
2413798 行
2415306 动
2419132 把
2438147 语
2469046 头
2482602 又
2515758 吗
2537022 些
2540902 因
2574753 作
2604378 候
2618353 理
2636829 主
2637097 给
2639943 死
2683804 当
2693005 男
2696888 文
2716546 定
2723024 呢
2723741 问
2726007 水
2728143 怎
2740535 做
2768016 于
2784837 别
2801842 她
2845027 其
2850496 手
2867643 呵
2871553 方
2921241 前
2924721 吃
2988565 果
2993309 回
3022416 比
3049579 所
3053684 日
3060722 之
3067578 本
3115939 老
3150869 经
3158385 分
3188867 见
3190690 开
3219217 而
3237482 次
3250228 国
3257263 同
3271752 知
3279798 成
3314822 太
3321450 但
3353768 无
3368031 面
3403956 起
3464769 实
3506846 感
3569181 如
3591263 事
3621069 明
3626999 话
3684823 意
3694708 欢
3724097 只
3783819 最
3888514 女
3971028 己
3982749 喜
3991399 地
4069021 情
4147964 发
4164870 年
4202305 学
4217510 道
4270707 用
4296297 觉
4305601 现
4335666 真
4394688 着
4394903 样
4447965 爱
4498555 然
4524159 墙
4558695 点
4774657 里
4813381 后
4833535 心
4958172 出
4986061 家
4988080 对
5050338 吧
5123828 什
5207780 中
5753758 下
5754726 生
6477603 能
6525968 自
6535904 和
6685016 时
6698773 为
6781735 小
6790537 想
6798831 多
6933711 天
7228676 会
7229790 子
7237753 去
7353757 得
7543457 可
7608938 们
7614516 过
7732628 以
8443669 他
8496721 到
8634324 那
8950034 很
9113334 都
9132602 没
9196238 说
9206613 大
9260025 还
9608350 上
10114150 也
10124478 看
10193922 要
10950024 来
11980444 么
12816019 就
13072276 好
13212017 哈
13264256 这
14460126 在
14721492 啊
15393596 个
19396613 你
20558694 有
20895101 人
25453406 一
30533630 了
32397716 不
36882033 是
40199819 我
67946136 的

张沈鹏

unread,
Jun 14, 2009, 1:12:44 AM6/14/09
to ju...@googlegroups.com, pyth...@googlegroups.com
大于等于3字长度的词去掉

YoungKing

unread,
Jun 14, 2009, 1:16:57 AM6/14/09
to ju...@googlegroups.com
感谢张教主提醒
不过好像和pymmseg一样都不支持unicode,必须强制转换为str才能使用?

2009/6/14 张沈鹏 <zsp...@gmail.com>
大于等于3字长度的词去掉


张沈鹏

unread,
Jun 14, 2009, 1:17:21 AM6/14/09
to ju...@googlegroups.com
2009/6/14 张沈鹏 <zsp...@gmail.com>:

> 2009/6/14 YoungKing <yan...@gmail.com>:
>> 赞啦 决定把我们everydo全文检索中的中文分词模块换成张教主这个
>
> 如果是
>
> 全文检索
>
> 最好对
> /mmseg/mmseg/data
> 下的
> __init__.py  chars.dic  test.py  words.dic
>
> words.dic
> 做一些处理
>
> 最简单的规则就是 把包含下面字符 大于3字长度的词去掉
> 不然 很可能有会有检索问题
>

另外一种比较保险的做法 最分出来的词 如果长度大于等于3 在两元分词一下
这样总数词数也的很有限的 而且可以避免检索不到

张沈鹏

unread,
Jun 14, 2009, 1:20:41 AM6/14/09
to ju...@googlegroups.com
2009/6/14 YoungKing <yan...@gmail.com>:
> 感谢张教主提醒
> 不过好像和pymmseg一样都不支持unicode,必须强制转换为str才能使用?

因为c代码中都是对char进行处理,所以必须是一种str编码

不过你可以自己包一层,判定一下类型

下面两种做法选一种就 可以了
倾向于第二种
因为第一种那种比较暴力的做法有不少问题 而比较细致的办法 又比较麻烦 我有空回来处理一下这个词库

1.


> 最简单的规则就是 把包含下面字符 大于3字长度的词去掉
> 不然 很可能有会有检索问题
>

2.

YoungKing

unread,
Jun 14, 2009, 1:23:21 AM6/14/09
to ju...@googlegroups.com
其实我想,对搜索和查询都用同一个分词算法应该没什么问题吧
下面的表现结果就比较一致,没有出现分词不同的情况

>>> for i in seg_txt("企业如何进行项目管理?"):print i                                             
...
企业
如何进行
项目管理
>>> for i in seg_txt("如何进行"):print i            
...
如何进行
>>> for i in seg_txt("项目管理"):print i       
...
项目管理


2009/6/14 张沈鹏 <zsp...@gmail.com>

张沈鹏

unread,
Jun 14, 2009, 1:26:08 AM6/14/09
to ju...@googlegroups.com
另 张 喜欢 上周 , 没 夺 倚天 被偷袭

比如你搜索 偷袭

被偷袭 这个就会找不到了


-------

六大 门派 围攻 光明顶

比如你搜索 光明

光明顶 就会找不到了

对于不懂电脑的普通用户

他们会很困惑

张沈鹏

unread,
Jun 14, 2009, 1:34:41 AM6/14/09
to ju...@googlegroups.com
进一步说

分词可以提高搜索的准确率

但是还需要靠 两元分词 保障 全查率

对于切出来的比较多的 连续单字 也最好 两元分词 并索引一下

此外 在有了分词的情况下 可以减少很多 不必要的 二元分词 带来的 空间浪费

YoungKing

unread,
Jun 14, 2009, 9:23:31 PM6/14/09
to ju...@googlegroups.com
两元分词保证全查是好主意,但是还是拿光明顶来说吧,二元分词是希望可以分为 光明 顶
但根据最长匹配原理,以词分词最后结果还是 光明顶

张教主的第一种方法还是比较可行的

2009/6/14 张沈鹏 <zsp...@gmail.com>

张沈鹏

unread,
Jun 14, 2009, 10:07:44 PM6/14/09
to ju...@googlegroups.com
但根据最长匹配原理,以词分词最后结果还是 光明顶

你可以对 词进行两元分词啊
这样可以省不少空间

比如

张无忌 在 光明顶

忌在
在光

这两个都可以忽视掉

chent...@gmail.com

unread,
Jun 14, 2009, 11:40:22 PM6/14/09
to 句读:开放的中文分词项目
索引和查询的分词应该有所区别较好
索引要保证的是查全率 分的精度可以细一点 宁可错杀 比如"学历史"分成 "学历" "历史"
查询要保证精确性,就不能这么分了,如果查询分对了,索引里的错索引基本看不出来

还有有个办法就是粘词,在索引的时候发现出现单字的情况,经常是因为辞典里面缺少这个词,比如没有"上谷歌"就会切成"上""谷" "歌",这种情况可
以把它跟前后粘一下,"上谷""谷歌",牺牲正确律增加查全律。

On 6月14日, 下午1时23分, YoungKing <yanc...@gmail.com> wrote:
> 其实我想,对搜索和查询都用同一个分词算法应该没什么问题吧
> 下面的表现结果就比较一致,没有出现分词不同的情况
>
> >>> for i in seg_txt("企业如何进行项目管理?"):print
>
> i
> ...
> 企业
> 如何进行
> 项目管理>>> for i in seg_txt("如何进行"):print i
>
> ...
> 如何进行>>> for i in seg_txt("项目管理"):print i
>
> ...
> 项目管理
>
> 2009/6/14 张沈鹏 <zsp...@gmail.com>
>
>
>
> > 2009/6/14 张沈鹏 <zsp...@gmail.com>:

> > > 2009/6/14 YoungKing <yanc...@gmail.com>:

Alex Dong

unread,
Jun 15, 2009, 2:15:12 AM6/15/09
to ju...@googlegroups.com
插一句:为什么不去做”基于语义的排除奇异呢?“

如果文章关于it,或者互联网,谷歌的概率(基于贝页斯)就会更大一些,不是
吗?
Alex Dong
---------------------------------------------------
Email: alex...@gmail.com
Skype: eAlexDong
About Me: http://www.alexdong.com/






chent...@gmail.com

unread,
Jun 15, 2009, 10:20:15 PM6/15/09
to 句读:开放的中文分词项目
可能例子没举好,我的意思是在用字典分词时,字典里没有这个词的时候可以通过将单字分别和前后粘成词。比较粗糙的办法,还没到语义排除的层次上去,因为
都不知道它是个词呢。

On 6月15日, 下午2时15分, Alex Dong <alex.d...@gmail.com> wrote:
> 插一句:为什么不去做"基于语义的排除奇异呢?"
>
> 如果文章关于it,或者互联网,谷歌的概率(基于贝页斯)就会更大一些,不是
> 吗?
>

> Email: alex.d...@gmail.com

张沈鹏

unread,
Jun 15, 2009, 10:48:01 PM6/15/09
to ju...@googlegroups.com
就是我上面说的

张沈鹏

unread,
Jun 19, 2009, 5:33:42 AM6/19/09
to pyth...@googlegroups.com, ju...@googlegroups.com
easy_install -U mmseg

更新一下
上一个版本有个比较严重的bug

张沈鹏

unread,
Dec 19, 2009, 11:48:14 AM12/19/09
to ju...@googlegroups.com
2009/6/14 YoungKing <yan...@gmail.com>:
> 赞啦 决定把我们everydo全文检索中的中文分词模块换成张教主这个

http://pypi.python.org/pypi/mmseg/1.1.9

现在可以换了:)


Zues:zuroc ~/dev:python -m mmseg.search
----------
哈尔罗杰历险记(套)
哈尔
罗杰
历险
历险记
----------
卡拉马佐夫兄弟
卡拉

佐夫
兄弟
----------
银河英雄传说
银河
英雄
传说
银河英雄传说
----------
张无忌在光明顶
无忌
张无忌
光明
光明顶
----------
韦帅望的江湖(Ⅲ众望所归)
韦帅
帅望
韦帅望
江湖
众望
望所
所归
众望所归
----------
少年韦帅望之童年结束了
少年
韦帅
帅望
望之
韦帅望之
童年
结束
----------
    晋江文学网站驻站作家,已出版多部作品。
晋江
文学
网站
文学网站
驻站
作家
出版
多部
作品

YoungKing

unread,
Dec 19, 2009, 11:10:11 PM12/19/09
to ju...@googlegroups.com
因为全文索引要保证全查率 所以后来换成二元分词了 呵呵
那是前公司的项目了,以后有机会再试


2009/12/20 张沈鹏 <zsp...@gmail.com>

--
====================
句读:开放的中文分词项目
====================

主要链接
=======

* 句读首页:http://judou.org

使用
====
* 讨论请发邮件到ju...@googlegroups.com
* 查看更多到http://groups.google.com/group/judou

* 想退订发邮件到judou+un...@googlegroups.com



--
News about me: http://www.feedmagnet.com/youngking/news/
Reply all
Reply to author
Forward
0 new messages