python - 查找可以最快说出的单词和单词组合

标签 python algorithm word nlp linguistics

我非常喜欢发现可以快速说唱的句子。例如,“我得读一点维基百科”或“不想带着一瓶麦芽威士忌倒在阴沟里”。 (乔治·沃茨基)

我想用 Python 编写一个程序,使我能够找到可以清晰表达的单词(或单词组合),以便在说话时听起来非常快。

我最初认为音节与字母比率高的单词是最好的,但是在编写 Python 程序来查找这些单词时,我只检索到听起来并不快的非常简单的单词(例如“iowa ”)。

所以我不知道究竟是什么让单词听起来很快。是语素与字母的比例吗?是交替的元音-辅音对的数量吗?

你们会如何设计一个 python 程序来解决这个问题?

最佳答案

这只是盲目尝试,因为我不是语言学家(尽管我已经编写了语音合成器),这里有用的指标是 phonemes 的数量。构成每个单词的音素,因为无论使用什么,音素本身都将具有相同的近似持续时间。有一个 International Phonetic Alphabet chart for english dialects ,还有一个不错的 phonology of English .

可以从 cmudict 获得一个很好的开源语音词典。项目约有130k words

这是一个非常快速的查找程序:

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

如果你想获得 super 花哨的裤子,总有 Python Natural Language Toolkit这可能对您有一些有用的花絮。

此外,一些现实世界使用..虽然为了公平起见,我将'stylin'固定为'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...

如果这是您计划投入一些时间的事情,我很乐意提供帮助。我认为在我的简历上写上“世界第一说唱 IDE”会很有趣。如果已经存在的话,世界上第一个基于 Python 的说唱 IDE。 :p

关于python - 查找可以最快说出的单词和单词组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459745/

相关文章:

python - 用属性链换行

python - 查找和索引之间的区别

python 3.6 : Moving around words within a string

c++ - 最快的算法计算数组中 3 个长度 AP 的数量

html - 标签功能等元素之间的间距

c++ - 处理器最方便的整数类型

python - 使用flask、pythonanywhere显示字典中的数据

algorithm - 使用加、减和减半计算三角根

algorithm - 带约束的二维遍历算法

Javascript:文字到数字