удалить строки различающиеся по одному символу

12
iccup
На сайте с 01.05.2016
Offline
195
230
Как удалить строки различающиеся по одному символу?
kimsufi.com ( https://www.kimsufi.com ) очень дешевые и качественные дедики https://clck.ru/gvF9p - антибот, использую уже 3 года.
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1
по одному снизу, справа, слева? Примеры покажите.
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Selmak
На сайте с 15.03.2019
Offline
101
#2

Перебрать регулярным выражением в котором будет совпадать все кроме различий. Как вариант. 

Ну точнее в этом случае и вбить этот символ в регулярное выражение. 

iccup
На сайте с 01.05.2016
Offline
195
#3

да ключи перебираю, встречаются такие строки, например -

stupid face wallpaper

stupid faces wallpaper

Алеандр
На сайте с 08.12.2010
Offline
183
#4
iccup #:

да ключи перебираю, встречаются такие строки, например -

Если это все разные фразы, разные ключи и, собственно, разница между ними не известна, то только сложный алгоритм построчного сравнения с просчетом % совпадения и смешения. Тогда можно будет отсортировать те строки, которые похожи друг на друга до определенной степени.

T7
На сайте с 19.09.2018
Offline
63
#5
iccup #:

stupid face wallpaper

stupid faces wallpaper

Алеандр #:
то только сложный алгоритм

Подумаешь, бином Ньютона. Питон. На пыхе, сложнее, только потому, что морф. анализаторов годных не видно. Этот 9 лет назад обновлялся.

(pyenv) [www@localhost ~]$ python
Python 3.9.0 (default, Nov 14 2020, 12:28:09)
[GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import spacy
>>> nlp = spacy.load("en_core_web_sm")
>>> def en_lemm(doc):
...     res = []
...     for token in doc:
...             res.append(token.lemma_)
...     return '_'.join(sorted(res))
...
>>> st = (
...      'stupid face wallpaper',
...      'stupid faces wallpaper'
...     )
>>>
>>> res = {}
>>> print(st)
('stupid face wallpaper', 'stupid faces wallpaper')
>>> for s in st:
...     did = en_lemm(nlp(s))
...     if did not in res:
...             res[did] = [s]
...     else:
...             res[did].append( s )
...
>>> print(res)
{'face_stupid_wallpaper': ['stupid face wallpaper', 'stupid faces wallpaper']}

Слова в нормальную форму, фразу сортируем и ид для ключа готов.

heromantor/phpmorphy
heromantor/phpmorphy
  • heromantor
  • github.com
Contribute to heromantor/phpmorphy development by creating an account on GitHub.
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
<?php
$sim = similar_text('stupid face wallpaper', 'stupid faces wallpaper', $perc);
echo $perc;
Выдаст 97% схожести. От этого и можно плясать сравнивая строки.
Алеандр
На сайте с 08.12.2010
Offline
183
#7
timo-71 #:
Слова в нормальную форму, фразу сортируем и ид для ключа готов.

Кому-то и 2x2 сложно. Это уже не regexp, в любом случае потребует минимума знаний программирования, составления алгоритма обхода всех строк, построчных сравнений, принятия решения по точности. Для пыхи дали выше пример, еще проще. Но, это лишь в том случае, если погрешностями в расчетах можно пренебречь и точность исходящих строк не сильно важна, а язык и его особенности не существенны. Тогда да, проще, соглашусь.

W1
На сайте с 22.01.2021
Offline
284
#8
Ещё Левенштейн есть.
Мой форум - https://webinfo.guru –Там я всегда на связи
T7
На сайте с 19.09.2018
Offline
63
#9
Алеандр #:
Для пыхи дали выше пример, еще проще. Но, это лишь в том случае, если погрешностями в расчетах можно пренебречь и точность исходящих строк не сильно важна, а язык и его особенности не существенны. Тогда да, проще, соглашусь.

Пример не решает типовую задачу для ключей.  Их обычно 100500. Да и простая перестановка слов загонит  в тупик.

php > $sim = similar_text('stupid face wallpaper', 'stupid faces wallpaper', $perc);
php > print $perc;
97.674418604651
php > $sim = similar_text('wallpaper stupid face', 'stupid faces wallpaper', $perc);
php > print $perc;
51.162790697674

Про Левенштейна просто промолчу.

Ну вот для примера  1000 отсортировать по  "!Частотность !Весь !мир"

engine_wallpaper
{'cnt': 34949, 'keys': [('wallpaper engine', 34949)]}
wallpaper
{'cnt': 12655, 'keys': [('wallpaper', 12655)]}
4k_wallpaper
{'cnt': 3288, 'keys': [('4k wallpaper', 1644), ('wallpaper 4k', 1644)]}
anime_wallpaper
{'cnt': 2510, 'keys': [('anime wallpaper', 1255), ('wallpaper anime', 1255)]}
aesthetic_wallpaper
{'cnt': 2496,
'keys': [('aesthetic wallpaper', 1243),
          ('wallpaper aesthetic', 1243),
          ('aesthetics wallpaper', 10)]}
wallpaper_скачать
{'cnt': 1717, 'keys': [('скачать wallpaper', 844), ('wallpaper скачать', 873)]}
hd_wallpaper
{'cnt': 1522, 'keys': [('hd wallpaper', 761), ('wallpaper hd', 761)]}
live_wallpaper
{'cnt': 1174, 'keys': [('wallpaper live', 587), ('live wallpaper', 587)]}
wallpaper_обои
{'cnt': 1119, 'keys': [('wallpaper обои', 557), ('обои wallpaper', 562)]}

Ключевые слова, найденные по вашему запросу
Ключевые слова, найденные по вашему запросу
  • www.bukvarix.com
Для подбора поисковых запросов в режиме простого поиска введите в поисковую строку слово или словосочетание, которое вы хотите расширить за счет подбора словосочетаний, содержащих ваши поисковые слова. По умолчанию производится поиск с поддержкой словоформ слов для поиска и слов для исключения. Это значит, что при поиске, например, ключевого...
W1
На сайте с 22.01.2021
Offline
284
#10
timo-71 #:
Про Левенштейна просто промолчу

И правильно сделаете. Просто надо ещё раз прочитать стартпост, и не пытаться изобрести нейросеть.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий