PYPROGLIB Telegram 7026
🔎 Текстовая схожесть: от regex до нейросетей

В реальном мире строки редко совпадают «под копирку».
Например:
"aPpLe iPhone® 14 Pro Max"
"iphone 14 pro max"


Вопрос — чем сравнивать? Ответ зависит от того, что именно вы хотите поймать.

1️⃣ Regex — чистим шум по шаблону

Идеален как первый шаг: убрать мусор, стандартизировать формат.
import re
def clean(t):
t = t.lower()
t = re.sub(r"[®©]", "", t)
return re.sub(r"\s+", " ", t).strip()

clean("iPhone® 14 Pro Max")
# 'iphone 14 pro max'


Приводит строки к общему виду
✖️ Не знает, что «наушники» и «headphones» — это одно и то же

2️⃣ difflib — встроенный baseline

Умеет считать похожесть на уровне символов. Отлично для быстрого «на коленке».
from difflib import SequenceMatcher
SequenceMatcher(None, "iphone 14 pro max", "i phone 14 pro max").ratio()
# 0.97


Ловит пробелы и опечатки
✖️ Путается, если слова меняются местами

3️⃣ RapidFuzz — быстрый и умный fuzzy

Оптимизированный под скорость и адекватнее реагирует на перестановку слов.

from rapidfuzz import fuzz
fuzz.WRatio("apple iphone 14 pro max", "iphone 14 pro max apple")
# 95


Справляется с разным порядком слов и лишними словами
✖️ Для него «wireless headphones» и «bluetooth earbuds» — разные вещи

4️⃣ Sentence Transformers — смысл > буквы

Нейросети, которые понимают значение, а не только текстовый паттерн.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

m = SentenceTransformer('all-MiniLM-L6-v2')
cosine_similarity(
[m.encode("wireless headphones")],
[m.encode("bluetooth earbuds")]
)[0][0]
# 0.75


Понимает синонимы и концептуальную близость
✖️ Требует ресурсов, особенно на больших данных

➡️ Как выбирать:
re → всегда первым шагом
difflib → мелкие задачи без зависимостей
RapidFuzz → продакшн, большие объёмы, сложные текстовые вариации
Sentence Transformers → смысл важнее скорости, есть GPU

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍4🔥2



tgoop.com/pyproglib/7026
Create:
Last Update:

🔎 Текстовая схожесть: от regex до нейросетей

В реальном мире строки редко совпадают «под копирку».
Например:

"aPpLe iPhone® 14 Pro Max"
"iphone 14 pro max"


Вопрос — чем сравнивать? Ответ зависит от того, что именно вы хотите поймать.

1️⃣ Regex — чистим шум по шаблону

Идеален как первый шаг: убрать мусор, стандартизировать формат.
import re
def clean(t):
t = t.lower()
t = re.sub(r"[®©]", "", t)
return re.sub(r"\s+", " ", t).strip()

clean("iPhone® 14 Pro Max")
# 'iphone 14 pro max'


Приводит строки к общему виду
✖️ Не знает, что «наушники» и «headphones» — это одно и то же

2️⃣ difflib — встроенный baseline

Умеет считать похожесть на уровне символов. Отлично для быстрого «на коленке».
from difflib import SequenceMatcher
SequenceMatcher(None, "iphone 14 pro max", "i phone 14 pro max").ratio()
# 0.97


Ловит пробелы и опечатки
✖️ Путается, если слова меняются местами

3️⃣ RapidFuzz — быстрый и умный fuzzy

Оптимизированный под скорость и адекватнее реагирует на перестановку слов.

from rapidfuzz import fuzz
fuzz.WRatio("apple iphone 14 pro max", "iphone 14 pro max apple")
# 95


Справляется с разным порядком слов и лишними словами
✖️ Для него «wireless headphones» и «bluetooth earbuds» — разные вещи

4️⃣ Sentence Transformers — смысл > буквы

Нейросети, которые понимают значение, а не только текстовый паттерн.
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

m = SentenceTransformer('all-MiniLM-L6-v2')
cosine_similarity(
[m.encode("wireless headphones")],
[m.encode("bluetooth earbuds")]
)[0][0]
# 0.75


Понимает синонимы и концептуальную близость
✖️ Требует ресурсов, особенно на больших данных

➡️ Как выбирать:
re → всегда первым шагом
difflib → мелкие задачи без зависимостей
RapidFuzz → продакшн, большие объёмы, сложные текстовые вариации
Sentence Transformers → смысл важнее скорости, есть GPU

🐸 Библиотека питониста

#буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/7026

View MORE
Open in Telegram


Telegram News

Date: |

Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place. The Standard Channel According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. ‘Ban’ on Telegram Just as the Bitcoin turmoil continues, crypto traders have taken to Telegram to voice their feelings. Crypto investors can reduce their anxiety about losses by joining the “Bear Market Screaming Therapy Group” on Telegram.
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American