c++ - 两个词有多相似?
问题描述
我想测量两个词之间的相似度。相似性将是一个用 c++ 编写的函数,它返回一个介于 0 和 1 之间的浮点数。如果两个词非常相似,那么浮点数将接近 1,如果它们非常不同,那么它将接近 0。例如,“分析”和“分析”可能返回 0.95,“减法”和“描述”可能返回接近 0 的值。我如何在 C++ 中做到这一点。
试图:
float similarity(const std::string& word1, const std::string& word2) const{
const std::size_t len1 = word1.size();
const std::size_t len2 = word2.size();
float score = 0;
for(size_t i = 0; i<std::min(len1,len2);i++){
score += (float)(word1[i]==word2[i])/len1;
}
return score;
}
好吗?我能做得更好吗?我在这里不需要机器学习。这只是为了测试目的,但我也不能让它太糟糕。上面的尝试是可以的,但是还不够。
解决方案
我认为最好也是唯一的方法是机器学习。如果你想用 c++ 做到这一点,那将是非常困难的。例如,我会推荐 python 和 TensorFlow。
推荐阅读
- c++ - 发现一个或多个意外的 \r (^M);最好只使用 \n [空格/换行符] [1]?
- javascript - HTML“禁用”HTML输入的空格键
- ios - 在“IOS”中使用“rn-fetch-blob”上传图像的问题
- javascript - 函数内部的函数不起作用。我是否缺少退货声明?
- qgis - QGIS:为我的项目创建 HTML 网络地图时出现问题
- apache-kafka - 基于安装的 Confluent Operator:可从本地计算机访问 k8 集群
- r - R中.xlsx文件中的日期问题
- java - Java OpenGL未正确绘制垂直线
- c# - 如何根据 Combobox Selection 记录在 ButtonClick 中存储文件位置?
- javascript - 按住按钮时递增 - 材质 ui