在做英文文本的自然语言处理,进行词频统计时遇到了问题
前面部分形成了几种格式的数据,但如果想进行数据按行词频统计都会出现问题:
1.有嵌套列表数据,如何按内部列表进行词频统计?
如有:[[a,b,c,a][a,b,c,b][a,b,c,c]]
希望得到类似: ('a':2,'b':1,'c':1)('a':1,'b':2,'c':1)('a':1,'b':1,'c':2)这样的结果
2.有list数据,每行的元素间由‘\n’分隔(其实是把嵌套列表乱拆了一下,如果有好方法也请告诉我!),如何把这个列表分行,并按行进行词频统计?
3.有分行str数据,如何按单词(因为出现过按单词里的字母统计词频的错误)按行进行词频统计?
words = [['a', 'b', 'c', 'a'],['a', 'b', 'c', 'b'],['a', 'b', 'c', 'c']]
def statistics(words):
res = []
for i in words:
dict = {}
for word in i:
if word in dict.keys():
dict[word] = dict[word] + 1
else:
dict[word] = 1
w_order = sorted(dict.items(), key=lambda x: x[1], reverse=True)
res.append(w_order)
return res
print(statistics(words))