ANSWER
问题在于之前使用过twobj
变量,并且在这部分代码中混合了。现在一切都有效。如果您对我的项目有任何疑问,请随时提出。
问题
我正在编写一个程序,它自动从数据库中提取符合ha句模式(5个音节,7个音节,5个音节)的推特消息,然后在推特上发布。一切都有效,除了音节数。该过滤器模块应该对音节进行计数,它会获得一个带有标记化推文的对象,并检查每个单词中字典中音节的数量。这本字典很好用。我用词作为键和音节数作为值进行设置。问题是我无法编写正确的脚本来检查音节的数量是否与Haiku模式匹配。这是我现在的代码:
# twobj_list is a list of tweet objects
for twobj in twobj_list:
syl_cnt = 0
line1 = False
line2 = False
line3 = False
haiku_match = True
# twobj.text is tokenized tweet
for i in range(len(twobj.text)):
# dpw_dict is a (dutch) dictionary with words as keys
# and number of syllables as values
if twobj.text[i] in dpw_dict:
syl_cnt += dpw_dict[twobj.text[i]]
if not line1 and haiku_match:
if syl_cnt > 5:
haiku_match = False
elif syl_cnt == 5:
line1 = True
elif not line2 and haiku_match:
if syl_cnt > 12:
haiku_match = False
elif syl_cnt == 12:
line1 = True
elif not line3 and haiku_match:
if syl_cnt > 17:
haiku_match = False
elif syl_cnt == 17 and i + 1 == len(twobj.text):
line3 = True
break
elif syl_cnt == 17 and not i + 1 < len(twobj.text):
haiku_match = False
if haiku_match:
new_twobj_list.append(twobj)
该行:
if twobj.text[i] in dpw_dict:
syl_cnt += dpw_dict[twobj.text[i]]
给出推文中与单词中的单词匹配的单词的音节数。据我所知,这很有效。
我希望有人能告诉我这里做错了什么。提前致谢
输出包含许多推文,这些推文与ha句模式最不匹配。但是,据我所知,所有这些都短于17个音节。
答案 0 :(得分:0)
问题在于之前使用过twobj
变量,并且在这部分代码中混合了。现在一切都有效。如果您对我的项目有任何疑问,请随时提出。