2012-02-27 10 views
12

Soy un gran fan de descubrir oraciones que se pueden rapear muy rápidamente. Por ejemplo, "tengo que leer un poco de Wikipedia" o "no quiero terminar en la cuneta con una botella de malta". (George Watsky)Encuentra palabras y combinaciones de palabras que se pueden expresar de la forma más rápida

Quería escribir un programa en Python que me permitiera encontrar palabras (o combinaciones de palabras) que se pueden articular de forma que suene muy rápido cuando se habla.

Inicialmente pensé que las palabras que tenían una relación de sílaba a letra alta serían las mejores, pero al escribir un programa de Python para encontrar esas palabras, recuperé solo palabras muy simples que no sonaban realmente rápido.

Así que estoy perdido en lo que realmente hace que las palabras suenen rápido. ¿Es la relación de morfema a letra? ¿Es el número de pares vocales-consonantes alternantes?

¿Cómo van a idear un programa python para resolver este problema?

+0

Jeje, agradable pregunta, pero por desgracia no tengo ni idea de cómo responder a ella :(Mi única observación es que esas y frases similares tienen una alta proporción de las letras 'ptkbdgw' y' th'. Pero supongo que es igualmente importante cómo se distribuyen sobre la oración. –

+4

¿Qué hay de lo que intenta hacer su pregunta aquí: http: // linguistics .stackexchange.com/No es tan activo como stackoverflow, pero es posible que obtengas una mejor respuesta allí. Una vez que obtienes el algoritmo, podemos ayudarte con el código de Python :) –

+0

Esta es una pregunta muy buena. Aunque ciertamente no tengo una respuesta para esto, de lo más alto de mi cabeza tal vez asumiría que las palabras con más sílabas al final podrían ser más fáciles de rapear rápidamente en general. Sin embargo, parece que Busta Rhymes puede rapear cualquier cosa a la velocidad de la luz. Un buen punto de partida, como señaló Julien Bourdon más arriba, sería profundizar en la lingüística para este. Sin embargo, me mantendré atento a esto porque me gustaría saberlo. – SMT

Respuesta

7

Esto es solo una puñalada en la oscuridad ya que no soy lingüista (aunque he escrito un sintetizador de voz), la medida que es útil aquí es el número de phonemes que componen cada palabra, ya que los fonemas ellos mismos tendrán la misma duración aproximada independientemente del uso. Hay un International Phonetic Alphabet chart for english dialects, así como un bonito phonology of English.

Una buena fuente abierta diccionario fonético está disponible desde el proyecto cmudict que tiene alrededor 130k words

Aquí está una puñalada muy rápido a un mirar hacia arriba programa:

#!/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') 

Cuando ejecuta ..

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 

Si desea obtener pantalones súper elegantes sobre esto, siempre está el Python Natural Language Toolkit que puede tener som tidbits útiles para usted.

Además, algunos mundo real utilizar .. aunque para ser justos, me fijo 'estilo' a 'estilo' .. Pero izquierda 'Contando para revelar la deficiencia de palabras desconocidas .. Probablemente se podría tratar de una búsqueda de las palabras que terminan con in' por sustituía la g en el apóstrofe y luego dejar caer el fonema NG de las operaciones de búsqueda ..

    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... 

Si esto es algo que planea en poner algo de tiempo en, estaría interesado en ayudar . Creo que poner 'Mundos primero para golpear IDE' en mi currículum sería hilarante. Y si ya existe, el primer IDE de rap basado en Python del mundo. : p

+2

O, ¡el IDE * de rape * más fresco del mundo! –

+1

int32_t a tu madre. – synthesizerpatel

+0

Brillante! @Patel, voy a estar trabajando en esto durante bastante tiempo, ya que me interesa, ¡así que me pondré en contacto con usted para pedirle ayuda! – Parseltongue

2

Diría que es una buena idea comenzar tomando los ejemplos que dio u otros que le gusten y haciendo algún tipo de análisis para todas sus ideas sobre ellos: p. relación fonema a letra, etc .; lo que suene razonable y que puedas calcular Cuantas más muestras, mejor. Con suerte, esto le dará una buena idea de qué propiedades comparten las líneas y las palabras que ya disfruta, lo que debería guiarlo en la dirección correcta.

De lo contrario, mi profano cree que las vocales cortas (obviamente) y las consonantes duras como 't', algunas 'p', duras 'g', etc., serán las mejores: hacen que las líneas suenen staccato y de disparo rápido.

(querido dejar esto como un comentario porque no es realmente una respuesta, pero es demasiado largo :)

Cuestiones relacionadas