| # tools/similarity.py | |
| from sklearn.feature_extraction.text import TfidfVectorizer | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| def is_similar(text1, text2, threshold=0.85): | |
| """ | |
| Сравнивает два текста и возвращает True, если их сходство выше порога. | |
| :param text1: Первый текст | |
| :param text2: Второй текст | |
| :param threshold: Порог сходства (по умолчанию 0.85) | |
| :return: bool | |
| """ | |
| if not text1 or not text2: | |
| return False | |
| texts = [text1.strip(), text2.strip()] | |
| vectorizer = TfidfVectorizer().fit(texts) | |
| tfidf = vectorizer.transform(texts) | |
| similarity = cosine_similarity(tfidf[0], tfidf[1])[0][0] | |
| return similarity >= threshold | |