当前位置: 首页 > news >正文

【LangChain基础系列】深入全面掌握文本分类

文本分类是自然语言处理领域中的一个重要任务,旨在将文本数据自动归类到预定义的类别中。它是实现信息检索、智能推荐、情感分析等应用的基础技术之一。

应用场景

1. 垃圾邮件过滤 :自动识别并过滤垃圾邮件。
2. 情感分析 :分析用户评论或社交媒体内容的情感倾向。
3. 新闻分类 :将新闻文章自动分类到不同的主题类别。
4. 客户支持 :自动分类客户问题以便快速响应。
5. 文档管理 :自动分类和组织大量文档,便于检索。

情感分析实战-基础版

from langchain_core.prompts import PromptTemplate
from langchain_deepseek import ChatDeepSeek
from pydantic import BaseModel
from pydantic.fields import Fieldllm = ChatDeepSeek(model="deepseek-chat",temperature=0,max_tokens=None,timeout=None,max_retries=2,api_key="sk-37c6b1c6517141e9ae644c5ba1c81782",
)class Classification(BaseModel):emotion: str = Field(description="文本表达的情感")score: int = Field(description="文本情感的评分,分数越高,情感越积极")lang: str = Field(description="文本的语言")prompt = PromptTemplate.from_template(template="""请分析以下文本的情感,仅提取Classification里的信息。输入文本:{input}"""
)chain = prompt | llm.with_structured_output(Classification)res = chain.invoke({"input": "我吃过饭了"})print(res)

输入:我很快乐

输出:emotion='快乐' score=90 lang='zh'

输入:我吃过饭了

输出:emotion='中性' score=5 lang='zh'

输入:我很伤心

输出:emotion='伤心' score=1 lang='zh'

 从输出结果来看,结果是正确的,但是输出的值不确定,我们可以通过指定枚举来使结果更确定。

情感分析实战-进阶版

from langchain_core.prompts import PromptTemplate
from langchain_deepseek import ChatDeepSeek
from pydantic import BaseModel
from pydantic.fields import Fieldllm = ChatDeepSeek(model="deepseek-chat",temperature=0,max_tokens=None,timeout=None,max_retries=2,api_key="sk-37c6b1c6517141e9ae644c5ba1c81782",
)class Classification(BaseModel):emotion: str = Field(..., enum=['积极', '消极', '中性'], description="文本表达的情感")score: int = Field(..., enum=[1,2,3], description="文本情感的评分,分数越高,情感越积极")lang: str = Field(..., enum=['中文', '英文'], description="文本的语言")prompt = PromptTemplate.from_template(template="""请分析以下文本的情感,仅提取Classification里的信息。输入文本:{input}"""
)chain = prompt | llm.with_structured_output(Classification)res = chain.invoke({"input": "我很伤心"})print(res)

输入:我很快乐

输出:emotion='积极' score=3 lang='中文'

输入:我吃过饭了

输出:emotion='中性' score=2 lang='中文'

输入:I am so sad.

输出:emotion='消极' score=1 lang='英文'

 从输出结果来看,结果正确并且使确定的,这就方便我们后续获取字段的确定性。

同样的道理,我们也可以使用这种方式进行其他场景的应用。

相关文章:

  • C——VS的调试技巧
  • 更多 QVariant 使用案例
  • Python序列Day3
  • 如何对 Oracle 日志文件进行校验
  • 钯铂贵金属分离回收树脂
  • Nginx 配置多个监听端口
  • obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?
  • 编程题 02-线性结构2 一元多项式的乘法与加法运算【PAT】
  • PostgreSQL 的 pg_current_logfile 函数
  • 【Ubuntu】Netplan静态网络配置
  • 缺乏实体人形机器人的主流高精度仿真方案
  • Flutter接入ProtoBuff和原生Android通信【性能最优】
  • tmux 入门与实用指南
  • 39、.NET GC是什么? 为什么需要GC?
  • 深泽多层电路在PCB行业中属于什么水平
  • 初识Linux · 传输层协议TCP · 上
  • Python爬虫中time.sleep()与动态加载的配合使用
  • C语言自定义类型:联合与枚举详解
  • 手撕基于AMQP协议的简易消息队列-2(所用第三方库的介绍与简单使用)
  • 【MCP】为什么使用Streamable HTTP: 相比SSE的优势与实践指南
  • 远离军事前线的另一面暗斗:除了“断水”,印度还试图牵制对巴国际援助
  • 金融监管总局:做好2025年小微企业金融服务工作
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓
  • 公安部:“五一”假期全国社会大局稳定,治安秩序良好
  • 专访|刘伟强:在《水饺皇后》里,我放进儿时全家福照片
  • 电商平台集体出手,多措并举助力外贸企业拓内销