美文网首页
基于同义词的分词算法

基于同义词的分词算法

作者: 吃番茄的土拨鼠 | 来源:发表于2021-07-11 21:13 被阅读0次

话不多说,debug一遍就可以完全看懂

#!/usr/bin/python
# coding=utf-8
# dag 分词


word_dict = {
    u'我是': 30,
    u'是小帅': 60,
    u"我": 1,
    u"是": 1,
    u"小帅哥": 18,
    u"哥": 1
}


#
def get_dag(txt):
    dag_dict = {}
    n = len(txt)
    for idx in range(n):
        tmp_list = [idx]
        frag = txt[idx:idx + 2]
        i = idx + 1
        while i < n:
            if frag in word_dict:
                tmp_list.append(i)

            i += 1
            frag = txt[idx:i + 1]
        if len(tmp_list) > 0:
            dag_dict[idx] = tmp_list
    return dag_dict


def get_route(dag_dict, txt):
    n = len(txt)
    route_dict = {n: [0, 0]}
    for idx in range(n - 1, -1, -1):
        max_weight = 0
        if idx not in dag_dict:
            route_dict[idx] = [1, idx]
            continue
        for x in dag_dict[idx]:
            frag = txt[idx:x + 1]
            cur_weight = word_dict[frag] if frag in word_dict else 0
            total_weight = cur_weight + route_dict[x + 1][0]
            if total_weight > max_weight:
                max_weight = total_weight
                route_dict[idx] = [total_weight, x]
    return route_dict


def get_words(route_dict, txt):
    n = len(txt)
    word_list = []
    idx = 0
    while idx < n:
        edx = route_dict[idx][1]
        word = txt[idx:edx + 1]
        word_list.append(word)
        idx = edx + 1
    return word_list


query = u'我是小帅哥'
dag = get_dag(query)
route = get_route(dag, query)
words = get_words(route, query)
print('-'.join(words))

相关文章

  • 基于同义词的分词算法

    话不多说,debug一遍就可以完全看懂

  • Lucene中文分词

    中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。 基于字符串匹配分词:机械分词算法,这里我...

  • Mmseg算法

    1. Mmseg算法简介 Mmseg是一种基于字符串匹配(亦称基于词典)的中文分词算法。传统的基于词典的分词方案虽...

  • 分词

    分词背后的技术 现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于目前就是基于规则,理解和统计的分词方法。...

  • 中文分词的方法

    1、基于字符串匹配的方法 1.1 正向最大匹配分词算法1.2 逆向最大匹配分词算法1.3 双向最大匹配分词算法1....

  • Eddy的AI小助手-finalseg分词模块(19)

    Finalseg算法是基于HMM模型,采用了Viterbi算法的分词Python工具包,简单易用,分词效果也不错。...

  • 中文分词器MMSEG4J分词练习

    1.MMSeg分词算法原理 MMSeg是Chih-Hao Tsai提出的基于字符串匹配(亦称基于词典)的中文分词算...

  • mmseg4j中文分词包学习报告

    目录 1.认识中文分词包2.分词方法与效果分析3.分词包背后的分词算法学习4.分词结果提交5.基于分词结果的词云分...

  • 自然语言处理中的分词算法实现

    最近实现的3种中文分词算法 基于最大匹配(前向匹配、后向匹配、双向匹配) HMM n-gram 基于最大匹配算法(...

  • jieba分词基本使用

    jieba “结巴”中文分词:做最好的 Python 中文分词组件 算法 基于前缀词典实现高效的词图扫描,生成句子...

网友评论

      本文标题:基于同义词的分词算法

      本文链接:https://www.haomeiwen.com/subject/acklpltx.html