JAVA学习-练习试用Java实现“一个简单的分词器 :基于空格或正则表达式对文本进行分词”

发布于:2025-06-13 ⋅ 阅读:(16) ⋅ 点赞:(0)

问题:

       java语言编辑,实现一个简单的分词器 :基于空格或正则表达式对文本进行分词。

解答思路:

       以下是一个简单的Java分词器实现,它基于空格或正则表达式对文本进行分词。这个分词器首先尝试使用空格进行分词,如果遇到连续的空格或其他非单词字符,它会使用正则表达式来辅助分词。

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Pattern;


public class SimpleTokenizer {


    public static List<String> tokenize(String text) {

        List<String> tokens = new ArrayList<>();

        // 使用空格进行初步分词

        String[] wordsBySpace = text.split("\\s+");

        for (String word : wordsBySpace) {

            if (!word.isEmpty()) {

                tokens.add(word);

            }

        }


        // 使用正则表达式处理连续空格和其他非单词字符

        Pattern pattern = Pattern.compile("\\b\\w+\\b");

        java.util.regex.Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {

            String token = matcher.group();

            if (!tokens.contains(token)) { // 避免重复添加

                tokens.add(token);

            }

        }


        return tokens;

    }


    public static void main(String[] args) {

        String text = "Hello, world! This is a simple tokenizer.";

        List<String> tokens = tokenize(text);

        for (String token : tokens) {

            System.out.println(token);

        }

    }

}

       在这个实现中,'tokenize' 方法首先通过空格分割文本,然后使用正则表达式 '\b\w+\b' 来匹配单词边界之间的单词。这个正则表达式匹配任何字母数字字符序列,它将忽略连续的空格和其他非单词字符。

       在 'main' 方法中,我们使用了一个示例文本,并调用 'tokenize' 方法来分词,然后打印出每个分词。

       需要注意,这个简单的分词器不会处理中文文本或复杂的文本结构,它主要用于英文文本的分词。对于处理中文或其他语言的分词,通常需要更复杂的分词算法和自然语言处理库。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)