近期刚刚开始进入 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 杭州 股民 放 鞭炮 庆祝 印花税 下调
-------------股民  印花税  ---

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Samule704/archive/2010/01/01/5118425.aspx

文本关键词的提取算法实验[又是转的]相关推荐

  1. 文本关键词的提取算法实验

    转载自:http://blog.csdn.net/samule704/article/details/5118425 近期刚刚开始进入 SE 的领域,觉得这里面确实有很多值得研究的东西,从 网络爬虫 ...

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

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

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

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

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

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

  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. React Native小白入门学习路径——五
  2. STlink下载出现st-link usb communication error解决方法
  3. 阅读《深入理解程序设计使用linux汇编语言》
  4. 过度封装的ZeroMQ
  5. js window.event 对象学习
  6. 找回Kitkat的AppOps
  7. 将桌面文件映射至E盘
  8. 产生斜体的html标签,下列可以产生斜体字的 HTML 标签是_____________
  9. 《Java 7程序设计入门经典》一1.10 另一种数据类型
  10. php序列化后换服务器不能解析,利用php序列化和反序列化的语法差异绕过防护_网站服务器运行维护...
  11. 中鸣机器人编程教程 c 语言,中鸣教育机器人简介.doc
  12. 计算机组成原理学习笔记第1章计算机系统概论 1.1——冯 · 诺依曼结构计算机工作原理及层次结构分析
  13. BootCDN——React入门学习
  14. windows通过资源管理器访问服务器(samba服务),您需要权限来执行此操作
  15. 解决 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task
  16. SharedPreferences和SQlite数据库
  17. kuka机器人焊接编程入门教程_焊接机器人操作编程与应用教学.pptx
  18. 基于51单片机的遥控小车
  19. User’s Guide
  20. centos7—DNS域名系统

热门文章

  1. 图解HTTP-HTTP
  2. 关于产品的一些思考——豌豆荚之应用下载
  3. 夜光:Java语言基础学习笔记(三)在校资源
  4. Crypto one-time-pad
  5. C++中 #if #endif 和#ifdef #endif的用法
  6. Excel教程:数值为0不显示的三种解决方法介绍
  7. ggplot2绘制数据分布crossbar图教程
  8. 个税革新,你每年能省多少钱~
  9. SAP BC ORACLE 12C Cleanup ILM_EXECUTION$, ILM_RESULTS$
  10. Python——域名解析成IP地址