用Java输出高频词_高频词汇提取的Java实现
本文为原创,如需转载,请注明作者和出处,谢谢!
面对浩瀚的信息海洋,找到想要的资源有时真的是不容易。在大量文字中搜索高频词汇是信息搜索和数据压缩的共通课题。
这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语(由N个单词组成)。统一处理相同的文本文件,该文本只包含英文单词、空格和回行符,比较谁的程序效率最高。
程序输入:M,N,文本文件路径(M不超过20,N不超过8)
程序输出:高频短语及其数量清单
擂台规则:提交符合以上要求的可执行程序,语言招式不限,点到为止;
我们将在统一的环境下对每位选手的作品进行公平的测试,
比较出综合用时最少的程序。
源程序
import
java.io.
*
;
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输出高频词_高频词汇提取的Java实现相关推荐
- python如何分析高频词_利用Python统计演讲高频词
1月9日被誉为中国最牛的产品经理张小龙做了微信的年度演讲[1],引爆朋友圈. 1月10日采铜写了篇<张小龙四个小时的演讲没有讲什么?>[2],又引爆朋友圈.在现在几乎所有人张口就谈&quo ...
- 英语自动提取高频词_斑马英语提分营免费体验课
斑马英语电脑版是一款专业可靠的英语学习软件,斑马英语官方版可以帮助孩子学习纯正的英语口语发音,以讲故事的形式让孩子学习单词及口语练习,斑马英语电脑版针对儿童语言特征设计的智能口语测评系统,能够自动识别 ...
- excel如何找到高频词_拟录取后:应届生和往届生档案哪里找;重灾院校区;高频词背诵表...
今日消息1.应届生和往届生档案哪里找?2.重灾院校区3.考研云督学班高频词背诵表汇总1.应届生和往届生档案哪里找? 往年这个时候论文答辩.复试已经结束,已经进入毕业季!现在你们毕业答辩结束了吗?你们都 ...
- 用java编写输出欢迎光临_编写一个完整的Java applet程序,程序功能为:在屏幕上输出“欢迎光临Java世界!”的字符串信息。...
Applet程序开发主要步骤如下: 1)选用EDIT或Windows Notepad等工具作为编辑器建立Java Applet源程序. 2)把Applet的源程序转换为字节码文件. 3)编制使用cla ...
- java青蛙过河打字_趣味算法——青蛙过河(JAVA)
青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...
- java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理
知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...
- java编译器jdk版本_以编程方式确定Java类的JDK编译版本
java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...
- java护照号码校验_学无止境之小白学java……第001天
学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...
- java 并发编程多线程_多线程(一)java并发编程基础知识
线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...
最新文章
- 洛谷1216 数字三角形
- 阿里分布式事务框架GTS开源了!
- 安装SQL2000,挂起无法安装问题
- Android Studio同步失败设置代理,Android Studio如何设置代理?
- 利用jQuery和bootstrap更改radio样式
- 怎么修改图例位置_学到了学到了,叠加图,原来可以这样处理图例
- vue怎么编辑已有视频_手机制作短视频、VLOG用啥App?~~
- Node.js快速文件服务器(通过HTTP的静态文件)
- 【锐捷校园网用电脑开热点】简明教程
- win10写java工具_推荐三款录屏工具:也许是电脑录屏最实用的软件
- 查看Casio PDA 的物理地址 MAC (DT-X7系列)
- 微信自定义分享,分享至QQ和空间自定义内容正常、分享至微信时只有链接问题
- STM32CubeIDE Audio播放音频 WM8978 + I2S + DMA双缓存模式
- ckeditor5加字数_ckeditor 字数限制
- AutoCAD2011官方原版软件下载
- 全民战“疫”,大数据和AI厂商做了什么……
- python中的break、continue和pass
- 系统默认环境变量PATH设置
- 流畅的Python阅读笔记(二)
- 小二读西游-石猴破,金光宣