













在C#中,如果不调用外部AI服务,可以通过以下几种本地方式来判断两个词是否属于同一类别或列表:
如果只是简单的固定列表匹配,可以直接使用 Contains 或 Equals 方法:
List<string> category1 = new List<string> { "班级排名", "年级排名" };
string input = "年排";
bool isMatch = category1.Any(x => x.Contains(input) || input.Contains(x));
// 或者更严格的匹配
bool isExactMatch = category2.Contains(input);
如果词可能有缩写、近义词或拼写差异,可以使用 字符串相似度算法,如:
示例(使用 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}");
}
如果词有固定模式(如“XX排名”),可以用正则表达式:
string input = "年排";
bool isMatch = Regex.IsMatch(input, @"(班|年)级?排名?");
如果有本地词向量库(如 Word2Vec、FastText 的预训练模型),可以计算词相似度:
// 示例:使用 TensorFlow.NET 或 ML.NET 加载本地词向量模型(较复杂)
// 需要提前训练或下载词向量文件
最简单的方式是 FuzzySharp,安装命令:
Install-Package FuzzySharp
这样可以避免调用AI,完全在本地运行。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。