首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:JAVA通过搜狗词库过滤指定词性

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传输数据的文件系统介绍

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图