首先,我对Python(以及一般的编程)非常陌生,
我正在寻找一个程序来检测两个特定的音节(字符串)是否在语音上押韵。我已经尝试过模块"pronouncing",但它通常只检查完美的押韵(例如“猫”和“帽子”)。然而,没有检测到基于语音的押韵,例如“差”和“倾倒”或“差”和“游览”。
我编写了以下程序,它基本上将一系列单词作为输入,对它们进行音节化,将这些音节排列在一个数组中作为行和列,并“交叉检查”数组中的每个条目是否相符到模块“发音”;如果是这样则返回1,否则返回0。
例如,输入
cat hat man
将输出数组
1 1 0
1 1 0
0 0 1
以下是截至目前的代码:
from hyphen import Hyphenator
import pronouncing
import numpy as np
h_en = Hyphenator('en_US')
P = [str(x) for x in input().split()]
Q = []
for i in range(0,len(P)):
if h_en.syllables(str(P[i])) == []:
Q = Q + [P[i]]
else:
Q = Q + h_en.syllables(str(P[i]))
print(Q)
S = []
for i in range(0,len(Q)):
for j in range(0,len(Q)):
if str(Q[j]) in pronouncing.rhymes(str(Q[i]))+[Q[i]]:
S = S + [1]
else:
S = S + [0]
print(S)
a = np.transpose([S[x:x+len(Q)] for x in range(0, len(S), len(Q))])
print()
print(a)
在这种情况下输出数组的原因是无关紧要的,因为我只想优化检查押韵的程序部分。
你会怎么解决这个问题?你怎么写一个能够在没有太多误报的情况下检测出音韵的程序呢?