IK分词工具的使用(java)

说明

  到目前为止,就中文分词工具和中文分词方法而言,分词模型大概有10几个种类,效果较好的并不多,HMM,MMSEG之类的,当然还有深度学习的模型,paddle的模型比较好。按工具名说的话有中科院的nlpir,哈工大的ltp,不知何出的jieba,还有清华北大都有分词工具,还有很多,十几种应该有。所有工具我都看了的效果并不是他们吹嘘的那么好,很多场景都无法正常分词。
主要问题:
  同样的词在不同的句子中分词效果不一样;
  未登录词,也就是常见的专有名词,无法处理;
  歧义句子;
  现在语言多国语言混输;
  文言文这种,常人无法看懂的文章。

这些问题解决思路:通过Natural Language Understanding和Reinforcement Learning,应该还没人研究出来;

正文

  这里用maven,IK分词找不到单独实现的包,因为它实现在lucene所以需要借用lucene-core

		<!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core -->
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-core</artifactId>
			<version>8.6.3</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.jianggujin/IKAnalyzer-lucene -->
		<dependency>
			<groupId>com.jianggujin</groupId>
			<artifactId>IKAnalyzer-lucene</artifactId>
			<version>8.0.0</version>
		</dependency>

  java代码,注意包名这里没添加


import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.lucene.IKAnalyzer;
import static java.lang.System.out;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

public class test4 {

    public static String ikwordSplit( String content) throws Exception {
        @SuppressWarnings("resource")
		IKAnalyzer analyzer=new IKAnalyzer(true);
    	TokenStream stream = analyzer.tokenStream(null, new StringReader(content));
        stream.reset();
        CharTermAttribute term = stream.addAttribute(CharTermAttribute.class);
        
        List<String> result = new ArrayList<String>();
        while(stream.incrementToken()) {
            result.add(term.toString());
        }
        stream.close();
        return String.join("|", result);
    }
	public static void main(String[] args) throws Exception {
		out.print(ikwordSplit("明天你好"));
	}
}

总结

  分词效果一般般,还没jieba好,这是个人认知,通常分词还是能胜任。见仁见智,目前文本分词还有很长的路要走,前面的问题亟待解决!像paoding,盘古这些分词方法,据网上发文好像火过一段时间,现已消沉。

  自然语言处理分词不仅仅是中文分词,还要考虑英文、古文。世界在发展,全球文字分词也需要考虑,所以,还得做语言识别,语言识别大体比较简单uncode编码可以做到。但是拼读文字可能会识别错误,而且每个字符都要做一次文字识别,计算量还是有些大。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值