zoukankan      html  css  js  c++  java
  • HanLP 关键词提取。总结


    原理:

    依托HanLP的核心词典和自定义词典根据TF*IDF算法计算
    每个命名实体和名词短语的得分score,按score倒排返回前面若干个关键词

    解释: TF 称为词频,表示词在一篇文档中出现的频率=词在该文档中出现的次数 / 该文档中单词的总数---TF越大,表示该词对文档越重要
    DF称为文档频率,一个词在多少篇文章中出现过

    本系统用的公式是:比重 k * 关键词在本文出现的次数 t / 词典中的词频 f

    IDF 称为逆文档频率=Ln(总文档数/出现该次的文档数)

    首先解析出标题和正文

    用HanLP的分词器一句词典,初始化内容,生成一个数组 wordList,里面是分好的词,有各自的词性,和各自词在内容中所在的位置 index
    把标题里的词单独分一下,降低词频 f

    关键词:
    先分短语:
    遍历wordList,取每个词的词性和下词词性,可以组合起来的,拼接为一个短语,降低词频f,放到候选关键词数组 parsePhrase 里面
    机构名不做组合
    形容词,名形词,动名词,习用语,简称略语,后跟助词,名词,动词,动名词 且词的长度都大于1 则组合为短语
    动词后跟助词,名词,动名词,则组合短语
    名词后跟助词,名词,动名词,动词,则组合短语
    数词后跟量词,名词,专有名词,或者形容词则组合短语
    其余都不进行组合
    组合短语长度大于8或者构成的某个单词在词库词频超过300,则此短语词频为5
    其余的短语默认词频为3
    再分单词:
    遍历wordlist,取每个单独的词,根据词性,降低或者增加词频。同时判断是否已存在于parsePhrase的某个短语里,避免重复放入 parsePhrase。
    名词,动词,形容词,长度大于2的动名词,习用语,人名,简称略语,从核心词典和扩展词典取,取不到就默认词频为3.或4
    排除单字符 的关键字,去除
    包含有第+数词的,词频增大
    带**讯,**摄等不进行添加

    所以想添加自定义词典的关键词,只需要设定为单词为名词 n,动词 v,形容词 a,长度大于2的动名词 vn,习用语 l,人名 nr,简称略语 j
    在自定义词.txt里 词频 < 3 即可。

    最后算分:

    权重k,根据词性设定的,初始值是1,根据不同的词性 扩大或者缩小

    在本文出现次数t,遍历wordList,有重复则加1即可

    根据公式:比重 k * 关键词在本文出现的次数 t / 词典中的词频 f,算出parsePhrase里各个候选词的分值,排序取前N个关键词,就是要提取的

    摘要:

    思想:句子短,代表性强(特殊性高、分高)

    复用上面的 parsePhrase 。

    根据段落符号 和一些标点符号 识别出标题,首段,尾段,中间的正文,以及是否是带段落编号的文章。

    根据标点符号,把文章分词一个个的句子,包含每个句子的首尾位置(在文章中的前后顺序),所在段落位置(是否首段,尾段等)。
    在这期间处理句子里的特殊字,词,

    证明是至少含有2个段落编号的 正文文本,此时,需要去掉编号。把首段 的分值设置很大,加上标题

    每个句子都分词,从parsePhrase 找出分值想加。得到每个句子的值。

    对句子进行分词,找出每个词在候选关键词 数组里的分数,累加

    同时对于同一句中重复出现的nr 等超过3个,进行降权

    对于句子长度大于50的 进行降权

    首段 FIRST 如果首句 开始位置<10(为了给去掉的记者,某报讯等等留位置)包含很多标题中词汇,
    就加入摘要,其实已经在候选句子里,只不过吧分数加多一些,排名靠前点

    当判定为带编号文章,增加首尾段落的分值权重

    取一些特殊词作为标识,截取后面的特殊符号以后的句子内容作为句子。即去除;[记者:***] 等句子内容

    等等逻辑处理完后,得到一个句子数组。先按分值大小排序

    提取思想:找分高的几个句子,其总字数加起来刚刚大于要提取的摘要字数 length

    length 和200有个对比
    当文章字数 size <200:
    当length > size 提取全文
    当length < size 提取length字数的句子
    当size >200
    当length > 200 提取200字数的句子
    当length < 200 提取length字数句子

    提取后的句子,按照在文中出现的先后顺序,排序。

    记录一下。

  • 相关阅读:
    EntityFramework6.X 之Relationship
    EntityFramework6.X 之Inheritance Stategy
    EntityFramework6.X 之 Fulent
    EntityFramework6.X之DataAnnotations
    EntityFramework6.X 之 Database Initialization
    EntityFramework6.X 之DbContex
    EntityFramework6.X 之LocalDB&ConnectionString
    EntityFramework6.X之概述
    C提高_day03_玩转多级指针
    C提高_day03_二级指针内存示意图(没有比这重要的了)
  • 原文地址:https://www.cnblogs.com/justtodo/p/11326737.html
Copyright © 2011-2022 走看看