2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему
 
 как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 10:11 


28/11/11
2883
Пусть есть фраза
Код:
"Конечно, большие конфеты лучше!" -- сказала она и взяла большую конфету.

Пусть нас интересует частотность встречающихся 2-грамм слов (хотя хотим потом работать с любыми N-граммами). Лемматизируем нашу фразу:
Код:
"конечно, большой конфета хорошо!" -- сказать она и взять большой конфета.

Удаляем лишние знаки препинания:
Код:
конечно большой конфета хорошо сказать она и взять большой конфета

Разбиваем на 2-граммы:
Код:
[конечно большой] [большой конфета] [конфета хорошо] [хорошо сказать] [сказать она] [она и] [и взять] [взять большой] [большой конфета]

Находим повторяющиеся и упорядочиваем по числу вхождений:
Код:
[большой конфета]2 [конечно большой]1 [конфета хорошо]1 [хорошо сказать]1 [сказать она]1 [она и]1 [и взять]1 [взять большой]1


Но как теперь быть, если хочется вывести нелемматизированные и со знаками препинания встречания? То есть чтобы получить такое:
Код:
[большие конфеты, большую конфету]2 [Конечно, большие]1 [конфеты лучше!]1 [лучше!" -- сказала]1 [сказала она]1 [она и]1 [и взяла]1 [взяла большую]1



То есть чтобы как бы кусочки из текста анижки чтобы показывались. Как концептуально можно двумя разными образами прочитывать одну и ту же штуку? Как можно экранировать знаки препинания а потом восстанавливать?

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 12:30 
Заслуженный участник
Аватара пользователя


27/04/09
19390
Уфа
Хранить больше, чем нужно для сравнения, разумеется? Или я что-то не понял.

-- Вт мар 07, 2017 14:35:50 --

Т. е. мне не совсем понятно, в чём заключается языконезависимый вопрос. В некоторых языках группировку элементов коллекции по заданной функции сравнения в какой-нибудь multimap писать практически совершенно не придётся, в других придётся писать кучу кода, но сама задача выглядит просто, если хранить в $n$-граммах всё или почти всё исходное представление (даже просто кусок строки — поначалу я подумал предложить хранить отдельно слова, а отдельно префикс, постфикс и инфиксы пунктуации между ними, но вряд ли это нужно?), а не только лемматизованное.

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 15:31 


28/11/11
2883
Язык Python.

Хранить в n-граммах всё -- это пожалуйста. Но нужно потом построить одну функцию которая смотрит на них и ищет повторения без учетов знаков препинания. И вторая функция, которая выводит output со всеми этими знаками? Делать лист листов, и засунуть знаки препинания в подлист? А как тогда с заглавными быть?

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 15:38 
Заслуженный участник
Аватара пользователя


27/04/09
19390
Уфа
Нет, я всё же думаю, что хранить знаки препинания отдельно не несёт пользы; заглавные в такой подстроке при надобности можно будет убрать обычной строковой функцией. Пусть каждая $n$-грамма — кортеж из такой строки и информации, касающейся алгоритмов, работающих с $n$-граммами, тогда функция сравнения будет просто делать что-то своё со второй компонентой, как раньше она делала бы это с $n$-граммой, которая не знает об исходном представлении. Функция вывода, наоборот, будет игнорировать вторую компоненту и просто возвращать первую. (Если исходная большая строка всегда доступна, вместо подстрок в первых компонентах может быть полезнее хранить индекс и длину подстроки, конечно.)

-- Вт мар 07, 2017 17:38:36 --

arseniiv в сообщении #1197872 писал(а):
я всё же думаю, что хранить знаки препинания отдельно не несёт пользы
Если не нужно делать ещё чего-то, что тут не упомянуто. :-)

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 16:16 


28/11/11
2883
Спасибо, буду пробовать кортежи.

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 18:17 


28/11/11
2883
А вариант с записью в разные ключи файла JSON, как думаете, годится?

-- 07.03.2017, 18:17 --

А вариант с записью в разные ключи файла JSON, как думаете, годится?

 Профиль  
                  
 
 Re: как восстановить знаки препинания после лемматизации?
Сообщение07.03.2017, 20:04 
Заслуженный участник
Аватара пользователя


27/04/09
19390
Уфа
JSON — это же не формат внутреннего представления. Как формат внутреннего он из-за своей общности не годится.

-- Вт мар 07, 2017 22:04:59 --

Можно, конечно, есть кактус, особенно если не мне. :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group