爱意满满的作品展示区。
tanszhe

一个纯 PHP 的分词

  •  
  •   tanszhe · Dec 27, 2017 · 7642 views
    This topic created in 3239 days ago, the information mentioned may be changed or developed.

    VicWord 一个纯 php 的分词

    (顺便安利一下:本人从帝都回来,打算找个兼职 。如果你们正好缺个前端 或者 php 后端 不妨联系我。微信:dongxi828 )

    star 地址 https://github.com/lizhichao/VicWord

    分词说明

    • 含有 3 种切分方法
      • getWord 长度优先切分 。最快
      • getShortWord 细粒度切分。比最快慢一点点
      • getAutoWord 自动切分 (在相邻词做了递归) 。效果最好
    • 可自定义词典,自己添加词语到词库,词库支持文本格式json和二级制格式igb 二进制格式词典小,加载快
    • dict.igb含有 175662 个词
    • 三种分词结果对比
    $fc = new VicWord('igb');
    $arr = $fc->getWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
    //北京大学|生喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒
    //$arr 是一个数组 每个单元的结构[词语,词语位置,词性,这个词语是否包含在词典中] 这里只值列出了词语
    
    $arr =  $fc->getShortWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
    //北京|大学|生喝|进口|红酒|,|在|北京|大学|生活|区喝|进口|红酒
    
    $arr = $fc->getAutoWord('北京大学生喝进口红酒,在北京大学生活区喝进口红酒');
    //北京|大学生|喝|进口|红酒|,|在|北京大学|生活区|喝|进口|红酒
    
    //准确度对比
    //q 的分词和百度的分 http://nlp.qq.com/semantic.cgi#page2 http://ai.baidu.com/tech/nlp/lexical
    
    

    分词速度

    机器阿里云 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
    getWord 每秒 140w 字
    getShortWord 每秒 138w 字
    getAutoWord 每秒 40w 字
    测试文本在百度百科拷贝的一段 5000 字的文本

    制作词库

    • 词库支持 utf-8 的任意字符
    • 词典大小不影响 分词速度
      VicDict->add(词语,词性 = null)

    demo

    demo

    39 replies  •  2018-06-14 15:35:20 +08:00
    dishuibaby
    dishuibaby
    Dec 27, 2017
    1
    mark 一下
    server
    server
    Dec 27, 2017
    2
    1024,😀
    qianmeng
    qianmeng
    Dec 27, 2017 via Android
    3
    这个很厉害啊
    eseeker
    eseeker
    Dec 27, 2017 via Android
    4
    好东西要赞一个。谢谢分享!
    gdtv
    gdtv
    Dec 27, 2017
    5
    感谢,正好需要
    gdtv
    gdtv
    Dec 27, 2017
    6
    试了一下
    广东省广州市解放路 24 号越秀公园
    结果:
    广东省,广州市,解放,路 24 号越秀,公园

    感谢楼主,正好可以用到我现在的项目里。
    assad
    assad
    Dec 27, 2017 via Android
    7
    赞一个
    gdtv
    gdtv
    Dec 27, 2017
    8
    能否区分词性,例如“的、地、得”是助词,“红酒”是名词
    tanszhe
    tanszhe
    OP
    Dec 27, 2017
    9
    @gdtv 补充在词库就能支持了 目前的词库没有词性
    babytomas
    babytomas
    Dec 27, 2017
    10
    可以配合你这个做本地翻译引擎耶。
    predator
    predator
    Dec 27, 2017
    11
    棒棒哒非常好
    ORZRRR
    ORZRRR
    Dec 27, 2017
    12
    支持下,这玩意核心在词典,希望大家可以开源一起维护完善词典?已经人工给一个星星
    LeungJZ
    LeungJZ
    Dec 27, 2017
    13
    支持支持。已 star。
    kn007
    kn007
    Dec 27, 2017
    14
    nice,支持
    x86
    x86
    Dec 27, 2017
    15
    好东西
    Sornets
    Sornets
    Dec 27, 2017
    16
    厉害了,star+1
    lyz745704689
    lyz745704689
    Dec 27, 2017
    17
    有一个个人项目,目前安卓已经上架,ios 在开发中,不知道楼主有兴趣没有,已经加您微信了
    rebill
    rebill
    Dec 27, 2017
    18
    看来切词的准确性在于词典
    pkm
    pkm
    Dec 27, 2017
    19
    结婚|的|和尚|未结婚的
    pkm
    pkm
    Dec 27, 2017
    20
    楼主棒棒哒,细粒度挺准确的
    aksoft
    aksoft
    Dec 27, 2017
    21
    php 是最好的语言
    imNull
    imNull
    Dec 27, 2017
    22
    fork 了楼主的,简单改了改支持 composer: https://github.com/xu42/VicWord
    tanszhe
    tanszhe
    OP
    Dec 27, 2017
    23
    @imNull 感谢😄,还是把 json 格式保留 方便没有安装 igbinary 的人
    qianmeng
    qianmeng
    Dec 27, 2017 via Android
    24
    刚才试了一下,感觉词库的大小限制了分词效果,看来智能程序的阅读量也很重要啊
    singer
    singer
    PRO
    Dec 27, 2017 via iPhone
    25
    哇塞,好厉害啊
    heybuddy
    heybuddy
    Dec 27, 2017 via Android
    26
    老兄 666
    mingyun
    mingyun
    Dec 27, 2017
    27
    @imNull 安装提示

    [InvalidArgumentException]
    Could not find a matching version of package xu42/vic-word. Check the packa
    ge spelling, your version constraint and that the package is available in a
    stability which matches your minimum-stability (stable).
    arsom
    arsom
    Dec 28, 2017 via iPhone
    28
    mark
    polymerdg
    polymerdg
    Dec 28, 2017
    29
    mark
    imNull
    imNull
    Dec 28, 2017
    30
    @mingyun 再试试
    imNull
    imNull
    Dec 28, 2017
    31
    @tanszhe 安装个扩展 做一点小小的牺牲也是可以的
    TangMonk
    TangMonk
    Dec 28, 2017 via Android
    32
    每个单独的 http 请求都要重新加载词库吗?
    tanszhe
    tanszhe
    OP
    Dec 28, 2017
    33
    @TangMonk 可这么做 ,这样每次都会浪费加载词库的时间。可以做个服务 每次去调用就好了,这样词库就只加载一次
    TangMonk
    TangMonk
    Dec 28, 2017 via Android
    34
    @tanszhe 用 apcu 来缓存可以吧
    mumu
    mumu
    Dec 28, 2017
    35
    mark
    Outshine
    Outshine
    Dec 29, 2017
    36
    好东西,已 star
    leon1900
    leon1900
    Dec 29, 2017
    37
    棒
    wbz93815
    wbz93815
    Dec 30, 2017
    38
    好东西,收藏下。
    artandlol
    artandlol
    Jun 14, 2018
    39
    安装完一直提示故障,composer 和 git 的方式都有问题。

    PHP Fatal error: Uncaught Error: Call to undefined function Lizhichao\Word\igbinary_unserialize() in /data/web/vendor/lizhichao/word/Lib/VicWord.php:31
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4729 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 01:57 · PVG 09:57 · LAX 17:57 · JFK 20:57
    ♥ Do have faith in what you're doing.