java_利⽤hanlp对⽂件“三国演义(罗贯中).txt”进⾏分词,去掉标点符号和停⽤
词。。。
配置好hanlp(从官⽹下载字典数据包:)
3;
;
;
rdTokenizer;
;
;
putStream;
tputStream;
ption;
rdCharts;
.*;
/*
对⽂件
“
三国演义
(
罗贯中
).txt”
进⾏分词,去掉标点符号和停⽤词,
最后统计词频,排序输出到⽂件
“
三国演义词频
.txt"*/
publicclassStatisticsWords{
publicstaticvoidmain(String[]args){
HashMap
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);
List
标准分词器*/
//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();
}//
List
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小时内删除。
留言与评论(共有 0 条评论) |