惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园_首页
小众软件
小众软件
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
U
Unit 42
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗

博客园 - 青山下

安装大龙虾 OpenClaw出现错误提示的相关解决办法:npm.ps1 进行数字签名。无法在当前系 统上运行该脚本。有关运行脚本和设置执行策略的详细信息 mysql57下载地址 Working with Ace,ace web编辑器,一款可以语法高亮的牛逼编辑器 合并多个Excel文件,并且保持原表格的数字格式 18年了,注册18年了,还在做一线开发 hutool工具JSONUtil序列化对象和反序列化到Map的时候,null的值因为JSONNull无法转换而报错 jdk8:alpine没有bash,所以会报:no such file or directory,如何解决? RSA密钥格式转换:java->.net、.net->java dify相关文档 好玩的找不到页面设计:html5 svg太空人404动画模板 C#版本的sha256withRSA 私钥签名,公钥验签 方法,java<->.net通用 nginx负载均衡 C++内存扫描 快速将下划线字段改为驼峰字段 Mybatis-Plus 如何通过sql命令对数据库中的数据重新排序 网页打印的时候,去掉页眉和页脚的方法 调用文心一言画画 2023-12-28前几天很冷,今天不是很冷
如果词可能有缩写、近义词或拼写差异,可以使用 字符串相似度...
青山下 · 2025-04-16 · via 博客园 - 青山下

在C#中,如果不调用外部AI服务,可以通过以下几种本地方式来判断两个词是否属于同一类别或列表:

1. 字符串精确匹配(完全匹配)

如果只是简单的固定列表匹配,可以直接使用 ContainsEquals 方法:

List<string> category1 = new List<string> { "班级排名", "年级排名" };
string input = "年排";

bool isMatch = category1.Any(x => x.Contains(input) || input.Contains(x));
// 或者更严格的匹配
bool isExactMatch = category2.Contains(input);

2. 模糊匹配(相似度计算)

如果词可能有缩写、近义词或拼写差异,可以使用 字符串相似度算法,如:

  • Levenshtein Distance(编辑距离)
  • Jaro-Winkler Distance
  • Cosine Similarity(词向量方式,但需要本地词库)

示例(使用 FuzzySharp 库,需安装 FuzzySharp NuGet 包):

using FuzzySharp;

List<string> category = new List<string> { "班级排名", "年级排名" };
string input = "年排";

// 返回相似度最高的词
var bestMatch = Process.ExtractOne(input, category, scorer: ScorerCache.Get<PreparedRatioScorer>());
if (bestMatch.Score > 80)  // 设定阈值,如80%
{
    Console.WriteLine($"匹配到: {bestMatch.Value}");
}

3. 正则表达式(模式匹配)

如果词有固定模式(如“XX排名”),可以用正则表达式:

string input = "年排";
bool isMatch = Regex.IsMatch(input, @"(班|年)级?排名?");

4. 本地词向量(Word Embeddings)

如果有本地词向量库(如 Word2VecFastText 的预训练模型),可以计算词相似度:

// 示例:使用 TensorFlow.NET 或 ML.NET 加载本地词向量模型(较复杂)
// 需要提前训练或下载词向量文件

推荐方案

  • 如果词表固定且简单 → 方法1(精确匹配)
  • 如果有缩写或相似词 → 方法2(FuzzySharp)
  • 如果涉及复杂语义 → 方法4(本地词向量,但实现较复杂)

最简单的方式是 FuzzySharp,安装命令:

Install-Package FuzzySharp

这样可以避免调用AI,完全在本地运行。