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: |

But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." Ng Man-ho, a 27-year-old computer technician, was convicted last month of seven counts of incitement charges after he made use of the 100,000-member Chinese-language channel that he runs and manages to post "seditious messages," which had been shut down since August 2020. Deputy District Judge Peter Hui sentenced computer technician Ng Man-ho on Thursday, a month after the 27-year-old, who ran a Telegram group called SUCK Channel, was found guilty of seven charges of conspiring to incite others to commit illegal acts during the 2019 extradition bill protests and subsequent months. Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations.
from us


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