python提取内容关键词的方法


Posted in Python onMarch 16, 2015

本文实例讲述了python提取内容关键词的方法。分享给大家供大家参考。具体分析如下:

一个非常高效的提取内容关键词的python代码,这段代码只能用于英文文章内容,中文因为要分词,这段代码就无能为力了,不过要加上分词功能,效果和英文是一样的。

# coding=UTF-8

import nltk

from nltk.corpus import brown

# This is a fast and simple noun phrase extractor (based on NLTK)

# Feel free to use it, just keep a link back to this post

# http://thetokenizer.com/2013/05/09/efficient-way-to-extract-the-main-topics-of-a-sentence/

# Create by Shlomi Babluki

# May, 2013

  

# This is our fast Part of Speech tagger

#############################################################################

brown_train = brown.tagged_sents(categories='news')

regexp_tagger = nltk.RegexpTagger(

    [(r'^-?[0-9]+(.[0-9]+)?$', 'CD'),

     (r'(-|:|;)$', ':'),

     (r'\'*$', 'MD'),

     (r'(The|the|A|a|An|an)$', 'AT'),

     (r'.*able$', 'JJ'),

     (r'^[A-Z].*$', 'NNP'),

     (r'.*ness$', 'NN'),

     (r'.*ly$', 'RB'),

     (r'.*s$', 'NNS'),

     (r'.*ing$', 'VBG'),

     (r'.*ed$', 'VBD'),

     (r'.*', 'NN')

])

unigram_tagger = nltk.UnigramTagger(brown_train, backoff=regexp_tagger)

bigram_tagger = nltk.BigramTagger(brown_train, backoff=unigram_tagger)

#############################################################################

# This is our semi-CFG; Extend it according to your own needs

#############################################################################

cfg = {}

cfg["NNP+NNP"] = "NNP"

cfg["NN+NN"] = "NNI"

cfg["NNI+NN"] = "NNI"

cfg["JJ+JJ"] = "JJ"

cfg["JJ+NN"] = "NNI"

#############################################################################

class NPExtractor(object):

    def __init__(self, sentence):

        self.sentence = sentence

    # Split the sentence into singlw words/tokens

    def tokenize_sentence(self, sentence):

        tokens = nltk.word_tokenize(sentence)

        return tokens

    # Normalize brown corpus' tags ("NN", "NN-PL", "NNS" > "NN")

    def normalize_tags(self, tagged):

        n_tagged = []

        for t in tagged:

            if t[1] == "NP-TL" or t[1] == "NP":

                n_tagged.append((t[0], "NNP"))

                continue

            if t[1].endswith("-TL"):

                n_tagged.append((t[0], t[1][:-3]))

                continue

            if t[1].endswith("S"):

                n_tagged.append((t[0], t[1][:-1]))

                continue

            n_tagged.append((t[0], t[1]))

        return n_tagged

    # Extract the main topics from the sentence

    def extract(self):

        tokens = self.tokenize_sentence(self.sentence)

        tags = self.normalize_tags(bigram_tagger.tag(tokens))

        merge = True

        while merge:

            merge = False

            for x in range(0, len(tags) - 1):

                t1 = tags[x]

                t2 = tags[x + 1]

                key = "%s+%s" % (t1[1], t2[1])

                value = cfg.get(key, '')

                if value:

                    merge = True

                    tags.pop(x)

                    tags.pop(x)

                    match = "%s %s" % (t1[0], t2[0])

                    pos = value

                    tags.insert(x, (match, pos))

                    break

        matches = []

        for t in tags:

            if t[1] == "NNP" or t[1] == "NNI":

            #if t[1] == "NNP" or t[1] == "NNI" or t[1] == "NN":

                matches.append(t[0])

        return matches

# Main method, just run "python np_extractor.py"

def main():

    sentence = "Swayy is a beautiful new dashboard for discovering and curating online content."

    np_extractor = NPExtractor(sentence)

    result = np_extractor.extract()

    print "This sentence is about: %s" % ", ".join(result)

if __name__ == '__main__':

    main()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python 学习笔记
Dec 27 Python
使用Python中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
python读写csv文件实例代码
Jul 05 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
python3实现高效的端口扫描
Aug 31 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
python 6种方法实现单例模式
Dec 15 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 Python
python生成随机mac地址的方法
Mar 16 #Python
python通过线程实现定时器timer的方法
Mar 16 #Python
python每隔N秒运行指定函数的方法
Mar 16 #Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 #Python
Python标准库urllib2的一些使用细节总结
Mar 16 #Python
python实现查询苹果手机维修进度
Mar 16 #Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 #Python
You might like
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python微信公众号之关键词自动回复
2018/06/15 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python ATM功能实现代码实例
2020/03/19 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
售后服务承诺书范文
2014/03/26 职场文书
大学生创业事迹材料
2014/12/30 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
工作态度检讨书范文
2015/05/06 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
MySQL分库分表详情
2021/09/25 MySQL
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技