推文对象ha句提取

时间:2018-04-04 13:12:27

标签: python-3.x twitter

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个音节。

1 个答案:

答案 0 :(得分:0)

问题在于之前使用过twobj变量,并且在这部分代码中混合了。现在一切都有效。如果您对我的项目有任何疑问,请随时提出。