MicroTokenizer: 一个面向教学的微型中文分词引擎 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
howlanderson
V2EX    自然语言处理

MicroTokenizer: 一个面向教学的微型中文分词引擎

  •  
  •   howlanderson 2018-06-15 14:10:06 +08:00 10154 次点击
    这是一个创建于 2736 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微型中文分词器

    一个微型的中文分词器,能够按照词语的频率(概率)来利用构建 DAG (有向无环图)来分词。

    特点 / 特色

    • 微型:主要代码只有一个文件,不足 200 行
    • 面向教育:可以导出 graphml 格式的图结构文件,辅助学习者理解算法过程
    • 良好的分词性能:由于使用类似 结巴分词 的算法,具有良好的分词性能
    • 具有良好的扩展性:使用和 结巴分词 一样的字典文件,可以轻松添加自定义字典

    演示

    在线演示

    在线的 Jupyter Notebook 在 Binder

    离线演示

    分词

    代码:

    import MicroTokenizer tokens = MicroTokenizer.cut("知识就是力量") print(tokens) 

    输出:

    ['知识', '就是', '力量'] 

    有向无环图效果演示

    DAG of 'knowledge is power'

    备注

    • <s></s> 是图的起始和结束节点,不是实际要分词的文本
    • 图中 Edge 上标注的是 log(下一个节点的概率的倒数)
    • 最短路径已经用 深绿色 作了标记

    更多演示

    "王小明在北京的清华大学读书"

    DAG of xiaomin

    项目地址

    https://github.com/howl-anderson/MicroTokenizer

    开发者

    Xiaoquan Kong @ https://github.com/howl-anderson

    依赖

    只在 python 3.5+ 环境测试过,其他环境不做兼容性保障。

    安装

    pip install git+https://github.com/howl-anderson/MicroTokenizer.git 

    如何使用

    分词

    见上文

    导出 GraphML 文件

    from MicroTokenizer.MicroTokenizer import MicroTokenizer micro_tokenizer = MicroTokenizer() micro_tokenizer.build_graph("知识就是力量") micro_tokenizer.write_graphml("output.graphml") 
    11 条回复    2018-08-30 16:25:37 +08:00
    leopku
        1
    leopku  
       2018-06-15 16:17:10 +08:00
    先 star 为敬
    howlanderson
        2
    howlanderson  
    OP
       2018-06-15 17:43:59 +08:00
    @leopku 感谢 PKU 大佬!
    artandlol
        3
    artandlol  
       2018-06-15 17:54:40 +08:00 via iPhone
    Ik
    smartcn 这类的吗
    shiny
        4
    shiny  
    PRO
       2018-06-15 18:13:27 +08:00
    让我想起“ 24 口交换机”那梗,试了下,带数字就直接报错了。
    howlanderson
        5
    howlanderson  
    OP
       2018-06-18 11:04:29 +08:00
    @shiny 我没有尝试这种混合的用法,不过我回去看看什么情况,改进一下,谢谢试用!
    howlanderson
        6
    howlanderson  
    OP
       2018-06-18 11:06:20 +08:00
    @artandlol 类似的功能,但目的不同,这个主要是面向教学:演示一个简单的分词器如何工作的。
    howlanderson
        7
    howlanderson  
    OP
       2018-06-18 11:07:42 +08:00
    @shiny 不知道你是否在 README 中注意到,你可以直接使用 binder: https://mybinder.org/v2/gh/howl-anderson/MicroTokenizer/master?filepath=.notebooks%2FMicroTokenizer.ipynb 来做实验。
    howlanderson
        8
    howlanderson  
    OP
       2018-06-19 13:22:09 +08:00
    @shiny 我添加了 https://github.com/howl-anderson/MicroTokenizer/issues/1 这个 issue 来跟踪这个问题。
    northisland
        9
    northisland  
       2018-06-20 15:40:20 +08:00
    厉害,已 star
    howlanderson
        10
    howlanderson  
    OP
       2018-06-21 20:26:09 +08:00
    @northisland 感谢!
    shm7
        11
    shm7  
       2018-08-30 16:25:37 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5500 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 02:46 PVG 10:46 LAX 18:46 JFK 21:46
    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