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处理json数据中的中文
Mar 06 Python
python刷投票的脚本实现代码
Nov 08 Python
python文件名和文件路径操作实例
Sep 29 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
python opencv实现图像配准与比较
Feb 09 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
python中的sys模块和os模块
Mar 20 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
php变量范围介绍
2012/10/15 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
Python 基础知识之字符串处理
2017/01/06 Python
python实现BackPropagation算法
2017/12/14 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
Python any()函数的使用方法
2019/10/28 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
最热门的自我评价
2013/12/30 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
文明倡议书
2015/01/19 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书