栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
JAVA通过搜狗词库过滤指定词性
www.jz123.cn 2010-04-16 来源: 中国建站 责任编辑(袁袁) 我要投递新闻
http://www.0x32.cn/html/y2010/563.html
在测试过程中需要从文本中拿到指定词性的词,比如名词或者动词,各种词性的定义我们可以依靠搜狗的语料库来实现,从搜狗实验室下载到词库后解压可以看到搜索词库的格式:
图中的数据表示:词、在互联网的词频、然后是词性。
看这个东西就可以一目了然,多种词性,包括平时很少会用到得。
下面我们需要判断一个从文本中分出的词是否为名词或者动词,就需要读取这个搜狗词库,大小在2Mb左右,结果返回一个布尔就可以了。
我们期望调用的形式:
FreqWordsHandler.isFreqWords(word);
word表示需要判断的词,这句代码会返回一个布尔值,FreqWordsHandler是需要我们实现的一个静态的类,代码如下:
/**
*
*/
package org.nsir.terms;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 用于得到指定词性的词
*
* @author HideHai
*
*/
public class FreqWordsHandler {
private static List freqWordsList = null;
public static boolean isFreqWords(String words) {
// System.out.println(words);
for (String s : freqWordsList) {
if (s.equals(words)) {
return true;
}
}
return false;
}
public static List getFreqWords(String path, String type) {
List reList = new ArrayList();
File file = new File(path);
try {
FileReader reader = new FileReader(file);
BufferedReader buffer = new BufferedReader(reader);
String tempStr = "";
while ((tempStr = buffer.readLine()) != null) {
if (tempStr.contains(",")) {
String[] freqWors = tempStr.split(" ");
String words = freqWors[0];
String wordType = freqWors[2];
String[] freqType = wordType.split(",");
for (String splittype : freqType) {
if (splittype.equals("N")
|| splittype.equals("V")
// || splittype.equals("ADV")
// || splittype.equals("ADJ")
) {
reList.add(words);
}
}
} else if (tempStr.contains("IDIOM")) {
String[] freqWors = tempStr.split(" ");
reList.add(freqWors[0]);
}
}
buffer.close();
reader.close();
return reList;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
static {
if (freqWordsList == null) {
freqWordsList = getFreqWords(
"x:\Freq\SogouLabDic.dic", "N");
}
}
public static void main(String[] args) {
isFreqWords("稗官小说");
}
}
这样如果传入的词在词库中标记为名词或者动词,我们就返回一个True。
本文出自 “HideHai's Blog” 博客,请务必保留此出处http://hidehai.blog.51cto.com/307955/294183
上一篇:Spring 定时任务实现方法简介 下一篇:Java Socket传输数据的文件系统介绍