现在时间是:
当前位置:首 页 >> 数据分析>> 文章列表

NLP 主题抽取(13)

作者:   发布时间:2016-03-23 13:16:56   浏览次数:1552

 主程序:topic_extract.py

  1. [/align]
  2. [align=left]# -*- coding: utf-8 -*-
  3.  
  4. import sys  
  5. import os 
  6. import warnings
  7. from time import time
  8. from sklearn.feature_extraction.text import TfidfVectorizer
  9. from sklearn.decomposition import NMF
  10. from sklearn.datasets import fetch_20newsgroups
  11. from TextPreprocess import TextPreprocess 
  12.  
  13. # 配置utf-8输出环境
  14. reload(sys)
  15. sys.setdefaultencoding('utf-8')
  16. # 忽略警告
  17. warnings.filterwarnings("ignore")
  18.  
  19. n_samples = 2000
  20. n_features = 1000
  21. n_top_words = 20
  22.  
  23.  
  24. # 导入语料集
  25. corpus_set = TextPreprocess()
  26. corpus_set.wordbag_path = "text_corpus1_wordbag/"   #词袋模型路径
  27. corpus_set.trainset_name = "train_set.data"       #词包文件名
  28. corpus_set.stopword_path = "extra_dict/hlt_stop_words.txt" 
  29.  
  30. #从文件导入停用词表
  31. stpwrdlst = corpus_set.getStopword(corpus_set.stopword_path)
  32.  
  33. #从文件导入数据包
  34. corpus_set.load_trainset()
  35. clusters = len(corpus_set.data_set.target_name)
  36.  
  37. print "共",clusters,"种类别:",corpus_set.data_set.target_name
  38.  
  39. for i in range(0,clusters-1):
  40.         findx = corpus_set.data_set.label.index(i)
  41.         counts = corpus_set.data_set.label.count(i)
  42.         lindx = findx+counts-1
  43.         
  44.         vectorizer = TfidfVectorizer(max_df=0.95, min_df=2, max_features=n_features,
  45.                              stop_words=stpwrdlst)
  46.         tfidf = vectorizer.fit_transform(corpus_set.data_set.contents[findx:lindx])
  47.         # Fit the NMF model
  48.         nmf = NMF(n_components=1, random_state=1).fit(tfidf)
  49.         
  50.         feature_names = vectorizer.get_feature_names()
  51.         
  52.         # print "nmf.components_:",len(nmf.components_)
  53.         print("Topic :",corpus_set.data_set.target_name[i])
  54.         print(" ".join([feature_names[i]
  55.                     for i in nmf.components_[0].argsort()[:-n_top_words - 1:-1]]))
  56. [/align]
  57. [align=left]
复制代码


 

执行结果:

 

  1.  
  2. 共 10 种类别: ['automobile', 'computer', 'education', 'entertainment', 'estate', 'finance', 'health', 'personnel', 'sports', 'technology']
  3. ('Topic :', 'automobile')
  4. 汽车 投标 拥车证 新车 车子 价格 人数 新加坡 购买 成价 认为 本地 万元 公司 下跌 人们 福金 驾驶 跑车 公会
  5. ('Topic :', 'computer')
  6. 病毒 手机 公司 微软 电脑 用户 中国 软件 黑客 游戏 市场 网络 服务 3g 推出 技术 视窗 使用 系统 诺基亚
  7. ('Topic :', 'education')
  8. 考试 学生 考生 记者 专业 毕业生 高考 招生 人才 企业 北京 公司 工作 录取 学校 今年 增加 大纲 高校 没有
  9. ('Topic :', 'entertainment')
  10. 电影 观众 音乐 演出 专辑 导演 没有 中国 这部 记者 电视剧 美国 觉得 乐队 作品 不是 已经 故事 人物 张艺谋
  11. ('Topic :', 'estate')
  12. 单位 项目 公寓 平方英尺 组屋 推出 售价 地段 价格 市场 万元 房地产 发展商 地契 今年 平均 位于 私人 洋房 销售
  13. ('Topic :', 'finance')
  14. 汇价 公司 银行 增长 市场 经济 央行 利率 股市 日本 支撑 记者 中国 产品 显示 震荡 贷款 美元 12 位于
  15. ('Topic :', 'health')
  16. 病人 研究 运动 药物 医生 健康 糖尿病 细胞 治疗 问题 肥胖 手术 发现 男性 癌症 关节 一种 生活 显示 可能
  17. ('Topic :', 'personnel')
  18. 员工 企业 工作 公司 简历 管理 人才 部门 本网 人力资源部 培训 问题 管理者 hr 需要 招聘 没有 时间 不是 制度
  19. ('Topic :', 'sports')
  20. 姚明 比赛 球员 nba 球队 分钟 曼联 取得 表现 没有 中国 切尔西 奥尼尔 湖人队 最后 联赛 球迷 利物浦 主场 篮板球
  21.  
复制代码






上一篇:没有了    下一篇:没有了

Copyright ©2018    易一网络科技|www.yeayee.com All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 版权所有 © 2005-2018 lingw.net.粤ICP备16125321号 -5