转载自:http://blog.csdn.net/samule704/article/details/5118425

近期刚刚开始进入 SE 的领域,觉得这里面确实有很多值得研究的东西,从 网络爬虫 到 网页信息的抽取 再到 文本关键词的提取 以及用户检索(个性化SE) 等等 包罗万象。

下午玩完,先来无事,再次浏览了一下  蛙蛙池塘 的博客,觉得里面的对关键词的提取算法还不错,所以个人又在上午实验的基础上,完善了下这部分。

对于该部分,蛙蛙池塘 的实现我觉得有一点是不合理的(个人意见):对于词频的统计应该是该词在该类中所出现的所有次数(如:在某一类(1,2,4)中,单词A在1中出现的次数是3次, 在4中出现的次数是1次, 在 2中出现了 0次, 那么单词A的词频应该是 3+1+0 =4 , 而不是 1+1+0=2 )

输入数据是:

测试输入如下
================================
a 奥运 拳击 入场券 基本 分罄 邹市明 夺冠 对手 浮出 水面
a 股民 要 清楚 自己 的 目的
a 印花税 之 股民 四季
a ASP.NET 自定义 控件 复杂 属性 声明 持久性 浅析
a 运动员 行李 将 “后 上 先 下” 奥运 相关 人员 行李 实名制
a asp.net 控件 开发 显示 控件 内容
a 奥运 票务 网上 成功 订票 后 应 及时 到 银行 代售 网点 付款
a 某 心理 健康 站 开张 后 首 个 咨询 者 是 位 新 股民
a 残疾 女 青年 入围 奥运 游泳 比赛 创 奥运 历史 两 项 第一
a 介绍 一 个 ASP.net MVC 系列 教程
a 在 asp.net 中 实现 观察者 模式 ,或 有 更 好 的 方法 (续)
a 输 大钱 的 股民 给 我们 启迪
a Asp.Net 页面 执行 流程 分析
a 杭州 股民 放 鞭炮 庆祝 印花税 下调 
================================

具体的Java实现如下:  只列举了 GetKeyword的实现

public List<String> GetKeyword(List<Integer> arr, int count) {
  // 1、给每个文档分词并保存在一个列表里
  List<String> allWords = new ArrayList<String>();
  for (int i = 0; i < arr.size(); i++) {
   // 这里把一个文档里出现的多个词进行消重
   List s1 = this._tokenizer.Partition(_docs[arr.get(i)]);
   String[] s2 = this.GetDistinctWords((String[]) s1
     .toArray(new String[s1.size()]));
   for (int i1 = 0; i1 < s2.length; i1++)
    allWords.add(s2[i1]);
  }
  // 2、用一个字典保存词的词频,key是词,value是重复次数
  Map.Entry[] tfDict = SortByDuplicateCount(allWords);

// 3、遍历已排序的词频字典,并获取每个词的IDF值,并把更新后的结果放入一个tfidfDict词典
  // 该词典的key是词,value是tfidf值
  Map<String, Float> tfidfDict = new HashMap<String, Float>();

for (int i = 0; i < tfDict.length; i++) {
   int termt = (Integer) tfDict[i].getValue();
   String term = (String) tfDict[i].getKey();
   {
    int index = this._wordsIndex.get(term);
    float idf = GetInverseDocumentFrequency(index);
    // System.out.println(tfDict[i].getKey()+" 词频:"+ termt
    // +"文档频率:"+idf+" "+termt * idf);
    tfidfDict.put(term, termt * idf);
   }
  }

// 4、给tfidf字典俺权重排序
  Map.Entry[] tfidfDictSet = SortMap.getSortedHashtableByValue(tfidfDict);// GetSortByValueDict(tfidfDict);

// 5、更新要提取的关键词数量
  int keywordCount = count;
  if (keywordCount > tfidfDict.size())
   keywordCount = tfidfDict.size();

// 6、用一个数组保存tfidf字典的keys,这些key已排序
  // String[] keywordArr = new String[tfidfDict.size()];
  // tfidfDict.Keys.CopyTo(keywordArr,0);
  // Set keySet = tfidfDict.keySet();

// 7、在关键词数组里取出前几个关键词返回给调用者
  List<String> result = new ArrayList<String>(keywordCount);
  int tempCount = 0;

for (int i = 0; i < tfidfDictSet.length; i++) {
   tempCount++;
   result.add((String) tfidfDictSet[i].getKey());
   if (tempCount >= keywordCount)
    break;
  }
  return result;
 }

输出数据:

Iteration 0...
Iteration 1...
Iteration 2...
-----------------
0  聚类成员是 :[3, 5, 9, 10, 11]

a ASP.NET 自定义 控件 复杂 属性 声明 持久性 浅析
a asp.net 控件 开发 显示 控件 内容
a 介绍 一 个 ASP.net MVC 系列 教程
a 在 asp.net 中 实现 观察者 模式 ,或 有 更 好 的 方法 (续)
a 输 大钱 的 股民 给 我们 启迪
-------------asp.net  控件  ---
-----------------
1  聚类成员是 :[0, 4, 6, 8]

a 奥运 拳击 入场券 基本 分罄 邹市明 夺冠 对手 浮出 水面
a 运动员 行李 将 “后 上 先 下” 奥运 相关 人员 行李 实名制
a 奥运 票务 网上 成功 订票 后 应 及时 到 银行 代售 网点 付款
a 残疾 女 青年 入围 奥运 游泳 比赛 创 奥运 历史 两 项 第一  拳击
-------------奥运  拳击  ---
-----------------
2  聚类成员是 :[1, 2, 7, 12, 13]

a 股民 要 清楚 自己 的 目的
a 印花税 之 股民 四季
a 某 心理 健康 站 开张 后 首 个 咨询 者 是 位 新 股民
a Asp.Net 页面 执行 流程 分析
a 杭州 股民 放 鞭炮 庆祝 印花税 下调 
-------------股民  印花税  ---

文本关键词的提取算法实验相关推荐

  1. 文本关键词的提取算法实验[又是转的]

    近期刚刚开始进入 SE 的领域,觉得这里面确实有很多值得研究的东西,从 网络爬虫 到 网页信息的抽取 再到 文本关键词的提取 以及用户检索(个性化SE) 等等 包罗万象. 下午玩完,先来无事,再次浏览 ...

  2. java 文本分析 关键词提取_文本关键词提取算法总结

    1.TF-IDF 昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类.我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的 ...

  3. 文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算

    文本分类和提取关键词算法 背景 Web应用程序变得越来越智能. 从网站上使用服务的日子已经一去不复返了,用户不得不填写一个巨大的表格. 假设您有一个适合书迷的网站. 在Web 2.0之前,像这样的网站 ...

  4. 如何做好文本关键词提取?从三种算法说起

    在自然语言处理领域,处理海量的文本文件最关键的是要把用户最关心的问题提取出来.而无论是对于长文本还是短文本,往往可以通过几个关键词窥探整个文本的主题思想.与此同时,不管是基于文本的推荐还是基于文本的搜 ...

  5. python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...

    TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...

  6. python 英文关键词提取_python TF-IDF算法实现文本关键词提取

    TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...

  7. 基于TextRank的关键词提取算法

    基于TextRank的关键词提取算法 前沿 TextRank是一种文本排序算法,是基于著名的网页排序算法PageRank改动而来.在介绍TextRank前,我们先简单介绍下什么是PageRank.另外 ...

  8. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  9. NLP实战 文本关键词提取

    +是加法.行尾的\在下一行继续当前语句或表达式,即续行. 实战项目简介 文本关键词提取,顾名思义,关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征.信息检索.系统汇集以供读者检阅. ...

最新文章

  1. hql中常用函數介紹二
  2. TDI Filter 过滤驱动
  3. 剑指offer之61-66题解
  4. JavaFX技巧1:可调整大小的Canvas
  5. java中给组合框加监听器,如何区分ActionEvent中的多个组合框
  6. opencv矩阵掩膜操作(提高图片对比度)
  7. python pep8_Python 代码风格 和 PEP8
  8. Java--基础命名空间
  9. 上海项目危机经历与感想
  10. centos os u盘启动盘_怎么制作linux系统安装盘,U盘启动盘
  11. js实现图片加载中效果 loading
  12. OpenCV入门教程
  13. Tensorflow-(4)使用Tensorflow加载csv,pandas dataframes,图像,文本文件
  14. 网页资源下载 -- 水浒传全集
  15. Mac新手需掌握的操作技巧——屏幕篇
  16. 安规电容与普通电容的区别
  17. url 后面参数说明
  18. SharpDevelop安装与配置
  19. win7计算机自动关机设置在哪里设置方法,win7自动关机命令是什么 怎么设置
  20. 力扣OJ 剑指 Offer(1-30)

热门文章

  1. 「应用安全」应用安全原则
  2. Spring MVC+Spring+Mybatis
  3. php 匹配多个正则表达式,php – 正则表达式匹配无限数量的选项
  4. Vue组件嵌套时生命周期函数触发顺序是什么?
  5. MASM32编程获取任务栏高度
  6. python成都 培训
  7. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
  8. CrossBar 将 PUF 技术引入 ReRAM
  9. 计算机桌面图标有双影,win7旗舰版桌面图标出现重影怎么办 win7旗舰版桌面图标没有了如何恢复...
  10. DataGridView 基本用法及注意事项