分享一个简单易懂、不需要语料库的分词程序~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
moonshile
V2EX    分享创造

分享一个简单易懂、不需要语料库的分词程序~

  •  
  •   moonshile2015-07-16 19:16:17 +08:00 4936 次点击
    这是一个创建于 3751 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先上地址
    https://github.com/Moonshile/ChineseWordSegmentation

    原理参考的是这篇神文,通俗易懂,作者不愧是中文系出身的!

    好吧,我承认是想顺便求几个Star,真是还干净着呢。。


    觉得有必要贴一下使用方法,非常简单~

    from wordseg import WordSegment doc = u'十四是十四四十是四十,十四不是四十,四十不是十四' ws = WordSegment(doc, max_word_len=2, min_aggregation=1, min_entropy=0.5) ws.segSentence(doc) 

    分词结果为

    十四 是 十四 四十 是 四十 , 十四 不是 四十 , 四十 不是 十四 
    第 1 条附言    2015-07-17 14:45:11 +08:00
    再注明一下,我纯粹是觉得这个算法简单好玩,特此分享学习的~
    不幸的是,这个分享确实可能对真正是需要分词的人造成误导(话说真需要的人肯定早就自己查到成熟的开源分词了吧),且总有傲慢而玻璃心的人喜欢抛出问题却不解决问题,这里特此解决一下,分享两个成熟的分词服务。

    1. Pullword: http://www.pullword.com/ (@dtdnqsb 推荐)

    2. 结巴分词: https://github.com/fxsjy/jieba
    18 条回复    2018-08-13 00:02:06 +08:00
    schezukNewTos
        1
    schezukNewTos  
       2015-07-16 19:39:05 +08:00
    善哉。
    不过『本课程』之类的词组怎么解决的?
    『是个』这样的搭配是怎么处理的?
    偶见词语在一句话中连续出现该怎样应对?
    moonshile
        2
    moonshile  
    OP
       2015-07-16 19:46:54 +08:00
    @schezukNewTos 这些都要看情况,具体来说是要看被分词的对象。
    如果被分词的是一篇介绍一门课程的文章,而“本课程”出现足够多次,那么“本课程”就视为一个词语;否则,如果只是一篇泛泛介绍各门课程的文章,那么就会分成“本”和“课程”两个词。
    具体了解的话可以看看我给的那篇参考文章,很好懂的~
    ChanneW
        3
    ChanneW  
       2015-07-16 20:00:35 +08:00
    星标后研
    zangbob
        4
    zangbob  
       2015-07-16 21:43:53 +08:00
    很长的段落或文章,怎么整?不能直接读取.txt吗?
    moonshile
        5
    moonshile  
    OP
       2015-07-16 22:27:35 +08:00
    @zangbob 可以先读到内存中,然后在调用……不过参数需要调整,我正在想办法让它能自适应较佳参数……
    X_Del
        6
    X_Del  
       2015-07-16 23:49:06 +08:00
    分词与机器学习结合,用待分词的文本提取出个语料库再分词……
    solsol
        7
    solsol  
       2015-07-17 00:17:09 +08:00
    M67几年前的旧文拿来骗星……现在的中文分词算法早就不一样啦
    Tiande
        8
    Tiande  
    PRO
       2015-07-17 00:19:15 +08:00   1
    百度的 APIStore 提供的也有分词服务。
    moonshile
        9
    moonshile  
    OP
       2015-07-17 09:16:46 +08:00
    @X_Del 嗯,基本就是这么个思路……
    moonshile
        10
    moonshile  
    OP
       2015-07-17 09:19:56 +08:00
    @solsol 虽然你不需要,但是其他跟我一样刚刚看到的是需要的,收起你的傲慢吧
    saber000
        11
    saber000  
       2015-07-17 10:01:42 +08:00
    ws = WordSegment(doc, max_word_len=2, min_aggregation=1, min_entropy=0.5)
    ws.segSentence(doc)

    为什么doc要传两次?
    moonshile
        12
    moonshile  
    OP
       2015-07-17 10:21:54 +08:00
    @saber000 就如X_Del所说,先用待分词的文本提取出语料库,然后再分词;其实第二次也可以传其他文本,不过是用从第一个文本提取的语料库进行分词
    solsol
        13
    solsol  
       2015-07-17 13:24:27 +08:00
    @moonshile 请问我哪一个字傲慢了?被说算法旧就受挫了?学习旧的没什么,拿出来宣传就不好了吧,只能忽悠那些真正需要的人。我提醒别人一句有问题么?多说无益。
    lwbjing
        14
    lwbjing  
       2015-07-17 17:21:38 +08:00   3
    "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
    Bryan0Z
        15
    Bryan0Z  
       2015-07-18 12:14:18 +08:00 via Android
    @lwbjing 你赢了
    Kabie
        16
    Kabie  
       2015-07-18 13:53:28 +08:00
    @solsol ...那么“现在的中文分词算法”又是怎么弄的呢。。。

    ……要提醒至少给个新算法的关键字吧。。。如果这都不屑于给。。。还不算傲慢吗。。。
    warden2h
        17
    warden2h  
       2015-07-23 16:28:00 +08:00
    @lwbjing 你赢了
    Rorysky
        18
    Rorysky  
       2018-08-13 00:02:06 +08:00
    @solsol #13 老哥,求指点下分词的新算法 关键词~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1046 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:35 PVG 02:35 LAX 11:35 JFK 14:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86