python关键词提取库_「关键词」提取都有哪些方案?

我们所说的关键词通常由一个或多个 term 组成,即可以是分词后的 term,如“鲜花”、“快递”,也可以是多个 term 组成的 phrase,如“鲜花快递”、“鲜花快递公司”,英文常见叫法是 keyword,keyphrase。

至于什么是关键词呢?至少必须满足两个关键条件:边界合法和有行业区分度。甚至还可以结合具体应用场景增加限制条件,如在计算广告中,还要考虑商业价值。

我们的做法是分两步走:候选词匹配:基于关键词词库的多模式匹配得到候选,这里最重要的工作是词库构建,往往会融合多种方法:垂直站点专有名词,百科词条,输入法细胞词库,广告主购买词,基于大规模语料库的自动词库挖掘(推荐韩家炜团队的 shangjingbo1226/SegPhrase ,shangjingbo1226/AutoPhrase 方法)等。这里会涉及大量的数据清洗工作,甚至还可以有一个质量分类器决定哪些词条可以进入词库。

候选词相关性排序:包括无监督和有监督方法,如下:无监督方法:常见的有 TFIDF(需要统计 phrase 级别的 DF), textrank(优势不明显,计算量大,慎用),topic 相似度(参见 baidu/Familia),embedding 相似度(需要训练或计算 keyword 和 doc embedding),TWE 相似度(参见 baidu/Familia)

有监督方法:常见的有基于统计机器翻译 SMT 的方法(转换成翻译问题,可以采用 IBM Model 1),基于序列标注模型的方法(转换成核心成分识别问题,类似 NER,状态只有0和1,即是否是核心成分,较适用于短文本),基于排序学习LTR的方法(转换成候选词排序问题,采用 pairwise 方法,或者深度语义匹配方法,如 DSSM),基于传统机器学习分类方法(转换成二元或多元分类问题)。

有监督方法依赖一定规模的标注数据,效果通常会显著好于无监督方法。

上面的方法仅能抽取文本字面出现的词,会有 Vocabuary Gap 问题,大部分情况下是足够的,还有一种做法可以基于生成模型的方法,自动“抽取”生成一些字面上未出现的词条,如 ACL 2017 Deep Keyphrase Generation(http://memray.me/uploads/acl17-keyphrase-generation.pdf ,memray/seq2seq-keyphrase)。另外,也可以考虑基于字面抽取的 keyword,扩展出一些语义相似的词条作为候选词,通过打分排序选出合适的保留下来。

特别的,对于一些存在规律性描述模式的特殊类型文本,如 query log,还可以采用基于 bootstrapping 的软模式匹配方法,通常准确率很高,召回率一般。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值