zoukankan      html  css  js  c++  java
  • 可定制的分词库——Yaha(哑哈)分词

    可定制的分词库——Yaha(哑哈)分词
    在线测试地址:http://yaha.v-find.com/ 部署于GAE yahademo.appspot.com
    Yaha分词主要特点是把分词过程分成了4个阶段,每个阶段都可以让用户加入自己的一些定制,以面向不同的用户需求。

    这是一个最简单真白的示例:
    # -*- coding=utf-8 -*-
    import sys, re
    from yaha import Cuttor, RegexCutting, SurnameCutting2, SuffixCutting

    str = '唐成真是唐成牛的长寿乡是个1998love唐成真诺维斯基'
    cuttor = Cuttor()

    # Get 3 shortest paths for choise_best
    #cuttor.set_topk(3)

    # Use stage 1 to cut english and number
    cuttor.set_stage1_regex(re.compile('(d+)|([a-zA-Z]+)', re.I|re.U))

    # Or use stage 2 to cut english and number
    #cuttor.add_stage(RegexCutting(re.compile('d+', re.I|re.U)))
    #cuttor.add_stage(RegexCutting(re.compile('[a-zA-Z]+', re.I|re.U)))

    # Use stage 3 to cut chinese name
    #surname = SurnameCutting()
    #cuttor.add_stage(surname)

    # Or use stage 4 to cut chinese name
    #surname = SurnameCutting2()
    #cuttor.add_stage(surname)

    # Use stage 4 to cut chinese address or english name
    #suffix = SuffixCutting()
    #cuttor.add_stage(suffix)

    seglist = cuttor.cut(str)
    print ','.join(list(seglist))

    #seglist = cuttor.cut_topk(str, 3)
    #for seg in seglist:
    # print ','.join(seg)
    阶段讲解
    stage 1是在分句中实现,通过正则可直接将数字或英文单词分成独立的词,生成独立的这些词不再参与下一步的分词。
    stage 2在创建有向无环图之前实现,对分句进行预扫描,加入一些可能形成的词,并赋予一定的概率。
    stage 3在创建有向无环图期间实现,从字典得到词的概率,或通过一些匹配模式得到可能的词,赋予一定概率。
    stage 4在得到有向无环图的最大概率之后(程序实现当中是最短路径),对一些不能成词的单字再继续进行处理;
    或得到最短的多条路径之后,根据用户的兴趣得到最终的一条路径。若用户有兴趣,可以在这一步实现对词性的分析。

  • 相关阅读:
    vue 定义全局函数和变量
    大学感受
    NOIP2018 游记
    NOI2018 游记
    THUSC 2018 游记
    APIO2018 游记
    SXOI2018游记
    poorpool 的 考场 NOI Linux 配置
    关于 poorpool
    NOIP2017 游记
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/5322013.html
Copyright © 2011-2022 走看看