如何使用eclipse ictclas进行分词
1、 下载最新版的分词开源软件ictclas的java版(Windows)2、将ictclas加入到工程中下载的ICTCLAS50_Windows_32_JNI.rar\Sample\ictclas_sample_java解压到所建立的java工程中,如果工程中代码是放在src文件中的话,则可以把解压后的ICTCLAS文件夹拷贝到src源码文件夹中去3、运行分词软件ictclas将解压后的文件TestMain.java复制到工程的源码中去,即可以运行并分词4、添加用户自定义的词典由于提供的词典的词的数量不多,如“与时俱进”这一成语都不能分好,另外一些领域的词也没有,这样需要在用户词典中添加需要的词语。
在解压的文件中有一个userdict.txt的文件,可以加入一些用户自定义的词语用作分词的词典。
注意事项:1、ICTCLAS 2011 java 版本当调用次数增加时候就会导致内存不够而加载失败(Init Fail!),解决办法是可以使用 开源的java包 或者ICTCLAS 2009(可以在官方网站上找到旧的版本)2、ICTCLAS以前一直运行正常,但是过了一段时间,如半年后,出现init failed,是因为license 过期。
重新下载替换ICTCLAS.dll(ICTCLAS30/50.dll)即可
用结巴分词的Java版本出现空指针异常错误,不知道该怎么解决?为什...
用JAVA api打开文本文件,循环遍历文件中的内容,遇到停用词就将它替换成空即可。
停用词简介:在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。
这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。
但是,并没有一个明确的停用词表能够适用于所有的工具。
甚至有一些工具是明确地避免使用停用词来支持短语搜索的。
Java简介:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
ICTCLAS中文分词好不好
/*---------*/处代码为:count = line.split(" +").length;即修改后的代码如下:import java.util.Scanner;public class Test40031 {public static void main(String[] args) {int ri, repeat, count, word, i;String line;char c;Scanner in = new Scanner(System.in);repeat = in.nextInt();in.nextLine();for (ri = 1; ri line = in.nextLine();count = line.split(" +").length;System.out.println(count);}}}
在java中如何将以下格式的文字分为两列输出
不知道你用什么语言,首先我说一下我的思路吧,你可以先把所有单词读到一个字符串里面,然后用分词技术如java用的是String类的split()方法,分了以后的是存在一个数组里面的,哪:Stirng [] item=s.split();就把字符串s分成了一个数组,然后生成随机数作为数组下标来调用就可以了.C++里面有,我想也是一样的,都是面向对象的语言,没有你想像的那样难,只是一个字符串处理吧了,我是搞java的对C++实现不是很了解,你查阅一下"C++中字符串处理"就可以了,我想原理应该是一样的
java解决一个字符串数组过滤的问题,要求效率尽量快.
中文分词应该属于另外一个大范畴,我就没考虑了。
仅仅是尽快滤出之前没有的词,import java.util.Comparator;import java.util.TreeSet;public class Test { static public int removeOccurances(StringBuilder buf,String word){int c=0,p,len=word.length();for(;(p=buf.indexOf(word))!=-1; c++)buf.delete(p, p+len);return c;}static public void main(String argv[]){String a[]={"北京","中国朝阳","北京朝阳","天津包子","中国北京","北京烤鸭","中国中国","北京中国饭店","北京北京北京", "北京朝阳饭店","北京朝阳烤鸭饭店","中国北京朝阳饭店"};TreeSet set=new TreeSet(new Comparator(){@Overridepublic int compare(String o1, String o2) {int r=o1.length()-o2.length();return r==0? o1.compareTo(o2):r;}});StringBuilder buf=new StringBuilder();for(String w:a){buf.setLength(0); buf.append(w);for(String dw:set) removeOccurances(buf, dw); if(buf.length()>0){w=buf.toString();for(String dw:set) if(buf.length()0){set.remove(dw); set.add(buf.toString());}}set.add(w);}}System.out.print(set);} } ===========[中国, 北京, 朝阳, 烤鸭, 饭店, 天津包子]效率应该是O(2W*D), W为数组长度,D为有效词数量 把你的算法拿来看看。
应该多说自己
shell或者awk统计某个文本中的所有单词的次数
如果是查找英文单词,这是比较容易的。
因为英文单词在句子中是空格隔开的,可以将所有空格都转化为换行来查找关键字。
例如下面这段文字要统计每个单词的次数可以使用命令for search_word in $(for word in $(cat xxx.txt);do echo $word ; done | sed s/,//g | sed s#'\.'##g | sort -u ); do echo $search_word : $(for word in $(cat xxx.txt);do echo $word ; done | grep $search_word | wc -l) ; done从而得到形如下面的输出
转载请注明出处51数据库 » java word分词