Как генерировать (записывать) индексы? - PullRequest
2 голосов
/ 09 декабря 2010

Мне нужно создать индекс для книги.Хотя задача с первого взгляда проста - сгруппируйте слова по первой букве, а затем отсортируйте их, - это очевидное решение работает только для языка США.Настоящее слово, однако, более сложное.См. http://en.wikipedia.org/wiki/Collation:

Разница между числовой и компьютерной сортировкой в ​​компьютерном стиле становится очевидной в языках с расширенным латинским алфавитом.Например, 29-буквенный алфавит испанского трактует - как основную букву после n, а ранее рассматривал ch и ll как основные буквы после c и l соответственно.Ch и ll по-прежнему считаются буквами, но теперь они расположены в алфавитном порядке как двухбуквенные комбинации.(Новое правило алфавитизации было издано Королевской испанской академией в 1994 г.) С другой стороны, орграф rr следует rqu, как и ожидалось, как с правилом алфавитизации 1994 г., так и без него.Числовая сортировка может упорядочить - неправильно следовать z и трактовать ch как c + h, также неправильно при использовании алфавитизации до 1994 года.

Я пытался найти существующее решение.

DocBookтаблицы стилей не решают проблему.

Лучшее совпадение, которое я нашел, это xindy (http://xindy.sourceforge.net/), но этот инструмент слишком сильно связан с LaTeX.

Есть еще какие-нибудь предложения?1017 *

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Что ж, после ответа на комментарии я понял, что мне не нужен инструмент для генерации индексов, а библиотека, которая может сортировать по культурам.Первые эксперименты показывают, что я собираюсь использовать ICU и его привязки Python PyICU.Например:

import icu
words = ["liche", "lichée", "lichen", "lichénoïde", "licher", "lichoter"]
collator = icu.Collator.createInstance(icu.Locale.getFrance())
for word in sorted(words, cmp=collator.compare):
  print word.decode("string-escape")
0 голосов
/ 09 декабря 2010

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

Но индексы, как правило, более сфокусированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...