Форум программистов, компьютерный форум, киберфорум
Jack Famous
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
Рейтинг: 5.00. Голосов: 1.

Лемматизация текста в Excel

Запись от Jack Famous размещена 06.03.2023 в 10:11
Обновил(-а) Jack Famous 07.03.2023 в 10:26
Метки glossary, lemma, vba

Приветствую!

Коротко: лемма - это начальная, словарная форма слова. Леммы нужны [среди прочего] для того, чтобы "нормализовать" строки данных и найти точные совпадения там где до преобразования их не было.
Например: "вася дал маше яблоки" может быть преобразовано в "вася дать маша яблоко" и строка "василий давал машеньке яблочко" также может быть преобразовано в эту конструкцию из лемм отдельных слов. Таким образом, мы получим точное совпадение там, где раньше его не было.
Данный справочник является [например] одним из инструментов нечёткого поиска.

Справочником является переработанный словарь от OpenCorpora и состоит из 2ух версий (обе в формате txt, который можно открыть в Excel):
OpenCorpora
Переработанный xml по ссылке со структурой: лемма - варианты (кросс-таблица).
Скрин
Нажмите на изображение для увеличения
Название: OpenCorpora.PNG
Просмотров: 140
Размер:	10.8 Кб
ID:	7965
Файл
List
Так как у разных лемм могут быть общие варианты, создан плоский список "вариант-лемма" (не влезет на лист т.к. более 3 млн строк), в котором варианты не повторяются (взят первый). Именно этот список я использую для замены слов на их леммы
Скрин
Название: List.PNG
Просмотров: 1285

Размер: 6.8 Кб
Файл
На Планете есть моя тема с аналогичным названием (найти не составит труда) и подробным разбором. Ссылки на неё тут запрещены.
Размещено в Glossary
Показов 1756 Комментарии 9
Всего комментариев 9
Комментарии
  1. Старый комментарий
    Сложного, вроде ничего нет. Т.е. анализ фразы и если, например, встречается "100-й" то рандомно заменить на любое значение из столбца А соответствующее "100-й"?
    Запись от MrQwert размещена 06.03.2023 в 20:48 MrQwert вне форума
  2. Старый комментарий
    Цитата:
    Сообщение от MrQwert Просмотреть комментарий
    Сложного, вроде ничего нет. Т.е. анализ фразы и если, например, встречается "100-й" то рандомно заменить на любое значение из столбца А соответствующее "100-й"?
    типа того - смысл в том, чтобы заменить слова из строки на их леммы (если они есть). Так-то ещё нужна предварительная нормализация и очистка строки, но это всё нюансы.
    Замена не рандомная - в списке List список слов уникален и для каждого есть замена - лемма. "100-й" будет заменён на "100-й" и "100-ая" также будет заменена на "100-й".
    Запись от Jack Famous размещена 07.03.2023 в 10:23 Jack Famous вне форума
    Обновил(-а) Jack Famous 10.03.2023 в 09:58
  3. Старый комментарий
    Аватар для vantfiles
    Нюансов гораздо больше, чем кажется.

    Какая норма получится от слова "дроби" - "дробь" или "дробить"?

    Бе́лки грызут орехи. — Белки́ взбейте с сахаром.
    Это "белка" или "белок" ?

    Рекомендую словарь омонимов, увлекательное чтиво.

    Рекомендую, также, выкинуть числительные вида 12345-ого и заменить их на регулярные выражения.

    Еще хочу заметить, что в корпоре отсутствует заметное количество топонимов, а также имен-фамилий-отчеств.
    Запись от vantfiles размещена 08.03.2023 в 11:18 vantfiles вне форума
  4. Старый комментарий
    Аватар для vantfiles
    Да, и с иностранными словами там тоже беда. Попробуйте найти слова "сюрикен", "нунчаки", "цвайхендер".

    И еще пример - слова имеющие одинаковые склонения, но норму разного рода. Иванову - это Иванов или Иванова?
    Запись от vantfiles размещена 08.03.2023 в 11:25 vantfiles вне форума
  5. Старый комментарий
    Если вы спрашиваете, "какая лемма получится" — вы просто не поняли, для чего используются леммы в контексте нечёткого поиска. Я писал, что это неважно и берётся первая.
    И как вы предлагаете заменить числительные на регулярки? Можно пример? Подозреваю, что вы снова не поняли смысл нормализации.
    Насчёт "там многого нет" — никто не мешает пополнять словарь новыми парами для замены.

    У вас есть альтернативы? Все пользовательские варианты, которые я видел, мне не понравились.
    Запись от Jack Famous размещена 09.03.2023 в 10:15 Jack Famous вне форума
    Обновил(-а) Jack Famous 09.03.2023 в 10:18
  6. Старый комментарий
    Аватар для vantfiles
    >это неважно и берётся первая.
    так ваша система будет искать слово белка или слово белок ?
    >Можно пример?
    Да. [\d]+\-[ого|его|ому|ему|ым|им|ем|ом|ым]
    >У вас есть альтернативы?
    Да. Морфологический разбор. Определение нормы слова по контексту. Ну то есть - по ближайшим словам. Очень помогают предлоги.
    >никто не мешает пополнять словарь новыми парами для замены.
    Вы "сюрикен", "нунчаки" и "цвайхендер" уже добавили?
    Разница корпоры и ленты.ру составляет 1188519 слов. Нормы для них ручками будете вбивать?
    Запись от vantfiles размещена 10.03.2023 в 09:30 vantfiles вне форума
  7. Старый комментарий
    так ваша система будет искать слово белка или слово белок ?
    Какое будет в строке, то и будет искать в справочнике лемм

    Да. [\d]+\-[ого|его|ому|ему|ым|им|ем|ом|ым]
    Этим шаблоном можно выцепить число с этими окончаниями. Ок. И что дальше?

    Да. Морфологический разбор. Определение нормы слова по контексту. Ну то есть - по ближайшим словам. Очень помогают предлоги.
    Есть ли у вас пример кода для подобного разбора?

    Вы "сюрикен", "нунчаки" и "цвайхендер" уже добавили?
    Нет. Они мне не нужны.

    Разница корпоры и ленты.ру составляет 1188519 слов. Нормы для них ручками будете вбивать?
    Что за лента.ру? Это словарь? Можно его посмотреть?
    Запись от Jack Famous размещена 10.03.2023 в 09:52 Jack Famous вне форума
  8. Старый комментарий
    Аватар для vantfiles
    >Они мне не нужны.
    Тогда какова цель построения этих таблиц?
    >Что за лента.ру?
    Это новостной канал, полное собрание новостных статей которого есть в открытом доступе. Примерно 2 гигибайта.
    Запись от vantfiles размещена 14.03.2023 в 10:07 vantfiles вне форума
  9. Старый комментарий
    Тогда какова цель построения этих таблиц?
    Из шапки темы: «Леммы нужны [среди прочего] для того, чтобы "нормализовать" строки данных и найти точные совпадения там где до преобразования их не было.»

    Это новостной канал, полное собрание новостных статей которого есть в открытом доступе.
    И каким боком тогда он относится к данной теме?
    Запись от Jack Famous размещена 14.03.2023 в 10:17 Jack Famous вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru