首页 > 解决方案 > 两个词有多相似?

问题描述

我想测量两个词之间的相似度。相似性将是一个用 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++similarity

解决方案


我认为最好也是唯一的方法是机器学习。如果你想用 c++ 做到这一点,那将是非常困难的。例如,我会推荐 python 和 TensorFlow。


推荐阅读