ecloud

更新时间:2023-04-16 10:28:53 阅读: 评论:0


2023年4月16日发(作者:sitc分类)

java_利⽤hanlp对⽂件“三国演义(罗贯中).txt”进⾏分词,去掉标点符号和停⽤

词。。。

配置好hanlp(从官⽹下载字典数据包:)

3;

;

;

rdTokenizer;

;

;

putStream;

tputStream;

ption;

rdCharts;

.*;

/*

对⽂件

三国演义

(

罗贯中

).txt”

进⾏分词,去掉标点符号和停⽤词,

最后统计词频,排序输出到⽂件

三国演义词频

.txt"*/

publicclassStatisticsWords{

publicstaticvoidmain(String[]args){

HashMapmap=newHashMap<>();//⽤于统计词频

n("输⼊⽂件⽬录:");//StringfileName=newScanner().nextLine();

/*Filefile=newFile(fileName);//

⽆法正常读⼊中⽂。Scannerscanner=newScanner(file);*/

StringfileName="D:ecloudtextbooksjavaexperiment_docdataExperiment8三国演义(罗贯中).txt";

/*

读⼊⽬录

:D:ecloudtextbooksjavaexperiment_docdataExperiment8

三国演义

(

罗贯中

).txtD:ecloudtextbooksjavaexperiment_*/

StringfileNameOut="D:ecloudtextbooksjavaexperiment_docdataExperiment8三国演义词频.txt";

try{

/*

创建输⼊流和输出流*/

FileInputStreaminputStream=newFileInputStream(fileName);

;/*

产⽣了⼀个

(

节点

)流对象

⽅便后期⽤流对其数据操很好的英文 作

:

⼀般是使⽤该流对象对应具有的⽅法进⾏操作

:

⽐如

.read()

⽅法来取⽤某些内容*/

FileOutputStreamoutputStream=newFileOutputStream(fileNameOut);

//Stringstr;

byte[]bytes=newbyte[1024];/*

申请⼀个

by练口才绕口令 te[]

类型的数组

(

对象

),

该对象的规格通过

newByte[1024]

来定义

,

bytes

引⽤变量类管理这个数组对象

;

这个数组⽤于存储届时读取的数据

,

另外注意不要使⽤

byte

的包装类

Byte,

两者有所不容

*/

intlen=0;

try{

while((len=(bytes))!=-1){

//n(newString(bytes,"utf-8"));//

默认是⽤

gbk

编码

,

所以灾打印输出的时候将出现乱码

(

故这⾥指定⽤

utf-8)

来处理.

//String(byte[]bytes,intofft,intlength):把字节数组的⼀部分转换为字符串

//StringTokenizertokenizer=newStringTokenizer(newString(bytes/*,_8*/),"

《》;,。!【】

‘?”“

:¥

~—`

|");/*

》;,。!【】

‘“

:¥

~`?*///Stringstr;

//while(eElements()){

//str=(String)ement();

//if(nsKey(str)){

//(str,(str)+1);//}el{

//(str,1);//}

////n(str);//}//endWhileTokenizer

/*

使⽤

hanlp

包来做:此处受教于同学.*/

Strings=newString(bytes,_8);

/*n(t(s));*/

/*("??");("");*/

/*hanlp

处理字符串

s:

光⽤函数的效果并不如意:

*/

/*for(Termx:t(s)){str=ng();

if(!ns(str)){if(nsKey(str)){

(str,(str)+1);}el{

(str,1);

}}

}//endfor*/

/坐高铁没带身份证怎么办 *

使⽤

Term

类中的

nature

成员来处理符号问题⽐较满意。*/

//Segmentgment=ment().enableNameRecognize(true);

ListtermList=t(s);/*

标准分词器*/

//n(termList);//

查看分词效果

,

发现符号和词语都别列⼊列表中。

for(Termx:termList){

//if(==Nature.w){//Term

类下的

nature

成员是词性。⽽

Nature

类⾥有诸词性(名词,连词,乃⾄⼈名等其他分类标准

..

等细致的划分。熊猫英文

publicstaticfinalNaturenr=newNature("nr");nr

成员就是⼈名

,w

就是标点符号。但注意统计⼈名时应当是

!=

作为条件

//continue;论语中的名言 /*

如果⽐较得知该

x

的属性不是⼈名,那么跳过后续的统计操作,判断下个记录

*///}

if(!=){

continue;

}

Stringstr=ng();

if(nsKey(str)){

(str,(str)+1);

}el{

(str,1);

}

}

}

}//whileEndIO

要特别注意

io

流(的关闭)不能在循环⾥写(出现)

catch(Idoubt用法 OExceptionioException){

tackTrace();

}//

Listlist=newArrayList<>();

StringBufferstringBuffer=newStringBuffer();

for(Stringx:()){

(newTuple(x,(x)));

}//endFor

//n(stringBuffer);

/*

创建

Tuple

对象,并将

Tuple

对象放⼊列表中⼀遍执⾏排序:

*/

(list,newComparator<>(){

@Override

publicintcompare(Tupleo1,Tupleo2){

ue()-ue();

}

});

/*

链接成⼀整个字符串

*/

for(Tuplex:list){

(x);

}

n(stringBuffer);

/*

写⼊⽂件*/

(ng().getBytes());

/*

关闭

io

流,释放资源

*/

();

();

}catch(IOExceptione){

tackTrace();

}

}}

4;

publicclassTuple{

Stringstring;

intnum;

publicTuple(Stringstring,intnum){

=string;

=num;

}

publicStringgetKey(){

returnstring;

}

publicintgetValue(){

returnnum;

}

@Override

publicStringtoString(){

returngetKey()+"t"+getValue()+"n"悲惨的世界读后感 ;//+"n"

}}


本文发布于:2023-04-16 10:28:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/832831.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:动画的起源
下一篇:电梯安全教育
标签:ecloud
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图