搜索引擎研究-如何分词-高级分词-基础分词后组合复合词汇

最近测试搜索引擎,发现用基本词汇分词出来在索引检索会有检索词汇被细分,造成检索到的文章是七零八落的字组成的,经过几天分析,发现通过在基础词汇分词的基础上,再组合分词会巨大的提高新词发现率,词语发现准确率,完整词汇发现率。

在基础分词后,组合分词算法如下:


func RelaToWordList(rela map[string]*WordRelaInfo) (relawordls []string) {
    for w1, rela1 := range rela {
        if w1 == "的" || w1 == "是" || w1 == "了" {
            w1 = ""
        }
        for w2, rela2 := range rela1.next {
            bshow3 := false
            maxcnt3 := 0
            for w3, rela3 := range rela2.next {
                bshow4 := false
                maxcnt4 := 0
                for w4, rela4 := range rela3.next {
                    bshow5 := false
                    maxcnt5 := 0
                    for w5, rela5 := range rela4.next {
                        if rela5.cnt > 1 {
                            relawordls = append(relawordls, w1+w2+w3+w4+w5)
                            bshow5 = true
                            if rela5.cnt > maxcnt4 {
                                maxcnt5 = rela5.cnt
                            }
                        }
                    }
                    if bshow5 == false /*|| rela4.cnt > maxcnt5*/ {
                        if rela4.cnt > 1 {
                            relawordls = append(relawordls, w1+w2+w3+w4)
                            bshow4 = true
                            if rela4.cnt > maxcnt4 {
                                maxcnt4 = rela4.cnt
                            }
                        }
                    }
                    if maxcnt5 > maxcnt4 {
                        maxcnt4 = maxcnt5
                    }
                }
                if bshow4 == false /*|| rela3.cnt > maxcnt4*/ {
                    if rela3.cnt > 1 {
                        relawordls = append(relawordls, w1+w2+w3)
                        bshow3 = true
                    }
                }
                if maxcnt4 > maxcnt3 {
                    maxcnt3 = maxcnt4
                }
            }
            if bshow3 == false /*|| rela2.cnt > maxcnt3*/ {
                if rela2.cnt > 1 {
                    if w1 != "" {
                        relawordls = append(relawordls, w1+w2)
                    }
                }
            }
        }
    }
    return relawordls
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值