我有一项任务是使用NLTK分析N个文本。每个文本都超过100k字,因此计算机很难处理如此多的数据,这就是为什么我决定在这样的子列表中进行标记后拆分每个文本的原因:
chunks = [tokens_words[x:x+1000] for x in range (0,len(tokens_words), 1000)]
可能它运作良好。
然后我需要计算每个文本中的名词数量。我是这样做的:
for chunk in chunks:
for key in tagged.keys():
for noun_tag in noun_tags:
if tagged[key] == noun_tag:
noun += 1
totalNoun.append(noun)
然后我使用sum()
并找到百分比。我也试过totalNoun += noun
,但在两种方式中我都得到3500%或2498%的smth。
我做错了什么?
答案 0 :(得分:0)
让我们说你有2个块,一个有13个名词,一个有30个名词。您的代码将执行以下操作:
noun: 0
totalNoun: []
# processing chunk 1 with 13 nouns...
noun : 13
totalNoun : [13]
# processing chunk 2 with 30 nouns...
noun : 43
totalNoun : [13,43]
据我所知,你不会在每个块之后将noun
设置为0。那就是:
for chunk in chunks:
## HERE ##
noun = 0
## HERE ##
for key in tagged.keys():
for noun_tag in noun_tags:
if tagged[key] == noun_tag:
noun += 1
totalNoun.append(noun)
在noun = 0
循环中使用for chunk in chunks
应该可以解决问题。