分类
概述
本文档提供了一个使用 LangChain4j 在 Java 中实现的分类系统。分类对于将文本划分到预定义标签中至关重要,例如 情感分析、意图识别 和 实体识别。
该示例演示了如何使用 LangChain4j 的 AI 服务进行 情感分类。
情感分类服务
情感分类系统会将输入文本划分为以下 情感类别之一:
- POSITIVE(积极)
- NEUTRAL(中性)
- NEGATIVE(消极)
实现代码
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.UserMessage;
public class SentimentClassification {
// 使用 OpenAI 初始化聊天模型
static ChatModel chatModel = OpenAiChatModel.withApiKey("YOUR_OPENAI_API_KEY");
// 定义情感枚举
enum Sentiment {
POSITIVE, NEUTRAL, NEGATIVE
}
// 定义 AI 驱动的情感分析接口
interface SentimentAnalyzer {
@UserMessage("Analyze sentiment of {{it}}")
Sentiment analyzeSentimentOf(String text);
@UserMessage("Does {{it}} have a positive sentiment?")
boolean isPositive(String text);
}
public static void main(String[] args) {
// 创建一个 AI 驱动的情感分析器实例
SentimentAnalyzer sentimentAnalyzer = AiServices.create(SentimentAnalyzer.class, chatModel);
// 示例:情感分析
Sentiment sentiment = sentimentAnalyzer.analyzeSentimentOf("I love this product!");
System.out.println(sentiment); // 预期输出: POSITIVE
boolean positive = sentimentAnalyzer.isPositive("This is a terrible experience.");
System.out.println(positive); // 预期输出: false
}
}
组件解释
1. 聊天模型初始化
static ChatModel chatModel = OpenAiChatModel.withApiKey("YOUR_OPENAI_API_KEY");
- 初始化 OpenAI 聊天模型 来处理自然语言文本。
- 将
"YOUR_OPENAI_API_KEY"
替换为实际的 OpenAI API Key。
2. 定义情感类别
enum Sentiment {
POSITIVE, NEUTRAL, NEGATIVE
}
Sentiment
枚举表示可能的情感分类结果。
3. 创建 AI 驱动的情感分析器
interface SentimentAnalyzer {
@UserMessage("Analyze sentiment of {{it}}")
Sentiment analyzeSentimentOf(String text);
@UserMessage("Does {{it}} have a positive sentiment?")
boolean isPositive(String text);
}
该接口定义了两个由 AI 驱动的方法:
analyzeSentimentOf(String text)
:将文本分类为 POSITIVE、NEUTRAL 或 NEGATIVE。isPositive(String text)
:如果文本具有积极情感返回true
,否则返回false
。
4. 创建 AI 服务实例
SentimentAnalyzer sentimentAnalyzer = AiServices.create(SentimentAnalyzer.class, chatModel);
AiServices.create()
使用 AI 模型动态实现SentimentAnalyzer
接口。
5. 运行情感分析
Sentiment sentiment = sentimentAnalyzer.analyzeSentimentOf("I love this product!");
System.out.println(sentiment); // 输出: POSITIVE
boolean positive = sentimentAnalyzer.isPositive("This is a terrible experience.");
System.out.println(positive); // 输出: false
- AI 模型将文本分类到预定义的情感类别中。
isPositive()
方法返回布尔值结果。
应用场景
该情感分类服务可应用于多种场景,包括:
✅ 客户反馈分析:将客户评价分类为积极、中性或消极。
✅ 社交媒体监测:分析社交媒体评论的情感趋势。
✅ 聊天机器人回复:理解用户情感以提供更优质的回答。