3步搞定文本智能处理:Semantic Kernel让AI轻松理解你的文字

3步搞定文本智能处理:Semantic Kernel让AI轻松理解你的文字

【免费下载链接】semantic-kernel Integrate cutting-edge LLM technology quickly and easily into your apps 【免费下载链接】semantic-kernel 项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernel

你还在为文本处理效率低而烦恼?客户反馈邮件太多来不及分类?长篇文档摘要写得头晕眼花?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的插件系统让你轻松扩展文本处理能力。社区已提供分类、摘要、翻译等数十种现成插件。

使用摘要插件

  1. 下载插件模板:从prompt_template_samples获取

  2. 查看提示模板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}}
+++++
  1. 调用摘要功能
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)

自定义文本处理插件

  1. 创建插件目录结构:
MyTextPlugin/
├── SentimentAnalysis/
│   ├── config.json
│   └── skprompt.txt
  1. 编写情感分析提示词(skprompt.txt):
分析以下文本的情感倾向(积极/消极/中性),并给出情感分数(0-10分):
{{$input}}
输出格式:情感: [积极/消极/中性], 分数: [0-10]
  1. 在代码中使用:
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文本处理的核心能力:

  1. 智能分块:用text_chunker切割长文本
  2. 语义理解:用SemanticTextMemory实现相似搜索
  3. 插件扩展:用提示词模板快速开发文本功能

进阶学习资源

常见问题

  • Q: 分块大小如何设置?
    A: 建议根据模型上下文窗口调整,GPT-3.5通常设200-300词/块

  • Q: 本地部署需要哪些条件?
    A: 安装Ollama后,使用OllamaTextEmbedding替代Azure服务

更多问题见FAQ文档

现在就动手试试吧!用Semantic Kernel构建你的第一个文本智能处理应用,让AI成为你的文字处理助手。如果觉得本文有用,别忘了点赞收藏,关注获取更多Semantic Kernel实战技巧!

项目地址:https://link.gitcode.com/i/455cd8679b84ef31f46e5d3a17ec03a7

【免费下载链接】semantic-kernel Integrate cutting-edge LLM technology quickly and easily into your apps 【免费下载链接】semantic-kernel 项目地址: https://gitcode.com/GitHub_Trending/se/semantic-kernel

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值