- 浏览: 495341 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (211)
- Flex (4)
- Java (22)
- Servlet (4)
- 学习心得 (2)
- 生活琐事 (3)
- PHP (0)
- JavaScript (4)
- Linux (3)
- MYSQL (0)
- SQL SERVER (2)
- ORACLE (5)
- 项目技术积累 (0)
- 设计模式 (0)
- Photoshop (0)
- 网页制作 (8)
- 值得记住 (3)
- Struts1.x (7)
- Hibernate (31)
- IDE (10)
- Spring (5)
- EXT (0)
- Junit (4)
- dom4j (2)
- Log4j (3)
- Java标注 (1)
- WebService (1)
- JSON (2)
- Struts2,x (19)
- Ajax (6)
- 英文 (1)
最新评论
-
aduo_vip:
支持博主,好文!正好需要了
java怎样读写和修改XML文件?? -
默默pig:
楼主,您好。有个语法想问一下:引用你原文中“<resul ...
Struts2中redirect基本的经验之谈 -
Andrew0721:
road_16 写道楼主你好,你说到
redirect:act ...
Struts2中redirect基本的经验之谈 -
zhengkunsheng:
Struts2中redirect基本的经验之谈 -
road_16:
楼主你好,你说到
redirect:action处理完后重定向 ...
Struts2中redirect基本的经验之谈
面对浩瀚的信息海洋,找到想要的资源有时真的是不容易。在大量文字中搜索高频词汇是信息搜索和数据压缩的共通课题。
这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语(由N个单词组成)。统一处理相同的文本文件,该文本只包含英文单词、空格和回行符,比较谁的程序效率最高。
程序输入:M,N,文本文件路径(M不超过20,N不超过8)
程序输出:高频短语及其数量清单
擂台规则:提交符合以上要求的可执行程序,语言招式不限,点到为止;
我们将在统一的环境下对每位选手的作品进行公平的测试,
比较出综合用时最少的程序。
源程序
import java.util.*;
class tt
{
public String phrase;
public int count;
}
public class searchphrase
{
private static LinkedHashMap phrase = new LinkedHashMap();
static tt[] max_phrase;
private static Vector SeparateString(String s)
{
Vector v = new Vector();
String temp = "";
for (int i = 0; i < s.length(); i++)
{
if (s.charAt(i) != ' ')
{
temp += s.charAt(i);
}
else
{
if (temp != "")
v.add(temp);
temp = "";
}
}
if (temp != "")
v.add(temp);
return v;
}
private static void swap(int pos, int count, String phrase)
{
int i;
if (max_phrase[pos - 1].count < count)
{
for (i = pos - 1; i > 0; i--)
{
if (max_phrase[i - 1].count > max_phrase[i].count)
break;
}
max_phrase[pos].count = max_phrase[i].count;
max_phrase[pos].phrase = max_phrase[i].phrase;
max_phrase[i].count = count;
max_phrase[i].phrase = phrase;
}
}
private static void adjust_max(int count, String phrase)
{
int i, j;
if (count <= max_phrase[max_phrase.length - 1].count)
return;
for (i = max_phrase.length - 1; i >= 0; i--)
{
if (max_phrase[i].phrase.equals(phrase))
{
max_phrase[i].count = count;
if (i > 0)
{
swap(i, count, phrase);
}
return;
}
}
max_phrase[max_phrase.length - 1].count = count;
max_phrase[max_phrase.length - 1].phrase = phrase;
if (i > 0)
{
swap(max_phrase.length - 1, count, phrase);
}
}
private static void js(Vector v, int n)
{
String s;
for (int i = 0; i < v.size() - n + 1; i++)
{
s = "";
for (int j = i; j < i + n; j++)
{
s += v.get(j) + " ";
}
int count = 1;
if (phrase.containsKey(s.hashCode()))
{
count = Integer.parseInt(phrase.get(s.hashCode()).toString());
count++;
}
phrase.put(s.hashCode(), count);
adjust_max(count, s);
}
}
public static void main(String[] args)
{
try
{
long t;
int m, n;
String path;
m = Integer.parseInt(args[0]);
n = Integer.parseInt(args[1]);
path = args[2];
max_phrase = new tt[m];
for (int i = 0; i < m; i++)
{
max_phrase[i] = new tt();
max_phrase[i].count = 0;
max_phrase[i].phrase = "";
}
t = (new java.util.Date()).getTime();
java.io.FileReader fr = new java.io.FileReader(path);
java.io.BufferedReader br = new BufferedReader(fr);
String s;
Vector v = null;
while ((s = br.readLine()) != null)
{
v = SeparateString(s);
js(v, n);
}
for (int i = 0; i < m; i++)
{
System.out.println(max_phrase[i].phrase);
System.out.println(max_phrase[i].count);
System.out.println();
}
t = (new java.util.Date()).getTime() - t;
System.out.print(t);
System.out.println(" ms");
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
测试结果1:m = 20 n = 8
under games played won drawn lost goals for
71
tabulated under games played won drawn lost goals
70
games played won drawn lost goals for against
70
May Xinhua Following are the results from the
69
played won drawn lost goals for against and
59
won drawn lost goals for against and points
59
Jan Xinhua Following are the results from the
48
Chinas economic efficiency indicators of the sector of
39
The industrial statistics include all stateowned enterprises and
39
industrial statistics include all stateowned enterprises and the
39
statistics include all stateowned enterprises and the nonstateowned
39
include all stateowned enterprises and the nonstateowned ones
39
all stateowned enterprises and the nonstateowned ones with
39
stateowned enterprises and the nonstateowned ones with annual
39
enterprises and the nonstateowned ones with annual sales
39
and the nonstateowned ones with annual sales income
39
Xinhua Chinas economic efficiency indicators of the sector
39
the nonstateowned ones with annual sales income over
39
nonstateowned ones with annual sales income over million
39
up percent over the same period last year
35
13594 ms
测试结果2 m = 10 n = 5
Xinhua Following are the results
295
May Xinhua Following are the
209
Following are the results from
183
are the results from the
176
April Xinhua Following are the
141
Jan Xinhua Following are the
122
billion yuan billion US dollars
120
won drawn lost goals for
88
played won drawn lost goals
88
Dec Xinhua Following are the
87
12437 ms
以上源程序是采用的是最简单的方法,谁有更好,效率更高的方法,请跟贴!!
发表评论
-
浅析Java抽象类和接口的比较
2012-10-23 14:26 1114抽象类(abstract class) ... -
java序列化(Serializable)
2009-10-15 00:05 1499序列化机制只保存对象的类型信息,属性的类型信息和属性值,和方法 ... -
Java Serializable(序列化)的理解和总结
2009-10-13 09:05 11241、序列化是干什么的? 简单说就是为了保存在内存中 ... -
java怎样读写和修改XML文件??
2009-10-10 16:37 15059xml: <?xml version="1. ... -
Java时间格式转换大全
2009-10-10 13:39 1475import java.text.*; import jav ... -
JAVA提高教程(6)-认识List列表
2009-10-10 00:34 1339列表是很常用的数据结构,感觉比Map和Set用的频率要高一些吧 ... -
Java 中 Vector、ArrayList、List 使用深入剖析
2009-10-10 00:29 808线性表,链表,哈希表 ... -
JAVA LIST 遍历
2009-10-09 17:02 2752对List的遍历有三种方式 List< ... -
读取Properties文件的几种方法
2009-09-08 14:08 9351. 使用java.util.Properties类的load ... -
java正则表达式
2009-09-08 08:52 1131Java正则表达式学习: ... -
如何打包jar
2009-09-07 14:32 1652jar cvf my.jar helloword.class将 ... -
(JAVA)IP地址相关的工具类 IPUtil
2009-09-07 11:21 3247import java.net.*; /** * IP ... -
java反射应用对BEAN的操作,写通用类、标签时有用
2009-09-07 11:17 1551import java.lang.reflect.Field; ... -
Java字符串通用类
2009-09-07 11:15 1985import java.util.regex.Matcher; ... -
一个关于日期,数字,字符格式化的常用工具类
2009-09-07 11:13 1834import java.text.SimpleDateForm ... -
Java 通用异常处理类
2009-09-07 10:32 1400/** * (#)ThrowableManager.jav ... -
优化的 JAVA 数据库连接通用类
2009-09-07 10:14 3851之前我曾经放出过一个通用的数据库连接DAO。但是其也有一定的局 ... -
验证码的java通用类
2009-09-07 10:09 997在应用程序中为防止系 ... -
java实现发送电子邮件功能
2009-09-07 09:14 1519在开发中经常要给用户自动的发送电子邮件,今天在网上搜了一个发送 ... -
Java多线程初学者指南:为什么要进行数据同步
2009-09-07 08:34 1034Java中的变量分为两类:局部变量和类变量。局部变量是指在方法 ...
相关推荐
这个“TextRank, TextRank算法提取关键词的Java实现.zip”压缩包文件包含了一个开源项目,名为“TextRank-master”,它提供了一种Java实现来提取文本中的关键词。 TextRank算法的核心思想是模拟PageRank在文本处理...
使用Java实现关键词提取通常包括以下步骤: - 文本预处理:清洗文本(去除标点、数字、特殊字符),分词。 - 应用算法:如TF-IDF或TextRank计算关键词得分。 - 后处理:按照得分排序,选择前n个关键词输出。 6....
词云是一种数据可视化工具,它以图形方式展示文本中的高频词汇,使得用户能够快速识别和理解大量文本数据的主题。在本项目中,开发者可以输入字体文件或文档,程序会自动分析并以艺术化的形式展示关键词。 **1. ...
总的来说,Java实现最大熵模型涉及文本处理、特征提取、模型训练和应用等多个环节,对于理解和掌握自然语言处理的机器学习技术具有重要意义。通过实践,开发者可以深入理解模型的工作原理,并将其应用于实际项目中,...
虽然原生的Gensim是用Python编写的,但通过Jython(Python的Java实现)或其他Java调用Python库的方法,可以在Java项目中使用Gensim的DOC2Vec功能。 **步骤详解** 1. **数据预处理**:首先,你需要对输入的文本进行...
HanLP的核心是基于统计的分词模型,它能够将输入的中文句子切分成一个个词汇单元。在Java中,我们可以创建一个HanLP实例,然后调用其提供的分词方法,将网络片段作为输入进行处理。例如: ```java import ...
Java实现TextRank可以参考GATE(General Architecture for Text Engineering)或者自行构建基于图算法的解决方案。 3. **LSA**:这是一种基于矩阵分解的方法,通过SVD(奇异值分解)来揭示隐藏在文本数据中的主题...
《基于贝叶斯分类器的垃圾邮件识别:C与Java实现》 在信息技术领域,垃圾邮件过滤是一项重要的任务,它关系到用户的信息安全和工作效率。本文将深入探讨如何利用贝叶斯分类器来构建一个垃圾邮件分类器,分别介绍...
NLPIR接口可以方便地进行词频统计,帮助开发者快速获取高频词汇,这对于关键词提取和文本摘要具有重要意义。 再者,**词性标注**是自然语言处理中的另一个关键步骤。词性标注是给每个词标记其在句子中的语法角色,...
文本关键字提取是自然语言处理(NLP)领域中的一个重要任务,其主要目的是从大量文本数据中识别出最具代表性和核心意义的词汇或短语。这些关键词可以概括文本的主题,为信息检索、文档分类、情感分析等应用提供关键...
JAVA的正则表达式库可以用于识别关键词,而分词器(如IK Analyzer、HanLP)则可以将中文文本分解为单个词汇。 4. **检索**:最后,搜索引擎会根据索引和查询返回相关结果。这涉及到匹配算法,如BM25、TF-IDF等,...
在这一背景下,本文深入探讨了基于Java实现全文检索的方法及其性能优化策略。 #### 一、全文检索系统的机制 全文检索系统是一种根据全文检索理论构建的软件系统,旨在提供高效的全文检索服务。该系统主要包括索引...
对于初学者来说,这个Java实现可以提供以下学习机会: 1. **理解LDA原理**:通过阅读源代码,可以深入理解LDA的数学基础和算法流程。 2. **实践编程技巧**:学习如何在Java环境下处理文本数据和构建复杂的数据结构...
下面我们将详细探讨Java实现搜索引擎涉及的关键知识点。 首先,搜索引擎的核心部分包括**信息采集**、**索引构建**和**查询处理**三个主要阶段。 1. **信息采集**:这是搜索引擎工作的第一步,涉及到网络爬虫(Web...
在这个Java实现中,我们将深入理解如何利用朴素贝叶斯进行新闻分类,并探讨相关的核心概念和技术。 首先,我们要知道朴素贝叶斯分类器的工作原理。它基于贝叶斯定理,该定理描述了给定一些特征的情况下,一个事件...
【CMS核心标签提取】是关于内容管理系统(CMS)中一种重要的功能,用于高效地管理和组织网站内容。在本文中,我们将深入探讨CMS标签提取的方法及其重要性,以便于更好地理解和应用这一技术。 首先,理解什么是CMS...
### Java 英语词汇表详解 #### Abstract Window Toolkit (AWT) **中文名称:抽象窗口工具包** **概念解析:** AWT 是 Java 中用于构建图形用户界面 (GUI) 的一组类。它允许开发者创建标准的窗口、按钮、菜单等 GUI ...
### Java学习之英文词汇知识点详解 #### 一、计算机基础词汇 (Computer-based Vocabulary) 1. **Mouse**: 鼠标,用于控制计算机屏幕上光标的移动。 2. **Chinese**: 中文,指中国的语言或文字。 3. **English**: ...
在Java实现中,"DocumentSimilarity"可能包含以下关键类和方法: - `TermExtractor`:用于进行术语提取。 - `VocabularyBuilder`:构建词汇表。 - `DocumentVectorizer`:将文档转化为向量。 - `...
在Java中实现CNN进行自然语言情感化分析,通常会涉及以下关键步骤: 1. **数据预处理**:首先,你需要将文本数据转化为机器可理解的形式。这可能包括分词、去除停用词、词干提取等。对于情感分析,你还需要将每个...