java分词处理代码 java 分词库

java如何分词??如果你的分词规则是在一个字符串的开头和结尾加上"_" , 然后两个字符一分的话 , 代码可以这样写:
import java.util.ArrayList;
import java.util.List;
public class Participle
{
private static final String HEAD_END_STR = "_";
private static final int PARTICIPLE_LENGTH = 2;
public static void main(String[] args)
{
String exampleWord = "计算机";
exampleWord = "_"exampleWord"_";
int length = exampleWord.length();
ListString result = new ArrayListString();
for (int i = 0; ilength - 1; i)
{
String str = exampleWord.substring(i, iPARTICIPLE_LENGTH);
result.add(str);
}
System.out.println(result);
}
}
输出结果:_计, 计算, 算机, 机_
java语言中文分词程序怎么编写分词程序正现可以提供两种思路:
1.String或是StringBuffer(建议用) 中的indexOf("中华")方法java分词处理代码,查找给定的的字符串中是否有给定词表中的词 。
2.借鉴编译原理中的状态装换的思想 。
先编写一个状态机java分词处理代码,用于测试给定字符串中的词是否满足词表中的内容 。
写在最后:1)建议使用第一种方法,因为在java 内部实现的查找操作其实 和你想得思路是相同的,不过java分词处理代码他的效率会高些 。
2)如果个人的编程能力比较强或是不考虑效率只是想实现专有的分词算法 。可以使用第二种方法 。
3)以上的两种方法都可以使用多线程来提高程序的效率 。
java语言编写一个String的分词程序,功能就是计算输入英文句子的单词个数import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Danci {
public static void main(String[] args){
String str = new String();
System.out.print("请输入一个英文句子:");
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//获取键盘输入
str = br.readLine();
}catch(IOException e){
e.printStackTrace();
}
String []s = str.split(" ");//转换成数组
System.out.println("你输入的句子共有单词 " s.length " 个");//s.length获取数组长度
}
}
//此程序只能获取一句话的单词个数.
有没有利用斯坦福自然语言库处理英文信息的分词代码 java众所周知,英文是以词为单位java分词处理代码的 , 词和词之间是靠空格隔开,而中文是以字为单位 , 句子中所有的字连起来才能描述一个意思 。例如 , 英文句子I am a student , 用中文则为:“java分词处理代码我是一个学生” 。计算机可以很简单通过空格知道student是一个单词 , 但是不能很容易明白“学”、“生”两个字合起来才表示一个词 。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词 。我是一个学生,分词的结果是:我 是 一个 学生 。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法 。
现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法 。
1、基于字符串匹配的分词方法
这种方法又叫做机械分词方法 , 它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词) 。按照扫描方向的不同 , 串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最?。ㄗ疃蹋┢ヅ洌话凑帐欠裼氪市员曜⒐滔嘟岷?,又可以分为单纯分词方法和分词与标注相结合的一体化方法 。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最?。?。
还可以将上述各种方法相互组合,例如,可以将正向最大匹法和逆向最大匹法结合起来构成双向匹配法 。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用 。一般说来 , 逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少 。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245 。但这种精度还远远不能满足实际的需要 。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率 。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率 。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整 , 从而极大地提高切分的准确率 。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述 。
2、基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果 。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象 。它通常包括三个部分:分词子系统、句法语义子系统、总控部分 。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程 。这种分词方法需要使用大量的语言知识和信息 。由于汉语语言知识的笼统、复杂性 , 难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段 。
3、基于统计的分词方法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多 , 就越有可能构成一个词 。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度 。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息 。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率 。互现信息体现了汉字之间结合关系的紧密程度 。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词 。这种方法只需对语料中的字组频度进行统计 , 不需要切分词典 , 因而又叫做无词典分词法或统计取词方法 。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大 。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词 , 即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点 。
到底哪种分词算法的准确度更高,目前并无定论 。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现 , 都需要综合不同的算法 。笔者了解 , 海量科技的分词算法就采用“复方分词法”,所谓复方 , 相当于用中中的复方概念 , 即用不同的才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题 。
用java读取文档并分词 。需要commons-io包, 或者自己写读文件java分词处理代码的部分
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
public class Test20 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = null;
try {
str = FileUtils.readFileToString(new File("e.txt"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Pattern p = Pattern.compile("\\b[\\w-'] \\b");
Matcher m = p.matcher(str);
ListWord words = new ArrayListWord();
while(m.find()){
add(words, m.group().trim());
}
Collections.sort(words, new ComparatorWord(){
@Override
public int compare(Word o1, Word o2) {
// TODO Auto-generated method stub
return o1.getWord().compareTo(o2.getWord());
}});
System.out.println(words);
}
private static void add(ListWord words, String word) {
// TODO Auto-generated method stub
for(Word temp : words){
if(temp.getWord().equals(word)){
temp.setCount(temp.getCount()1);
return;
}
}
Word w = new Word();
w.setWord(word);
words.add(w);
}
}
class Word{
private String word;
private int count = 1;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public String toString() {
return "Word [word="word", count="count"]";
}
}
有没有中文分词的java程序?。?老师给了一段文字,让我们分词这里的分词是什么意思呢?如果是按照空格将一段文字分解成字符串数组的话 , 我想无所谓中英文的区别吧 。java.util.StringTokenizer这个类就可以实现这个功能
【java分词处理代码 java 分词库】关于java分词处理代码和java 分词库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读