Посоветуйте технологию

T
На сайте с 16.04.2008
Offline
0
1355

Здравствуйте.

Я - переводчик, занимаюсь этим уже много лет и накопил уже достаточно большую базу т.н. "параллельных" текстов. В работе использую т.н. "память перевода" (Translation Memory - TM) (для тех, кто знаком - Trados и Promt) Память перевода - вещь хорошая, но хочется уже чего-то большего, некоторое время назад я стал задумываться о возможности нечёткого словарного поиска по своим базам.

Попробую описать, чего я приблизительно хочу.

Например, имеется довольно большой документ (500-600 листов). Если это технический текст, то он изобилует повторами, TM помогает, конечно, но хотелось бы иметь средство, которое бы:

1. Разбивало текст по параграфам / предложениям и заносило бы их в базу данных.

2. Выискивало бы по тексту совпадающие отрывки и составляло бы ранжированный список по количеству вхождений, начиная с наиболее часто повторяющихся фраз/предложений. Причём не только точно совпадающих, но и с учётом морфологии и изменения порядка слов в предолжении. (Например "John walks in the room" и "The president walked in the room" должны быть "похожими" фразами, а, например, фразы "Press OK button to continue" и "Press CONFIRM button to continue" должны расцениваться алгоритмом, как практически идентичные).

В поисковых алгоритмах я, к сожалению, не разбираюсь вообще, читал про расстояние Левенштейна, даже реализовал его (использовал, правда, в качестве базовой единицы не буквы, а слова), но дальше дело не пошло - не хватает теоретических знаний.

3. Собственно, поскольку ещё сам руковожу небольшим бюро переводов, данный алгоритм нужен ещё и для оценки количества повторений (по нечётким критериям) в тексте, чтобы не платить по 500 раз за перевод одной и той же фразы.

Хочу спросить, существуют ли какие-либо технологии/продукты или алгоритмы, предназначенные (или приспособляемые) для моих нужд?

[Удален]
#1

torq, для начала глянь analyst.ru, программа называется TextAnalist,

по идее даст тебе некоторую статистику.

-P
На сайте с 17.04.2008
Offline
0
#2

Дистанция по Ливеншейну не совсем подходит для решения этой задачи, поскольку очень трудоёмко сравнивать каждую фразу с каждой другой фразой из текста. Надо использовать хеширование

примерное решение по пунктам:

*токенайзером преобразуем текст в поток лексем

* приводим каждое слово к основе.. либо стеммером (что очень грубо), либо используя какую-нибудь морфологическую библиотеку

*далее для каждого слова выяснем группу синонимов, к которой оно принадлежит. Для определения синонимов можно использовать WordNet, поскольку у него большое покрытие, однако там может не быть некоторых современных слов

*далее хешируем (hashing) все фразы (остаётся открытым вопрос, что мы считаем фразами. можно вообще считать фразами все n-граммы (последовательности n слов)). Делаем это с учётом "дырок" (т.к. называемый insensitive hashing), т.е. у нас будет хеш для фразы "? went for a walk", "She ? for a walk", "She went ? a walk", итп

* ну и дальше уже более подробно работаем с множествами похожих фраз с совпадающими хешами

** за кадром остался вопрос в предобработке текста.. надо выкинуть все знаки препинания и, возможно, стоп слова

..было бы желание и средства, а сделать можно всё что угодно :)

[Удален]
#3
-| peter |-:
...средства...

Для серьёзной задачи, думаю, нужен и бюджет серьёзный.

С другой стороны, ТС скорей нужно не фундаментальное решение, а прога для увеличения эффективности труда, т.е. конкретная цель. Поэтому ему лучше использовать уже имеющиеся решения, пусть и не отвечающие всем его запросам, но приближающие решения задачи.

Есть ещё Word Tabulator, гляньте

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий