Python 是一門高級編程語言,通常用于數據處理、人工智能、機器學習等領域。它提供了許多強大的工具和庫,用于實現各種任務。其中,詞相似度就是一項常見的任務。本文將介紹 Python 中用于計算詞相似度的三種常用方法。
1. 歐幾里得距離
def euclidean_distance(x, y): return math.sqrt(sum(pow(a-b, 2) for a, b in zip(x, y)))
歐幾里得距離是最簡單的距離計算方法。它通過計算兩個向量之間的每個維度之差的平方和再開根號得到距離。這個方法的優點在于簡單易懂,但它對于高維數據和稀疏數據的效果并不好。
2. 余弦相似度
def cosine_similarity(x, y): numerator = sum(a*b for a, b in zip(x, y)) denominator = math.sqrt(sum(pow(a, 2) for a in x)) * math.sqrt(sum(pow(b, 2) for b in y)) return numerator / denominator
余弦相似度是計算兩個向量之間夾角的余弦值。這個方法的優點在于對于高維數據和稀疏數據的效果比歐幾里得距離好。但這個方法也有一個缺點,就是它無法處理詞的重要性。
3. TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer docs = ['this is a test', 'this is another test', 'yet another test'] tfidf = TfidfVectorizer().fit_transform(docs) print((tfidf * tfidf.T).A)
TF-IDF 是一種常用的文本相似度計算方法。它首先計算每個單詞在所有文檔中的出現頻率,然后根據其在文檔中的頻率和在所有文檔中的頻率計算單詞的重要性。最后,可以用向量表示每個文檔。在 Python 中,可以使用TfidfVectorizer
類計算文檔相似度。
總之,Python 提供了許多計算詞相似度的方法。你應該選擇最適合你的數據的方法。