3步搞定文本智能处理:Semantic Kernel让AI轻松理解你的文字
你还在为文本处理效率低而烦恼?客户反馈邮件太多来不及分类?长篇文档摘要写得头晕眼花?Semantic Kernel(语义内核)让这一切变得简单!作为微软开源的AI编排框架,它能帮你轻松构建理解文字含义的智能应用,无需复杂的自然语言处理(NLP)知识。读完本文,你将掌握文本分块、语义理解和智能插件三大核心技能,让AI真正懂你的文字。
为什么需要Semantic Kernel?
在信息爆炸的时代,每天面对成百上千封邮件、文档和消息,人工处理不仅耗时还容易出错。传统的文本处理工具只能简单匹配关键词,而Semantic Kernel通过**语义向量(Embeddings)**技术,让计算机像人一样理解文字含义。
THE 0TH POSITION OF THE ORIGINAL IMAGE
语义向量(Embeddings):将文字转化为高维空间中的向量,相似含义的文字距离更近。就像"苹果"和"水果"在向量空间中距离很近,而和"汽车"距离较远。详细原理见官方文档。
Semantic Kernel已被微软、Adobe等企业用于智能客服、文档分析等场景,处理效率提升高达70%。现在,你也可以用它构建自己的文本智能处理工具。
第一步:智能文本分块——让AI"消化"长文本
处理长篇文档时,AI往往因"记忆力有限"而遗漏关键信息。Semantic Kernel的文本分块器能自动将长文本切割成AI能理解的小片段,同时保持语义完整。
分块核心代码
Python开发者可以直接使用text_chunker.py中的工具函数:
from semantic_kernel.text.text_chunker import split_plaintext_paragraph
# 读取长文档
with open("长篇报告.txt", "r", encoding="utf-8") as f:
long_text = f.readlines()
# 按语义切割(默认每块约200词)
chunks = split_plaintext_paragraph(
text=long_text,
max_tokens=200 # 可根据AI模型调整
)
print(f"分块完成,共{len(chunks)}块")
分块策略
Semantic Kernel采用"智能切割"策略,优先按段落、句子分割,最后才按词语分割:
# 文本分割优先级(源码片段)
TEXT_SPLIT_OPTIONS = [
["\n", "\r"], # 优先按换行分割
["."], # 再按句号分割
["?", "!"], # 问号和感叹号
[";"], [":"], # 分号和冒号
[","], # 逗号
[" "], # 空格
None # 最后按字符分割
]
查看完整实现:text_chunker.py
第二步:语义理解——让AI"读懂"文字含义
分块后的文本需要转化为计算机能理解的语义向量。Semantic Kernel提供统一接口,支持Azure生成式AI服务、本地Ollama等多种模型。
快速上手代码
import asyncio
from semantic_kernel.connectors.ai.open_ai import AzureTextEmbedding
from semantic_kernel.memory import SemanticTextMemory
async def main():
# 初始化嵌入模型(以Azure为例)
embedding_model = AzureTextEmbedding(
deployment_name="text-embedding-ada-002",
endpoint="YOUR_AZURE_ENDPOINT",
api_key="YOUR_API_KEY"
)
# 创建语义内存
memory = SemanticTextMemory(storage=None, embeddings_generator=embedding_model)
# 存储文档块到内存
for i, chunk in enumerate(chunks):
await memory.save_information(
collection="report",
text=chunk,
id=f"chunk_{i}"
)
# 搜索相似内容
results = await memory.search("报告中的成本数据", limit=3)
for result in results:
print(f"相似度: {result.relevance:.2f}, 内容: {result.text[:50]}...")
asyncio.run(main())
支持的向量操作
Semantic Kernel提供三种常用向量相似度计算方法:
第三步:插件扩展——5分钟添加文本处理功能
Semantic Kernel的插件系统让你轻松扩展文本处理能力。社区已提供分类、摘要、翻译等数十种现成插件。
使用摘要插件
-
下载插件模板:从prompt_template_samples获取
-
查看提示模板:Summarize/skprompt.txt定义了摘要规则:
[SUMMARIZATION RULES]
DONT WASTE WORDS
USE SHORT, CLEAR, COMPLETE SENTENCES.
DO NOT USE BULLET POINTS OR DASHES.
USE ACTIVE VOICE.
MAXIMIZE DETAIL, MEANING
FOCUS ON THE CONTENT
[BANNED PHRASES]
This article
This document
This page
This material
[END LIST]
Summarize this
{{$input}}
+++++
- 调用摘要功能:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
# 创建内核
kernel = Kernel()
kernel.add_chat_service(
"azure_chat",
AzureChatCompletion(
deployment_name="gpt-35-turbo",
endpoint="YOUR_ENDPOINT",
api_key="YOUR_KEY"
)
)
# 导入摘要插件
summarize_plugin = kernel.import_semantic_plugin_from_directory(
"prompt_template_samples", "SummarizePlugin"
)
# 运行摘要
result = kernel.run(
summarize_plugin["Summarize"],
input="需要摘要的长文本内容..."
)
print(result)
自定义文本处理插件
- 创建插件目录结构:
MyTextPlugin/
├── SentimentAnalysis/
│ ├── config.json
│ └── skprompt.txt
- 编写情感分析提示词(skprompt.txt):
分析以下文本的情感倾向(积极/消极/中性),并给出情感分数(0-10分):
{{$input}}
输出格式:情感: [积极/消极/中性], 分数: [0-10]
- 在代码中使用:
my_plugin = kernel.import_semantic_plugin_from_directory(
"path/to/plugins", "MyTextPlugin"
)
result = kernel.run(my_plugin["SentimentAnalysis"], input="这部电影太精彩了!")
完整案例:智能邮件分类系统
将上述三步结合,构建一个自动分类客户邮件的系统:
# 伪代码流程
1. 读取未分类邮件 → 调用split_plaintext_paragraph分块
2. 对每封邮件生成语义向量 → 存储到向量数据库
3. 使用分类插件识别邮件意图(投诉/咨询/建议)
4. 根据意图自动分配给对应部门
# 核心插件调用
classify_result = kernel.run(
classify_plugin["ClassifyEmail"],
input=email_content
)
print(f"邮件分类: {classify_result}") # 输出:投诉-产品质量
总结与进阶
通过本文介绍的三个步骤,你已掌握Semantic Kernel文本处理的核心能力:
- 智能分块:用
text_chunker切割长文本 - 语义理解:用
SemanticTextMemory实现相似搜索 - 插件扩展:用提示词模板快速开发文本功能
进阶学习资源
常见问题
-
Q: 分块大小如何设置?
A: 建议根据模型上下文窗口调整,GPT-3.5通常设200-300词/块 -
Q: 本地部署需要哪些条件?
A: 安装Ollama后,使用OllamaTextEmbedding替代Azure服务
更多问题见FAQ文档
现在就动手试试吧!用Semantic Kernel构建你的第一个文本智能处理应用,让AI成为你的文字处理助手。如果觉得本文有用,别忘了点赞收藏,关注获取更多Semantic Kernel实战技巧!
项目地址:https://link.gitcode.com/i/455cd8679b84ef31f46e5d3a17ec03a7
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



