Найти слова и сочетания слов, которые можно произнести быстрее всего - PullRequest
12 голосов
/ 27 февраля 2012

Я большой поклонник открытий предложений, которые можно очень быстро читать.Например, «нужно немного почитать Википедию» или «не хочу оказаться в канаве с бутылкой солода».(Джордж Уотски)

Я хотел написать программу на Python, которая позволила бы мне находить слова (или комбинации слов), которые можно сформулировать так, чтобы они звучали очень быстро при разговоре.

Сначала я думал, что слова с высоким отношением слогов к буквам будут наилучшими, но, написав программу на Python, чтобы найти эти слова, я нашел только очень простые слова, которые не очень быстро звучатнапример "Айова").

Так что я в растерянности от того, что на самом деле заставляет слова звучать быстро.Соотношение морфема и буква?Это число чередующихся пар гласных и согласных?

Как вы, ребята, решили бы разработать программу на Python для решения этой проблемы?

Ответы [ 2 ]

7 голосов
/ 27 февраля 2012

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

Хороший фонетический словарь с открытым исходным кодом доступен из проекта cmudict , в котором около 130k слов

Вот очень быстрый удар по программе поиска:

#!/usr/bin/python

import re

words={}

for line in open("cmudict.0.7a",'ro').readlines():
    split_idx = line.find(' ')
    words[line[0:split_idx]] = line[split_idx+1:-1]

user_input = raw_input("Words: ")

print
for word in user_input.split(' '):
    try:
        print "%25s %s" % (word, words[word.upper()])
    except:
        print "%25s %s" % (word, 'unable to find phonems for word')

При запуске ..

Words: I support hip hop from the underground up

                    I  AY1
              support  S AH0 P AO1 R T
                  hip  HH IH1 P
                  hop  HH AA1 P
                 from  F R AH1 M
                  the  DH AH0
          underground  AH1 N D ER0 G R AW2 N D
                   up  AH1 P

Если вы хотите получить супер модные штаны по этому поводу, всегда есть Python Natural Language Toolkit , который может иметь несколько полезных для вас деталей.

Кроме того, некоторые в реальном мире используют .. хотя, чтобы быть справедливым, я установил 'styin' в 'styling' .. Но оставил 'Tellin', чтобы выявить дефицит неизвестных слов .. Возможно, вы могли бы попробуйте поискать слова, заканчивающиеся на in', подставив g для апострофа, а затем отбросьте NG фонему из поиска ..

                  Yes  Y EH1 S
                  the  DH AH0
               rhythm  R IH1 DH AH0 M
                  the  DH AH0
                rebel  R EH1 B AH0 L
              Without  W IH0 TH AW1 T
                    a  AH0
                pause  P AO1 Z
                  I'm  AY1 M
             lowering  L OW1 ER0 IH0 NG
                   my  M AY1
                level  L EH1 V AH0 L
                  The  DH AH0
                 hard  HH AA1 R D
               rhymer  R AY1 M ER0
                where  W EH1 R
                  you  Y UW1
                never  N EH1 V ER0
                 been  B IH1 N
                  I'm  AY1 M
                   in  IH0 N
                  You  Y UW1
                 want  W AA1 N T
              styling  S T AY1 L IH0 NG
                  you  Y UW1
                 know  N OW1
                 it's  IH1 T S
                 time  T AY1 M
                again  AH0 G EH1 N
                    D  D IY1
                  the  DH AH0
                enemy  EH1 N AH0 M IY0
               tellin unable to find phonems for word
                  you  Y UW1
                   to  T UW1
                 hear  HH IY1 R
                   it  IH1 T
                 They  DH EY1
              praised  P R EY1 Z D
              etc...

Если вы планируете уделить этому немного времени, мне было бы интересно помочь. Я думаю, что помещать 'Worlds first rapping IDE' в мое резюме было бы весело. И, если он уже существует, первая в мире интегрированная среда разработки на основе Python. : Р

2 голосов
/ 27 февраля 2012

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

В противном случае, мои непрофессионалы предполагают, что короткие гласные (очевидно) и твердые согласныекак 't', некоторые 'p', hard 'g, и т. д. будут лучше всего - они заставляют строки звучать стаккато и быстрым огнем.

(хотел оставить это как комментарий, потому что это не совсем ответ, но это слишком долго:)

...