`
lzj0470
  • 浏览: 1243197 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

中文分词—新词挖掘篇

阅读更多
大概想法是这样:
找词库完毕,剩下没有找到的所有字符串,进行新词挖掘。
例如:
一篇文章中,没有找到的所有字符串有:
1、杨瑞第集国宁你们
2、杨瑞来你们来国宁
3、过来要不要去
4、要不要过来啊
经过新词挖掘,可以得到
杨瑞->你们->国宁->要不要->过来->
欢迎大家测试!有更好的算法,也可以说一下,讨论讨论~~~
package wss.analysis.analyzer;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author Loiy
 * @time 2011-10-26
 * @return 新词挖掘
 */
public class newWordAnalyzer {

	public List<String> list = new ArrayList<String>();
	
	public List<String> word = new ArrayList<String>();
	
	public void findWord(String text){
		Iterator<String> iter = list.iterator();
		while(iter.hasNext()){
			String str = iter.next();
			match(str,text);
		}
		list.add(text);
	}
	
	/**
	 * @param  s1 词库
	 * @param  s2 待挖掘新词的字符串 
	 * @return 查找两个字符串共同子字符串,并返回.子字符串必须大于等于2
	 */
	public void match(String s1, String s2){
		char c1[] = s1.toCharArray();
		char c2[] = s2.toCharArray();
		int j = 0;
		boolean bool = false; // 上次是否匹配成功 true 匹配成功 false 匹配失败
		int start = -1,end = -1; // 开始匹配位置;结束匹配位置
		for(int i = 0; i < c2.length; i++){
			for(; j < c1.length; j++){
				if(c2[i] == c1[j] && j != c1.length - 1){ // 找到匹配,还不到第二个循环最后一个字符
					if(start == -1) start = i;
					if(i == c2.length - 1) end = i; // 到第一个循环最后,赋值把i赋值给end 
					bool = true;
					j = j + 1; 
					break; // 结束该循环,查找第一个循环的下个字符(A),A从第二个循环下标为j+1开始找
				}
				if(c2[i] == c1[j] && j == c1.length - 1){ // 找到匹配,到第二个循环最后一个字符
					end = i; // 这里i不需要减1,因为已经到了第二个循环最后一个元素
					if(start != -1 && (end - start >= 1)){ // 相连字符长度大于等于2,打印出来
						word.add(s2.substring(start, end + 1));
					}
					j = 0;
					start = -1;
					end = -1;
					break;
				}
				if(bool){ //匹配到这个下标结束,开始总计到目前为止相连字符有多少个
					end = i - 1; // 上次成功匹配到的字符位置
					//System.out.println(end+" "+start);
					if(start != -1 && (end - start >= 1)){ // 相连字符长度大于等于2,打印出来
						word.add(s2.substring(start, end + 1));
					}
					//System.out.println("<--i="+i+" "+c2[i]+" j="+j+" "+c1[j]+"-->");
					bool = false;
					start = -1;
					end = -1;
					i--; // 匹配失败,第一个循环下标减1
					j = 0; // 第二个循环下标从零开始.
					break;
				}
				if(j == c1.length -1){ // 第一个循环某个字符到第二个循环最后一个字符,还是匹配不到,那么 j=0;
					j = 0;
					break;
				}
			}
		}
		if(start != -1 && (end - start >= 1)){ // 相连字符长度大于等于2,打印出来
			word.add(s2.substring(start, end + 1));
		}
	}
	
	public String toString(){
		Iterator<String> iter = word.iterator();
		StringBuffer sb = new StringBuffer();
		while(iter.hasNext()){
			String str = iter.next();
			if(str.length() <= 1) continue;
			sb.append(str).append("->");
		}
		String result = sb.toString();
		sb.setLength(0);
		sb = null;
		return result;
	}
	
	public static void main(String args[]){
		newWordAnalyzer wordExcavate = new newWordAnalyzer();
		wordExcavate.findWord("杨瑞第集国宁你们");
		wordExcavate.findWord("杨瑞来你们来国宁");
		wordExcavate.findWord("过来要不要去");
		wordExcavate.findWord("要不要过来啊");
		String t = wordExcavate.toString();
		System.out.println(t);
	}
	
}

分享到:
评论

相关推荐

    LJFeatureDet_SDK新词/特征词发现基础件(共享版)

    识别出的新词结果还可以进一步编辑标注,编辑好的新词词典,可以作为专业知识库导入分词词典中,从而提高分词系统的准确度,并适应新的语言变化情况。文本特征词发现系统LJFeatureDet,此系统能够识别出文本集合中的...

    灵柩软件 可用于汉语分词处理

    对原始语料进行分词、自动识别人名地名机构名等未登录词、新词标注以及词性标注。并可在分析过程中,导入用户定义的词典。 4. 统计分析与术语翻译 针对切分标注结果,系统可以自动地进行一元词频统计、二元词语...

    Python中文分词库Yaha.zip

    "哑哈"中文分词,更快或更准确,由你来定义。通过简单定制,让分词模块更适用于你的需求。 "Yaha" You can custom your Chinese Word Segmentation efficiently by using Yaha 基本功能: 精确模式,将句子切成...

    LJParser文本搜索与挖掘开发平台

    LJParser文本搜索与挖掘开发平台包括:全文精准搜索,新词发现,汉语分词标注,词语统计与术语翻译,自动聚类与热点发现,分类过滤,自动摘要,关键词提取,文档去重,正文提取等十余项功能。针对互联网内容处理的...

    几乎最全的中文NLP资源库.zip

    知识图谱概念链接预测、Scattertext 文本可视化(python)、语言/知识表示工具:BERT & ERNIE、中文对比英文自然语言处理NLP的区别综述、Synonyms中文近义词工具包、HarvestText领域自适应文本挖掘工具(新词发现-情感...

    spacy 库的中文NLP分析模型zh-core-web-trf

    该模型基于Transformer架构,融入了大规模的中文语料库训练,提供了丰富的语言分析能力,包括分词、词性标注、命名实体识别等。它不仅能够处理标准的中文文本,还能应对各种复杂的语言现象,如新词、网络用语等。zh_...

    论文研究-基于组合词和同义词集的关键词提取算法.pdf

    该算法首先利用组合词识别算法极大地改进分词效果,能识别网页上绝大多数的新词、未登录词,为提高关键词自动抽取准确率奠定了坚实的基础;同时利用构造的同义词集,合并同义词的词频,避免了同义词在输出结果中同现...

    百度输入法 v5.5.5034.0 正式版.zip

    百度输入法是一款由百度推出的专业好用的智能输入法,输入法以百度强大的数据挖掘和中文分词技术为基础,借助百度自身的搜索技术,可以最准确的找到互联网的流行词汇,支持全拼、简拼和中英文混拼三种模式,其输入法...

    NLP资源库.zip

    知识图谱概念链接预测、Scattertext 文本可视化(python)、语言/知识表示工具:BERT & ERNIE、中文对比英文自然语言处理NLP的区别综述、Synonyms中文近义词工具包、HarvestText领域自适应文本挖掘工具(新词发现-情感...

    Web问答系统中问句理解的研究 (2012年)

    对问答系统中的问句理解技术进行了深入研究,提出了对问句信息进行深层挖掘形成问句表征。对问句进行分词、去停用词等预处理;结合FAQ库和网络对问句进行关键词扩展,以网络为语料库,利用N元语法模型对问句中的新词...

Global site tag (gtag.js) - Google Analytics