Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 23, 2012 18:31:46

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в XML базе данных

Всем привет !

Подскажите, пожалуйста, что целенаправленно почитать по поиску в XML-документе с помощью пайтона. XPath, DOM, SAX….
Непрофессиональный программист, с азами XML вроде разобралась.
Моя задача заключается в том, чтобы сопоставить словарь (список слов в txt) с текстовой базой (которая в XML) и вывести, при наличии слова в базе данных, искомое слово и его ближайший контекст (к примеру, искомое слово “кошка”, в базе оно представлено в контексте “пушистая”. Вот это сочетание и нужно вывести в отдельный файл). Может, кто-нибудь знает уже готовые “рецепты” по этой теме.

Буду очень признательна!

Спасибо!



Офлайн

#2 Авг. 23, 2012 18:55:12

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

поиск в XML базе данных

DOM вроде самое простое.
Пример xml файла есть?

Офлайн

#3 Авг. 23, 2012 19:04:52

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в XML базе данных

там 190 MB. речь идет о синтаксически аннотированном текстовом корпусе.

вот фрагмент оттуда:

<s id=“s661”>
<graph root=“s661_532”>
<terminals>
<t id=“s661_1” word=“Die” lemma=“der|die|das” pos=“ART” morph=“np*”>
</t>
<t id=“s661_2” word=“etwa” lemma=“etwa” pos=“ADV” morph=“–”>
</t>
<t id=“s661_3” word=“zehn” lemma=“zehn” pos=“CARD” morph=“–”>
</t>
<t id=“s661_4” word=“Studierenden” lemma=“Studierender|Studierende|Studierendes” pos=“NN” morph=“np*”>
</t>
<t id=“s661_5” word=“und” lemma=“und” pos=“KON” morph=“–”>
</t>
<t id=“s661_6” word=“Lehrenden” lemma=“Lehrender|Lehrende|Lehrendes” pos=“NN” morph=“np*”>
</t>
<t id=“s661_7” word=“fordern” lemma=“fordern” pos=“VVFIN” morph=“3pis”>
</t>
(…)
</t>
</terminals>

как видно, там слова из предложений по-отдельности представлены. еще с этим проблема….

т.е. если в моем txt файле есть слово “fordern”, то из XML хочу получить “Lehrenden fordern”, ну или правый контекст.



Отредактировано leona (Авг. 23, 2012 19:08:42)

Офлайн

#4 Авг. 23, 2012 23:03:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

поиск в XML базе данных

Мда. Я не спец, но думаю что проблема в том что xml это совсем не база данных.
Дальше зависит от задачи:
1 Однократно надо поработать со списком слов.
Тогда- прочитать весь xml (тут лучше SAX технология) в родные питоновские словари и сделать все что надо уже в памяти, благо ваши данные туда поместятся.
2 Задача будет возникать многократно. Тогда лучше перегнать данные в нормальную базу (однократное чтение xml), любую которая вам приятнее, и работу выполнять с ее использованием. (это позволит избежать полного чтения данных при старте программы).



Офлайн

#5 Авг. 24, 2012 00:40:54

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

поиск в XML базе данных

doza_and
но думаю что проблема в том что xml это совсем не база данных.
А у нас как раз предмет был - xml базы данных. И там про xpath было
И гугл про это что-то слышал
Про них я, правда, не очень хорошие вещи слышал. Что и для человека они становятся практически нечитаемы, и при изменении приходится перезаписывать всю базу.

ТС, если тебе надо найти в xml что-то, то тут скорее xpath. Или перегнать в SQL базу данный.

Отредактировано odnochlen (Авг. 24, 2012 00:43:54)

Офлайн

#6 Авг. 24, 2012 12:08:30

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в XML базе данных

оу, спасибо за советы. а где почитать про это можно, чтоб вменяемо написано было?

есть вот такая штука LT XML (изначально под C, но есть и пайтоновская версия теперь). кто-нибудь сталкивался с этим инструментом в русскоязычной части web? он специально для text processing разработан, насколько поняла.



Отредактировано leona (Авг. 24, 2012 12:47:51)

Офлайн

#7 Авг. 24, 2012 16:38:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

поиск в XML базе данных

odnochlen
А у нас как раз предмет был - xml базы данных
Я имел ввиду прежде всего индексируемость содержимого. В рассматриваемой задаче именно она и важна и именно ее и нет у xml.

Цитата из
http://www.xml.nsu.ru/extra/database_2.xml:

“Таким образом, хотя и можно использовать XML-документы в качестве базы данных в средах с небольшим количеством данных, небольшим количеством пользователей и невысокими требованиями к производительности, этого нельзя сделать в большинстве бизнес-сред, в которых действует множество пользователей, действуют строгие требования к интегрированности данных и высокие требования к производительности.”

Что касается инструментария попробуйте обычный xml документации по нему достаточно
from xml.etree.ElementTree import ElementTree
nm="a01.xml"
tree = ElementTree(file=nm)
ind=[i.text for i in tree.findall("Propertys/Property/num")]
....




Офлайн

#8 Авг. 24, 2012 16:54:45

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

поиск в XML базе данных

doza_and
индексируемость содержимого
Еще один минус. И да, 190 Мб файл стоило бы перегнать в базу, если будет поиск тормозить.

Офлайн

#9 Авг. 25, 2012 16:25:45

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

поиск в XML базе данных

odnochlen
190 Мб файл стоило бы перегнать в базу
а как это сделать? IDLE завис намертво, когда я просто через ElementTree попыталась вывести корневой каталог.



Отредактировано leona (Авг. 25, 2012 16:33:06)

Офлайн

#10 Авг. 25, 2012 22:19:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

поиск в XML базе данных

leona
попыталась вывести корневой каталог
Почему вы решили что IDLE завис? Приводите код. Иначе неясно что вы делали. Печать больших объемов данных в самом деле может занять много времени.

p.s.
:) скажите спасибо тому умнику который придумал хранить большие объемы данных в xml.



Отредактировано doza_and (Авг. 25, 2012 22:21:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version