查询TuriCreate词频统计结果报错及返回值异常问题
核心错误原因
turicreate.text_analytics.count_words()返回的word_list是SArray(Turi Create自定义的数组结构),不是单个全局词频字典:SArray的每一个元素才是对应单条产品评论的词频统计字典。你直接对SArray做key in word_list判断、或是调用字典方法get,都会触发错误或者返回不符合预期的结果。
你现有代码的逻辑是判断关键词是否为SArray的元素,而不是遍历所有评论的词频字典统计该词的总出现次数,所以会固定返回0。
正确实现代码
如果需要统计所有产品评论中指定关键词的总出现次数,可以用以下代码:
word_list = turicreate.text_analytics.count_words(products['review']) def selected_w_count(key): total_count = 0 # 遍历SArray中每条评论对应的词频字典 for review_word_dict in word_list: # 字典get方法找不到对应键时默认返回0,直接累加即可 total_count += review_word_dict.get(key, 0) return total_count selected_w_count('wise')
可选优化(大小写不敏感匹配)
如果需要忽略大小写统计(同时匹配Wise、WISE、wise等不同大小写形式的相同词汇),可以在统计词频前先把所有评论内容转成小写:
# 评论内容转小写后再统计词频 word_list = turicreate.text_analytics.count_words(products['review'].apply(lambda x: x.lower()))
内容的提问来源于stack exchange,提问作者Ninad Pethkar
相关产品推荐
相关产品推荐

