powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нормализация строк
12 сообщений из 37, страница 2 из 2
Нормализация строк
    #40104649
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот суффикс типа

Код: sql
1.
4 месяцев 100.000 г



тоже может сильно изменить формулу дистанции. Могут быть ложные срабатывания для других товаров.

Кстати этот similarity(..) какой алгоритм использует?
...
Рейтинг: 0 / 0
Нормализация строк
    #40104696
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Погуглил немного, вот реальные наименования из предложений в инете:
А есть еще такие:
Можно еще поискать
Dima , Ы2, отставить спам, отставить брутальную рекламу брэнда ... ))
...
Рейтинг: 0 / 0
Нормализация строк
    #40104705
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Dima T
Погуглил немного, вот реальные наименования из предложений в инете:
А есть еще такие:
Можно еще поискать
Dima , Ы2, отставить спам, отставить брутальную рекламу брэнда ... ))

Что первое гугл выдал, то и скопипастил. Хорошо в рекламу вкладываются видать. Так что наше упоминание им продажи не увеличит.
А в остальном этот бренд гадость редкостная, когда дети маленькие были жена говорила не брать его ни при каком раскладе
...
Рейтинг: 0 / 0
Нормализация строк
    #40104712
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Могут быть ложные срабатывания для других товаров.
А как определить близость 1 кг помидоров и 1 кг томатов?
У нас в Перекрёстки с недавних лет помидоров не стало, их постепенно вытеснили томаты. А так хочется помидорчиков!
А что в других регионах?
...
Рейтинг: 0 / 0
Нормализация строк
    #40104714
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вот этот суффикс типа
Код: sql
1.
4 месяцев 100.000 г

Наверняка это другие поля из БД, тогда на них метрика не распространится. А "чеснок фасованный" и в развес ??
Не знаю новейших практик. М.б. подобное уже зашивают в классификациютоварных групп?
Например одежда изначально классифицировалась матрично: цвето-размер.

Прикол по случаю
В маге на стенке есть считыватели штрих-кода, чтоб мы сами цену узнавали. Иногда они зависают. Раз я взял и перезапустил девайс, а там загрузился маленький Виндовс. Не помню, то ли через "Пуск" загрузил прогу, или не удалось...
...
Рейтинг: 0 / 0
Нормализация строк
    #40104719
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Можно тут найти похожие слова для "помидор" https://rusvectores.org/
авторогурец 0.775
морковь 0.726
овощ 0.711
баклажан 0.706
капуста 0.704
арбуз 0.701
салат 0.690
чеснок 0.687
томат 0.684
фасоль 0.670

Помидор больше похож на огурец, чем на томат. На этот случай наверное нужен свой словарь синонимов
...
Рейтинг: 0 / 0
Нормализация строк
    #40104727
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вот этот суффикс типа
Код: sql
1.
4 месяцев 100.000 г


тоже может сильно изменить формулу дистанции. Могут быть ложные срабатывания для других товаров.

Кстати этот similarity(..) какой алгоритм использует?


Это функция из расширения pg_trgm для PostgreSQL. Разбирает строки на буквенные триграммы и считает долю общих.
...
Рейтинг: 0 / 0
Нормализация строк
    #40104818
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
    val src = """    Пюре ФрутоНяня Яблоко с 4 месяцев 100.000 г
      Пюре ФрутоНяня Груша с 4 месяцев 100.000 г
      Пюре ФрутоНяня Яблоко с 4 месяцев 100.000 г
      Фрутоняня пюре 100 г груша/яблоко
    Фрутоняня пюре 100 г груша/яблоко
    ФРУТОНЯНЯ ПЮРЕ ЯБЛОЧНОЕ 100.0
    Фрутоняня пюре 100 г груша/яблоко
    ФрутоНяня Пюре яблоко натур 100г N 1
    Фрутоняня пюре 100 г груша/яблоко
    Пюре ФрутоНяня Груша с 4 месяцев 100.000 г
      ФРУТОНЯНЯ ПЮРЕ ЯБЛОЧНОЕ 100.0
    ФрутоНяня Пюре яблоко натур 100г N 1
    Пюре ФрутоНяня Яблоко с 4 месяцев 100.000 г
      ФРУТОНЯНЯ ПЮРЕ ЯБЛОЧНОЕ 100.0
    ФрутоНяня Пюре яблоко натур 100г N 1
    Пюре ФрутоНяня Яблоко с 4 месяцев 100.000 г
      Пюре ФрутоНяня Груша с 4 месяцев 100.000 г
      ФРУТОНЯНЯ ПЮРЕ ЯБЛОЧНОЕ 100.0
    ФрутоНяня Пюре яблоко натур 100г N 1
    Пюре ФрутоНяня Груша с 4 месяцев 100.000 г"""

    val expressions : Array[String] = src.split("\n")
      .map(x => x.trim)
      .map(x => x.toLowerCase())
      .distinct

    println(s"Filtered size : ${expressions.length}")

    expressions.foreach(x => println(s">> $x"))

    import org.apache.commons.text.similarity.LevenshteinDistance
    val distFunc = new LevenshteinDistance()

    for(x <- 0 until expressions.length; y <- 0 until expressions.length) {
      if (x < y) {
        val dist = distFunc.apply(expressions(x), expressions(y))
        println(s"Levenstein distance from (${expressions(y)} - ${expressions(x)}) is $dist")
      }
    }



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
>> пюре фрутоняня яблоко с 4 месяцев 100.000 г
>> пюре фрутоняня груша с 4 месяцев 100.000 г
>> фрутоняня пюре 100 г груша/яблоко
>> фрутоняня пюре яблочное 100.0
>> фрутоняня пюре яблоко натур 100г n 1
Levenstein distance from (пюре фрутоняня груша с 4 месяцев 100.000 г - пюре фрутоняня яблоко с 4 месяцев 100.000 г) is 6
Levenstein distance from (фрутоняня пюре 100 г груша/яблоко - пюре фрутоняня яблоко с 4 месяцев 100.000 г) is 31
Levenstein distance from (фрутоняня пюре яблочное 100.0 - пюре фрутоняня яблоко с 4 месяцев 100.000 г) is 25
Levenstein distance from (фрутоняня пюре яблоко натур 100г n 1 - пюре фрутоняня яблоко с 4 месяцев 100.000 г) is 26
Levenstein distance from (фрутоняня пюре 100 г груша/яблоко - пюре фрутоняня груша с 4 месяцев 100.000 г) is 30
Levenstein distance from (фрутоняня пюре яблочное 100.0 - пюре фрутоняня груша с 4 месяцев 100.000 г) is 24
Levenstein distance from (фрутоняня пюре яблоко натур 100г n 1 - пюре фрутоняня груша с 4 месяцев 100.000 г) is 27
Levenstein distance from (фрутоняня пюре яблочное 100.0 - фрутоняня пюре 100 г груша/яблоко) is 18
Levenstein distance from (фрутоняня пюре яблоко натур 100г n 1 - фрутоняня пюре 100 г груша/яблоко) is 19
Levenstein distance from (фрутоняня пюре яблоко натур 100г n 1 - фрутоняня пюре яблочное 100.0) is 12
...
Рейтинг: 0 / 0
Нормализация строк
    #40104859
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, как это следует интерпретировать?

Вот другой пример:
Код: sql
1.
2.
3.
4.
select 
	similarity('фрутоняня пюре яблоко натур 100г n 1', 'натур пюре фрутоняня яблоко 100г n 1'),
	levenshtein('фрутоняня пюре яблоко натур 100г n 1', 'натур пюре фрутоняня яблоко 100г n 1')
;



similaritylevenshtein122
...
Рейтинг: 0 / 0
Нормализация строк
    #40104875
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2

Вот другой пример:
Код: sql
1.
2.
3.
4.
select 
	similarity('фрутоняня пюре яблоко натур 100г n 1', 'натур пюре фрутоняня яблоко 100г n 1'),
	levenshtein('фрутоняня пюре яблоко натур 100г n 1', 'натур пюре фрутоняня яблоко 100г n 1')
;



similaritylevenshtein122

Как я понимаю, функция levenshtein просто считает РЛ для переданных строк, это не совсем верный подсчет РЛ (в контексте топика): в случае, когда строка содержит несколько слов, нужно составить матрицу расстояний между словами, потом искать по ней порядок слов, при котором сумма РЛ будет минимальной, возможно, увеличивая результат при перестановке слов.
...
Рейтинг: 0 / 0
Нормализация строк
    #40104915
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Левенштейн - редакционное расстояние между текстами. Я точно не помню
какая формула метрики - но кажется берется удаление + перенос символов + вставка.

В данном случае similarity сработал лучше (похоже на 1-й алгоритм который я предлагал выше) без учота перемещения лексем внутри sentence.

Кажется этого-же эффекта мы могли добиться сортируя слова в фильтрации.
...
Рейтинг: 0 / 0
Нормализация строк
    #40104955
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, РЛ = вставки + замены + удаления; обычно можно настраивать вклад каждой категории.

Все это время я пытался наглядно показать, что для нечеткого поиска N-граммы — триграммы как частный случай — всегда лучше расстояния Левенштейна. Само по себе РЛ неинформативно, пока не знаешь длины строки: РЛ = 2 между «рыба» и «глыба» (заведомо разные), между «заяц плюшевый большой» и «зайц плюшевый болшой» (неграмотность и опечатка), а так же между «ваш звонок очень важен для нас» и «наш звонок очень важен для вас» (тут и триграммы бессильны).
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нормализация строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]