gpt4 book ai didi

python - 检查抑扬格五音步?

转载 作者:行者123 更新时间:2023-11-28 16:36:28 25 4
gpt4 key购买 nike

我有点卡在一个关于抑扬格五音步的问题上,但因为它很长,我会尽量简化它。所以我需要从看起来有点像这样的文本文件中获取一些单词及其重音模式:

if, 0
music,10
be,1
the,0
food,1
of,0
love,1
play,0
on,1
hello,01
world,1

从文件中,您可以假设不同的句子会有更多的单词。我正在尝试从包含多个句子的文本文件中获取句子,并查看该句子(忽略标点符号和大小写)是否为抑扬格五音步。

例如,如果文本文件包含以下内容:

If music be the food of love play on
hello world

第一个句子将从重音词典中分配如下:0101010101,第二个显然不是五音步(011)。我希望它只打印抑扬格五音步的句子。

抱歉,如果这是一个令人费解或困惑的问题。这是我目前所拥有的:

import string
dict = {};
sentence = open('sentences.txt')
stress = open('stress.txt')
for some in stress:
word,number = some.split(',')
dict[word] = number
for line in sentence:
one = line.split()

最佳答案

我认为您没有正确构建压力字典。记住摆脱隐含的 \n 是至关重要的。在您阅读它们时从行中删除字符,以及在用逗号分隔后从单词中删除任何空格。就目前而言,行 if, 0将拆分为 ['if', ' 0\n']这不是你想要的。

因此,要创建压力字典,您可以这样做:

stress_dict = {}

with open('stress.txt', 'r') as f:
for line in f:
word_stress = line.strip().split(',')
word = word_stress[0].strip().lower()
stress = word_stress[1].strip()
stress_dict[word] = stress

对于实际检查,@khelwood 的回答是一个好方法,但我会格外小心地处理 \n字符,并确保该行中的所有字符都是小写的(就像在您的字典中一样)。

定义一个函数is_iambic_pentameter检查句子是否为抑扬格五音步(返回 True/False )然后检查 sentences.txt 中的每一行:

def is_iambic_pentameter(line):
line_stresses = [stress_dict[word] for word in line.split()]
line_stresses = ''.join(line_stresses)
return line_stresses == '0101010101'

with open('sentences.txt', 'r') as f:
for line in f:
line = line.rstrip()
line = line.lower()
if is_iambic_pentameter(line):
print line

顺便说一句,您可能对 NLTK 感兴趣,一个用于 Python 的自然语言处理库。一些互联网搜索发现人们已经使用该库编写了 Haiku 生成器和其他用于评估诗歌形式的脚本。

关于python - 检查抑扬格五音步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com