切词和飘红长度

(一)jieba切词

切词

  • 三种模式:
    1) 精确模式:试图将句子最精确地切开,适合文本分析;
    2)全模式:把句子中所有的可以成词的词语都扫描出来;
    3)搜索引擎模式:在精确模式基础上,对长词再次切分,提高召回率。
  • 用法:
    seg_list = jieba.cut(s, cut_all=True)#全模式
    seg_list = jieba.cut(s, cut_all=False)#精确模式
    jieba.lcut
    jibe.lcut_for_search

自定义词典

  • 语料库,dict.txt里录入了两万多条词。
  • 虽然 jieba 有新词识别能力,但自行添加新词可以保证更高的正确率
  • 用法:
    jieba.load_userdict(file_name) # file_name
    词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频、词性,用空格隔开。
    词频省略时使用自动计算能保证分出该词的词频。

算法

  • trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。一个节点的所有子孙都有相同的前缀,根节点对应空字符串,值是词频。
  • 基于统计词典,构造一个前缀词典;然后利用前缀词典对输入句子进行切分,得到所有的切分可能,根据切分位置,构造一个有向无环图;通过动态规划算法(从后往前,有向无环图从前指向后,对于一个节点,只知道这个节点会指向后面哪些节点,但是我们很难直接知道有哪些前面的节点会指向这个节点)计算得到最大概率路径,也就得到了最终的切分形式。
  • 对于未登录词,利用隐马尔可夫模型进行分词,将分词问题视为一个序列标注问题,其中,句子为观测序列,分词结果为状态序列,有{B、M、E、S}四种状态,分别表示{开始、中间、结束、单个}。首先通过语料训练出隐马尔可夫模型,然后利用Viterbi算法进行求解,最终得到最优的状态序列,然后再根据状态序列,输出分词结果。(齐次马尔科夫性假设,观测独立性假设)

为什么要切词

  • 词是最小的有意义的语言成分,英文单词之间有空格,而汉语以字为基本单位,词语之间没有明显的区分。飘红长度计算的时候是关键词在title中才飘红,而不是一个字在title中就飘红。

(二)飘红

把query进行切词,然后对于每个词,如果这个词在title中,飘红长度就加上这个词的长度,如果这个词在describe中,标红长度加上这个词长度*0.6。

    def s_longest_common_string_uncontinue2(self, dependlist):
        if len(dependlist) != 2:
            return -1
        sentence1 = urllib.unquote(dependlist[0].strip())
        sentence2 = urllib.unquote(dependlist[1].strip())

        if len(sentence1) == 0 or len(sentence2) == 0:
            return -1
        if sentence1 == "\N" or sentence2 == "\N":
            return -1

        wordlist1 = self.str2word(sentence1)[0]
        word1_num = len(wordlist1)
        word1_len = len(sentence1)
        if word1_num == 0:
            return 0

        term_len = 0
        for ele in wordlist1:
            if ele in sentence2:
                term_len += len(ele)
        return term_len
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值