分词常见算法-----小整理

本文整理了三种常见的分词算法:基于规则的分词,包括单字分词、二元分词、最大正向匹配和最大逆向匹配;基于统计的分词算法;以及基于理解分词或知识分词算法。内容旨在帮助读者理解和复习分词基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 基于规则的分词算法

  1 单字分词

 public static void  tokennizer(String a){
             for(int i=0;i<a.length();i++){
              System.out.prinltn(a.charAt[i]); 
        }
    }

    二元分词

   
public static void split(String a) {
int len = a.length();
String key;
for (int i = 0; i < len; i++) {
if ((i + 2) <= len) {
key = a.substring(i, i + 2);
System.out.println(i + " ---- " + key);
}
}

}


    3   最大正向匹配

       (相当于有俩个指针,j,i,  当start=0, end=n,  则 substring(0,n),如此,先变end,再变start,可以确保取得正向的最长的字符串)

       
public static void match(String s, int n) {
int start = 0;
int end = n;
while (start < end) {
for (; end > start; end--) {
String key = s.substring(start, end);// 切出最大字符串
if (lt.contains(key)) {// 判断当前字符串是否在词典中
// j = j + i;
System.out.println(key);
break;
}
}
++start;
}
}

    4   最大逆向匹配

      逆向最长匹配法是基于字符串匹配的一种分词算法,即按从右至左的顺序对句子循环扫描字符串,并与所提供的关键词表进行比较,如存在则提取出该串作为关键词。相比较正向最大匹配法,逆向匹配的分词精度略高于正向匹配。

   (相当于有俩个指针,start,end,  当start=0,end=n,  则 substring(0,n),如此,先变start,在变end,可以确保取得逆向最长的字符串)

public static void matchrev(String s, int n) {
int end = n;
int start = 0;
while (end >= start) {
for (; start < end; start++) {
String key = s.substring(start, end);
if (lt.contains(key)) {
System.out.println(key);
break;
}
}
--end;
}
}

二 基于统计的分词算法


三 基于理解分词/知识分词算法

  


 文章是自己的一些整理,以便自己日后复习,若能帮到您,不胜荣幸,有误之处,请您谅解

 参考 :http://blog.youkuaiyun.com/fuyangchang/article/details/1822684

        http://blog.youkuaiyun.com/yaoxy/article/details/4288241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值