最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中文分詞之正向最大匹配法實例代碼

 更新時間:2017年11月02日 10:57:26   作者:xiaoyeyopulei  
中文分詞應(yīng)用很廣泛,網(wǎng)上也有很多開源項目,下面這篇文章主要給大家介紹了關(guān)于java中文分詞之正向最大匹配法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

基于詞典的正向最大匹配算法(最長詞優(yōu)先匹配),算法會根據(jù)詞典文件自動調(diào)整最大長度,分詞的好壞完全取決于詞典。

所謂詞典正向最大匹配就是將一段字符串進(jìn)行分隔,其中分隔 的長度有限制,然后將分隔的子字符串與字典中的詞進(jìn)行匹配,如果匹配成功則進(jìn)行下一輪匹配,直到所有字符串處理完畢,否則將子字符串從末尾去除一個字,再進(jìn)行匹配,如此反復(fù)。

算法流程圖如下:

下面給大家主要講一下中文分詞里面算法的簡單實現(xiàn),廢話不多說了,現(xiàn)在先上代碼

示例代碼

package com; 
 
 
import java.util.ArrayList; 
import java.util.List; 
 
 
public class Segmentation1 { 
 private List<String> dictionary = new ArrayList<String>(); 
 private String request = "北京大學(xué)生前來應(yīng)聘"; 
 
 public void setDictionary() { 
 dictionary.add("北京"); 
 dictionary.add("北京大學(xué)"); 
 dictionary.add("大學(xué)"); 
 dictionary.add("大學(xué)生"); 
 dictionary.add("生前"); 
 dictionary.add("前來"); 
 dictionary.add("應(yīng)聘"); 
 } 
 
 public String leftMax() { 
 String response = ""; 
 String s = ""; 
 for(int i=0; i<request.length(); i++) { 
  s += request.charAt(i); 
  if(isIn(s, dictionary) && aheadCount(s, dictionary)==1) { 
  response += (s + "/"); 
  s = ""; 
  } else if(aheadCount(s, dictionary) > 0) { 
   
  } else { 
  response += (s + "/"); 
  s = ""; 
  } 
 } 
 return response; 
 } 
 
 private boolean isIn(String s, List<String> list) { 
 for(int i=0; i<list.size(); i++) { 
  if(s.equals(list.get(i))) return true; 
 } 
 return false; 
 } 
 
 private int aheadCount(String s, List<String> list) { 
 int count = 0; 
 for(int i=0; i<list.size(); i++) { 
  if((s.length()<=list.get(i).length()) && (s.equals(list.get(i).substring(0, s.length())))) count ++; 
 } 
 return count; 
 } 
 
 public static void main(String[] args) { 
 Segmentation1 seg = new Segmentation1(); 
 seg.setDictionary(); 
 String response1 = seg.leftMax(); 
 System.out.println(response1); 
 } 
} 

可以看到運行結(jié)果是:北京大學(xué)/生前/來/應(yīng)聘/

算法的核心就是從前往后搜索,然后找到最長的字典分詞。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java均攤復(fù)雜度和防止復(fù)雜度的震蕩原理分析

    Java均攤復(fù)雜度和防止復(fù)雜度的震蕩原理分析

    這篇文章主要介紹了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩,結(jié)合實例形式分析了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩相關(guān)概念、原理、實現(xiàn)方法與注意事項,需要的朋友可以參考下
    2020-03-03
  • 讓JPA的Query查詢接口返回Map對象的方法

    讓JPA的Query查詢接口返回Map對象的方法

    下面小編就為大家分享一篇讓JPA的Query查詢接口返回Map對象的方法,具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • java.lang.NoClassDefFoundError錯誤的原因及解決方法

    java.lang.NoClassDefFoundError錯誤的原因及解決方法

    這篇文章主要給大家介紹了關(guān)于java.lang.NoClassDefFoundError錯誤的原因及解決的相關(guān)資料,java.lang.NoClassDefFoundError是Java虛擬機在運行時無法找到特定類的錯誤,需要的朋友可以參考下
    2023-10-10
  • Java設(shè)計模式之外觀模式的實現(xiàn)方式

    Java設(shè)計模式之外觀模式的實現(xiàn)方式

    這篇文章主要介紹了Java設(shè)計模式之外觀模式的實現(xiàn)方式,外觀模式隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的接口,這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個接口,來隱藏系統(tǒng)的復(fù)雜性,需要的朋友可以參考下
    2023-11-11
  • Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單

    Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單

    這篇文章主要介紹了Springboot的ThreadPoolTaskScheduler線程池輕松搞定15分鐘不操作自動取消訂單,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • 深入理解Netty核心類及其作用

    深入理解Netty核心類及其作用

    本文介紹了Netty框架中的核心類及其作用,包括Channel、EventLoop、ChannelPipeline、ByteBuf等,通過對這些類的深入理解,可以更好地使用Netty進(jìn)行網(wǎng)絡(luò)編程開發(fā)
    2023-04-04
  • 一文帶你剖析Redisson分布式鎖的原理

    一文帶你剖析Redisson分布式鎖的原理

    相信使用過redis的,或者正在做分布式開發(fā)的童鞋都知道redisson組件,它的功能很多,但我們使用最頻繁的應(yīng)該還是它的分布式鎖功能,少量的代碼,卻實現(xiàn)了加鎖、鎖續(xù)命(看門狗)、鎖訂閱、解鎖、鎖等待(自旋)等功能,我們來看看都是如何實現(xiàn)的
    2022-11-11
  • 自己動手寫的mybatis分頁插件(極其簡單好用)

    自己動手寫的mybatis分頁插件(極其簡單好用)

    最近做了個項目,需要用到mybatis分頁功能,網(wǎng)上找了很多插件,都不太合適,于是就自己動手寫了個mybatis分頁插件功能,非常不錯,代碼簡單易懂,需要的朋友參考下吧
    2016-11-11
  • SpringBoot登錄用戶權(quán)限攔截器

    SpringBoot登錄用戶權(quán)限攔截器

    這篇文章主要介紹了SpringBoot登錄用戶權(quán)限攔截器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中Scanner的常用方法總結(jié)(一次學(xué)懂)

    Java中Scanner的常用方法總結(jié)(一次學(xué)懂)

    這篇文章主要給大家介紹了關(guān)于Java中Scanner常用方法的相關(guān)資料,Java中的Scanner是一個用于讀取用戶輸入的類,它可以讀取各種類型的數(shù)據(jù),包括整數(shù)、浮點數(shù)、字符串等等,需要的朋友可以參考下
    2023-11-11

最新評論

大姚县| 常宁市| 行唐县| 四子王旗| 红桥区| 麻江县| 黄平县| 集安市| 且末县| 江北区| 眉山市| 霍城县| 利津县| 灵台县| 怀化市| 克拉玛依市| 前郭尔| 永福县| 伊春市| 朝阳县| 汉寿县| 长寿区| 驻马店市| 东城区| 津市市| 乐安县| 安西县| 万州区| 上饶县| 阿拉善右旗| 潮州市| 类乌齐县| 大庆市| 翼城县| 井陉县| 石林| 稷山县| 微山县| 大余县| 辽中县| 新津县|