原标题:非主流自然语言处理——遗忘算法系列(五):文本相似度
来源:CSDN 链接:https://blog.csdn.net/gzdmcaoyc/article/details/50202359
前文介绍了词权重的计算方法,本篇介绍词权重的另一种应用:文本相似度计算。
算法原理
文本相似度计算的方法很多,我们这里通过计算“两篇文本中都出现的词汇的权重占比”来衡量相似的程度,具体计算公式如下:
词的权重利用前文中的公式获得:
代码实现
1、统计单篇文章的词汇权重
————————————————————————————————
/// <summary>
/// 更新文章的权重词典
/// </summary>
/// <param name="mdl">文章对象,定义了:标题、正文、权重词典</param>
/// <param name="objKeyCharColl">邻键集,用于生成词库</param>
/// <param name="objKeyWordColl">词库,用于分词</param>
/// <param name="maxWordLen">分词的最大词长</param>
/// <param name="bUpdateCharBondColl">是否更新邻键集</param>
/// <param name="bUpdateKeyWordColl">是否更新词库</param>
public static void UpdateArticleWeight(ArticleMDL mdl, MemoryBondColl<string> objKeyCharColl, MemoryItemColl<string> objKeyWordColl, int maxWordLen = 7, bool bUpdateCharBondColl = true, bool bUpdateKeyWordColl = true)
{
//引用文章对象中的权重字典,用于存放统计文章中各词的权重
Dictionary<string, double> objKeyWordDict = mdl.KeyWeightDict;
//标题分词
List<string> objKeyTitleList = SegmentDAL.Segment(mdl.Title, objKeyCharColl, objKeyWordColl, maxWordLen, bUpdateCharBondColl, bUpdateKeyWordColl);
//内容分词
List<string> objKeyContentList = SegmentDAL.Segment(mdl.Content, objKeyCharColl, objKeyWordColl, maxWordLen, bUpdateCharBondColl, bUpdateKeyWordColl);
//遍历标题中的每个词
foreach (string keyWord in objKeyTitleList)
{
//权重字典中不存在该词
if (!objKeyWordDict.ContainsKey(keyWord))
{
//往词典中新增一个零权重的词
objKeyWordDict.Add(keyWord, 0);
}
//如果词库包含该词则累加(不包含则权重为零)
if (objKeyWordColl.Contains(keyWord))
{
//计算并累加一个词的权重
objKeyWordDict[keyWord] += -Math.Log(objKeyWordColl[keyWord].ValidCount / objKeyWordColl.MinuteOffsetSize);
}
}
//遍历正文中的每个词,处理过程同标题
foreach (string keyWord in objKeyContentList)
{
if (!objKeyWordDict.ContainsKey(keyWord))
{
objKeyWordDict.Add(keyWord, 0);
}
if (objKeyWordColl.Contains(keyWord))
{
objKeyWordDict[keyWord] += -Math.Log(objKeyWordColl[keyWord].ValidCount / objKeyWordColl.MinuteOffsetSize);
}
}
}
————————————————————————————————
演示程序
下载地址:遗忘算法(新闻相似度)演示程序.rar
感谢中科点击授权此演示程序开源。
版权声明:本文为CSDN博主「gzdmcaoyc」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gzdmcaoyc/article/details/50202359
一THE END一
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com