java中文分词的简单实现

您所在的位置:网站首页 本的最简单组词 java中文分词的简单实现

java中文分词的简单实现

2024-07-12 20:50| 来源: 网络整理| 查看: 265

java中文分词的简单实现 中文分词算法算法思路算法实现代码及注释评价结语

中文分词

通俗来讲,中文分词是指将一句中文句子中的所有中文词汇相互分隔开来。它是文本挖掘的基础,有着十分广阔的应用前景。下面,我们来看一看对于这个技术的简单实现。

算法

对于中文分词技术的实现,有许多算法可以完成,目前大致可以把算法分为三大类:

基于字符串匹配的分词方法;基于理解的分词方法;基于统计的分词方法。

其中,基于字符串匹配的分词方法是把中文句子按照一定的策略将待分析的汉字串与已知且足够大的中文词典库进行比对,从而达到分词效果。而我们通常使用最多的分词策略,大致有三类,正向最大匹配法,逆向最大匹配法和最少切分法。

基于理解的分词方法是指让计算机模拟人对句子的理解进行分词。基于统计的分词方法是指找出上下文中出现较多的汉字组合,将这些组合视为词汇,代入到原文中进行分词。

在这里,我们就使用字符串匹配的分词方法,利用逆向最大匹配的策略,对中文句子进行简单的分词。

算法思路

逆向最大匹配法大致思想为:将整个字符串作为一个“词组”带入到词典中进行比对,若不成功,删除第一个字符,继续进行如此操作,直到成功或者只剩下最后一个字,再把结果放入一个字符串的数组中,最后删除原句中的结果,继续上面的操作。下面我将用一个例子解释这个操作:

原句:今晚月亮真漂亮啊 词典:“今晚”,“月亮”,“漂亮” 第一次代入:今晚月亮真漂亮啊(在词典中没有该词汇,删除首字符继续比对) 删除首字符:晚月亮真漂亮啊(在词典中没有该词汇,删除首字符继续比对) 删除首字符:月亮真漂亮啊(在词典中没有该词汇,删除首字符继续比对) 删除首字符:亮真漂亮啊(在词典中没有该词汇,删除首字符继续比对) … 删除首字符:啊(在词典中没有该词汇,只剩下一个字,放入结果数组,并删除位于句尾的最后这个字,进行第二次代入) 第二次代入:今晚月亮真漂亮(在词典中没有该词汇,删除首字符继续比对) … 删除首字符:漂亮(在词典中找到词汇“漂亮”,放入结果数组,并删除位于句尾的结果“漂亮”,进行第三次代入) …

算法实现

下面是实现该算法的流程图(摘自网络,图片地址:https://p2.ssl.qhimgs1.com/bdr/240/t01d394ac7e308b34be.jpg)

在这里插入图片描述

代码及注释 public class secondwork { public static void main(String args[]) { String[] cs = {"你好","请问","什么","名字"};//词典 String a = "你好!请问你叫什么名字?"; System.out.print("原句:"); System.out.print(a + '\n'); System.out.print("拆分后为:"); String[] cs2 = new String[100]; //结果数组 int jud=0;//找到匹配字符串与否的标志 int j=0; String temp=null;//初始化临时字符串 for(;a.length()>0;) { for(int i = 0;i= 0;j--) { if(cs2[j] != null) System.out.print(cs2[j]+" "); } } /* * 下面为判断字符串是否在词典中的函数方法 */ static public boolean isin(String[] cs,String temp)//判断目标字符串是否在对比字符串数组中 { int i; for(i = 0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3