Я собираюсь хранить произношения слов в таблице MySQL, и я хотел бы иметь способ быстрого поиска произношения, которые имеют определенные свойства.
Вот пример того, что некоторые данные могутвыглядеть как:
- текстовое слово: "рог изобилия" * произношение 1006 *
- : ["K", "AO2", "R", "N", "AH0", "K", "OW1", "P", "IY0", "AH0"]
- Если вы не знакомы с произношением, то Словарь произношения CMU имеет хорошее объяснение и был, как я сгенерировалэтот пример.
Самый простой подход к хранению данных списка, о котором я мог подумать, - просто вывести список в виде строки в кодировке json.Проблема в том, что этот подход, по-видимому, не позволяет использовать полезный индекс для этого столбца.
Вот несколько примеров запросов, которые я хотел бы выполнять очень быстро (с соответствующими данными, проиндексированными в моембаза данных):
- Найти все произношения, имеющие эту последовательность гласных: ...
- Найти все произношения, в которых согласная (ые) XXX находятся в позиции (ях) YYY.
- Найдите все произношения с гласным XXX в позиции last .
- Найдите все произношения, в которых есть эта последовательность лексических ударений: [0, 2, 1]
Одна из моих идей заключалась в том, чтобы выделить информацию о лексическом ударении (числа справа от каждой гласной фонемы в приведенном выше примере) и сохранить эту информацию отдельно (например, [2, 0,1, 0, 0]), но даже тогда я не уверен, как я мог бы его проиндексировать.
Еще одна идея, которая, по-видимому, по крайней мере решает запросы на лексическое напряжение, может заключаться в хранении всех возможных лексических моделей напряженияяВ отдельной таблице, и затем каждое произношение просто ссылается (через внешний ключ) на один из этих лексических паттернов напряжения.Затем я мог бы запустить свой (Python) серверный код для этого меньшего набора возможных лексических шаблонов стресса, чтобы определить, какие шаблоны соответствовали друг другу, и затем запросить в таблице произношения те произношения, которые имели один из этих шаблонов стресса.Но мне любопытно узнать, есть ли какой-нибудь способ создать более быстрое решение на основе чистого SQL.
Но, чтобы быть ясным: основная проблема, которая меня интересует, - это индексирование и запрос списков фонем.