bobo0121 发表于 2024-7-20 15:24

使用4种不同的库切割文本

jieba库实现切割文本
# 颗粒度较小,可以按词语划分,但会出现冗余情况
# -*- coding: utf-8 -*-
import jieba

# 打开文件并读取文本内容
with open("9000字文本.txt", "r", encoding="GB2312") as file:
    text = file.read()

print("/".join(jieba.lcut(text)))    # 精简模式,返回一个列表类型的结果

# print("/".join(jieba.lcut(seg_str, cut_all=True)))      # 全模式,使用 'cut_all=True' 指定

# print("/".join(jieba.lcut_for_search(seg_str)))   # 搜索引擎模式




langchain text splitters库实现切割文本
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 使用with open语句打开文件并读取内容
with open("9000字文本.txt", "r", encoding="GB2312") as file:
    text = file.read()

# 创建按字符递归拆分器实例
# 默认分隔符列表是 ["\n\n", "\n", " ", ""], 可根据需要调整
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,# 每个文本块的目标大小
    chunk_overlap=200,# 重叠字符数,以保持上下文
    length_function=len,
    is_separator_regex=False
)

# 使用递归字符拆分器对文本进行切割
texts = text_splitter.create_documents()

# 打印拆分后的文本块
for i, text_chunk in enumerate(texts):
    print(f"Text chunk {i+1} content:\n{text_chunk}\n")


NLTK库实现切割文本
# 颗粒度较大,只能按句子划分
import nltk
# 确保已经下载了nltk的tokenizers
nltk.download('punkt')

# 使用with open语句打开文件
with open("9000字文本.txt", "r", encoding="GB2312") as file:# 确保使用正确的文件编码
    paragraph = file.read()

# 使用nltk的word_tokenize进行分词
words_list = nltk.word_tokenize(paragraph)

# 打印分词结果
print(words_list)


pySBD库实现.py
# 颗粒度较大,只能按句子划分
from pysbd import Segmenter

# 创建一个Segmenter实例
segmenter = Segmenter()

# 打开文件并逐行读取
with open("9000字文本.txt", "r", encoding="GB2312") as file:# 确保使用正确的文件编码
    full_text = file.read()

# 使用Segmenter对整个文本进行句子分割
sentences = segmenter.segment(full_text)

# 打印分割后的句子列表
for i, sentence in enumerate(sentences, start=1):
    print(f"Sentence {i}: {sentence}")
页: [1]
查看完整版本: 使用4种不同的库切割文本