Форум сайта python.su
4
Добрый вечер!
Я написал программу, которая анализирует текст. Зная номер слова в тексте, я могу определить номер предложения, в котором это слово встречается, номер слова от начала предложения, позиции начального и конечного символов слова и некоторые другие вещи.
Все это оформлено в виде словаря, а данные я получаю по ключам. В связи с этим у меня возник вопрос о том, как наиболее рационально хранить результаты анализа. Например, я знаю номер символа в тексте. По этому номеру я могу узнать номер текущего предложения и номер слова. Или же я знаю номер предложения. Я могу узнать номер первого и последнего символов предложения, номер первого и последнего слова в предложении и другие вещи.
Так вот, возможно ли организовать данные без их дублирования? При изменении текста приходится перестраивать все ключи словаря, кроме того, приходится создавать отдельные ветки ключей в зависимости от того, идет ли анализ на уровне предложения, на уровне слова или на уровне отдельного символа.
Полагаю, что речь идет о базе данных, но с ними в Питоне никогда не работал. Кроме того, не нравится то, что используется чужеродный синтаксис, который еще надо будет разучивать. В некоторых учебниках еще пишут, например, “делайте так, но не делайте так, потому что в mysql есть баг, приводящий к этому” 
Возможно ли реализовать задачу посредством внутренних средств Питона, например, словаря?
Офлайн
39
Если уж у Вас необоснованный страх баз данных, тогда можно использовать модуль shelve, который по поведению напоминает словарь. Вот только не помню, дружит ли он с юникодом или нет
Но вообще Вам полезно будет почитать что-нибудь по redis. Хорошее хранилище типа хеш-таблица. Простое в освоении + есть хороший и быстрый модуль на питоне. Маленькая книга по редис переведена, к слову, на русский.
P.S. Но если говорить об SQL базах, то все равно язык SQL учить не обязательно. Для этого существует ORM (я рекомендую алхимию). ОRM работает с БД как с объектами и классами. Необходимо просто разобраться в описании таблиц с помощью классов и запомнить с 20 основных методов доступа к данным…
Офлайн
4
4kpt_III, а возможно ли сделать автообновляемую БД? Например, чтобы при изменении текста обновлялись позиции слов, их номера и прочая информация, или это только вручную делается? Если только вручную, то большого смысла переходить со словаря на БД пока не вижу.
Офлайн
0
97 вещей, которые должен знать программист
Вещь 48: Много данных? Используйте СУБД!
Офлайн
1
4kpt_IIIсори что вклиниваюсь не всвою тему, но можно по подробнее? можно ткнуть носом в толковый мануал ))
Для этого существует ORM (я рекомендую алхимию).
Офлайн
39
Kodriderme
Кидайте в личку скайп. Все покажу. Даже немножко статьи в свое время пособирал.
Офлайн
1
4kpt_IIIотправил ЛС
4kpt_III
Офлайн
39
Kodriderme
Видел. Куда слать-то? Обратный мейл то Вы не указали 
Отредактировано 4kpt_III (Дек. 27, 2014 19:17:56)
Офлайн