风也温柔

计算机科学知识库

java字符串匹配度算法 中文分词-词典逆向最大匹配法-JAVA实现

  测试环境

   10

  IDEA 2020.1

  JDK 1.8

  算法描述

  1、 首先读取词库java字符匹配度算法 中文分词-词典逆向最大匹配法-JAVA实现,每个词用哈希表存储,查找效率高

  2、 读取待分词句子input, 设置最大匹配长度 MAX

  3、 input的长度是否大于0,如果是接着下一步,否则第8步

  4、 input长度是否大于 MAX, 如果是,设置尝试匹配词语token = input后MAX个字符, 否则 token = input

  5、 是否有:token的长度大于1并且token并未出现在词库中?是的话接着下一步,否则转至第7步

  6、 token去掉最左的第一个字符作为新token, 转去第5步

  7、 分词结果栈rs保存token,input去除token的部分作为新input,转至第3步

  8、 输出分词结果rs,程序结束

  流程图

  源程序-JAVA实现

  Words.java 负责读取词库文件并判断token是否存在词库中

   org.;

   java.io.*;

   java.nio..;

   java.util.;

   class Words {

   = new ();

   void ( ) {

   br = null;

   isr = null;

   fis = null;

  File file = new File();

  fis = new (file);

  isr = new (fis, .UTF_8);

  br = new (isr);

  /读取每一行内容即一个词,保存在哈希表中/

  字符模板匹配_java字符串匹配度算法_js split 正则匹配多个字符

   line = null;

  while ((line = br.()) != null) {

  .add(line.(" ", ""));

  }

  }

  /词库中是否存在word/

   ( word) {

   .(word);

  }

  }

  App.java 算法主流程

   org.;

   java.io.;

   java.util.;

   java.util.Deque;

  /**

  * @: Mr.Hu

  * @: 2021-04-07 15:52

  */

   class App {

   void main([] args) {

  Words words = new Words();

  words.("data.txt");

  Deque rs = new ();

   input = "普京跟特朗普在明天下雨之前学会加减乘除,吃完饭没时间睡觉,睡觉后去上大学";

   = null; // 每次匹配的字符串

  int head = 0; // head~tail-1为分词字符串

  int tail = input.(); // 余下的字符长度

  final int = 4; // 最大匹配长度

  while (tail > 0) {

  // 先尝试取最大匹配长度

  if (tail > ) head = tail - ;

  else head = 0; // 余下全部

   = input.(head, tail); // 截取

  /直到截取字符串只有一个字符或者字符串存在于词库中/

  while (.() > 1 && !words.()) {

   = .(1); // 去除最左字符java字符串匹配度算法java字符串匹配度算法,即尝试匹配少一位

  head++; // 下标往后

  }

  rs.push(); // 栈中

  tail = head; // 下一个截取字符串的尾巴是这次的头

  }

  for ( item : rs) {

  .out.print(item + " / "); // 词库中的词没有单字的

  }

  字符模板匹配_js split 正则匹配多个字符_java字符串匹配度算法

  .out.();

  }

  }

  data.txt 词库文件

  普京

  大学

  天气

  睡觉

  下雨

  吃饭

  时间

  特朗普

  加减乘除

  明天

  之前

  运行结果

  普京 / 跟 / 特朗普 / 在 / 明天 / 下雨 / 之前 / 学 / 会 / 加减乘除 / , / 吃 / 完 / 饭 / 没 / 时间 / 睡觉 / , / 睡觉 / 后 / 去 / 上 / 大学 /

  文章来源:http://www.toutiao.com/a6949809180869935630/