1. RecursiveCharacterTextSplitter:
功能:递归地根据提供的分隔符列表分割文本,直到每个块的大小不超过指定的chunk_size。
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=512, separators=["\n", " "])
text = "这里是一段很长的文本..."
chunks = splitter.split_text(text)2. CharacterTextSplitter:
功能:按照指定的字符数分割文本,简单直接,可能会打断文本的语义完整性。
from langchain_text_splitters import CharacterTextSplitter
splitter = CharacterTextSplitter(chunk_size=512)
text = "这里是一段很长的文本..."
chunks = splitter.split_text(text)3. SemanticChunker:
功能:基于文本中句子之间的语义相似性将文本分割成块,适用于保持语义完整性的场景。
from langchain_text_splitters import SemanticChunker
chunker = SemanticChunker(chunk_size=512, similarity_threshold=0.9)
text = "这里是一段很长的文本..."
chunks = chunker.split_text(text)4. SentenceTransformersTokenTextSplitter:
功能:使用 SentenceTransformers 模型的 token 限制来分割文本,适用于需要考虑模型 token 限制的场景。
from langchain_text_splitters import SentenceTransformersTokenTextSplitter
splitter = SentenceTransformersTokenTextSplitter(model_name="all-MiniLM-L6-v2", max_tokens=512)
text = "这里是一段很长的文本..."
chunks = splitter.split_text(text)5. NLTKTextSplitter:
功能:使用 NLTK 库进行文本分割,适用于自然语言处理任务中的文本分割。
from langchain_text_splitters import NLTKTextSplitter
splitter = NLTKTextSplitter()
text = "这里是一段很长的文本..."
chunks = splitter.split_text(text)6. KonlpyTextSplitter:
功能:使用 KoNLPy 库进行韩语文本的分割。
from langchain_text_splitters import KonlpyTextSplitter
splitter = KonlpyTextSplitter()
text = "여기에는 긴 텍스트가 있습니다..."
chunks = splitter.split_text(text)7. HuggingFaceTokenizerTextSplitter:
功能:使用 Hugging Face 的 tokenizer 进行文本分割,可以根据特定的语言模型来分割文本。
from langchain_text_splitters import HuggingFaceTokenizerTextSplitter
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
splitter = HuggingFaceTokenizerTextSplitter(tokenizer=tokenizer, max_tokens=512)
text = "这里是一段很长的文本..."
chunks = splitter.split_text(text)8. HTMLHeaderTextSplitSplitter:
功能:根据 HTML 文档中的标题标签来分割文本,适用于处理 HTML 格式的文档。
from langchain_text_splitters import HTMLHeaderTextSplitter
# 初始化分割器,指定在哪些头部标签处分割
splitter = HTMLHeaderTextSplitter(headers_to_split_on=["h1", "h2"])
# 待分割的 HTML 文本
html_text = """
<html>
<body>
<h1>标题1</h1>
<p>段落1</p>
<h2>标题2</h2>
<p>段落2</p>
</body>
</html>
"""
# 分割文本
chunks = splitter.split_text(html_text)
# 打印结果
for chunk in chunks:
print(chunk)9. RecursiveJsonSplitter:
功能:递归分割 JSON 数据,将大型 JSON 对象分割成更小的块,以便于处理和操作。
from langchain_text_splitters import RecursiveJsonSplitter
splitter = RecursiveJsonSplitter(chunk_size=512)
json_data = {
"key1": "value1",
"key2": "value2",
# 更多的键值对...
}
chunks = splitter.split_json(json_data)10. web split
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://example.com")
docs = loader.load()文本分割: 使用 RecursiveCharacterTextSplitter 或其他文本分割器将加载的网页内容分割成更小的块,以便于处理和避免超出语言模型的 Token 长度限制。
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
splits = splitter.split_documents(docs)