我正在对存储在列表 docToken 中的标记进行二元组。
print(docToken[520])
Run Code Online (Sandbox Code Playgroud)
输出:['瞌睡', '帐户', '只是', '男人', '累了', '推特', '案件', '罗姆尼', '候选人', '看起来']
list(nltk.bigrams(docToken[520]))
Run Code Online (Sandbox Code Playgroud)
输出:[('瞌睡', '帐户'), ('帐户', '刚刚'), ('刚刚', '男人'), ('男人', '累了'), ('累了', 'twitter '), ('推特', '案件'), ('案件', '罗姆尼'), ('罗姆尼', '候选人'), ('候选人', '看起来')]
当我nltk.bigrams(docToken[i])在循环中使用时,我在范围 >=1000 上收到以下错误:
bigram=[]
for i in range(5000):
ls=list(nltk.bigrams(docToken[i]))
for j in ls:
bigram.append(list(j))
Run Code Online (Sandbox Code Playgroud)
当第一个循环中的范围(500)时它工作得很好,但是当范围为1000或更多时,它会给出以下错误:
StopIteration Traceback (most recent call last)
~\Anaconda3\lib\site-packages\nltk\util.py in ngrams(sequence, n, pad_left,
pad_right, left_pad_symbol, right_pad_symbol)
467 while n > 1:
--> 468 history.append(next(sequence))
469 n -= 1
StopIteration:
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
<ipython-input-76-8982951528bd> in <module>()
1 bigram=[]
2 for i in range(5000):
----> 3 ls=list(nltk.bigrams(docToken[i]))
4 for j in ls:
5 bigram.append(list(j))
~\Anaconda3\lib\site-packages\nltk\util.py in bigrams(sequence, **kwargs)
489 """
490
--> 491 for item in ngrams(sequence, 2, **kwargs):
492 yield item
493
RuntimeError: generator raised StopIteration
Run Code Online (Sandbox Code Playgroud)
我无法解决这个错误。不知道为什么nltk.bigrams(docToken[i])会生成这个,但我能够使用以下代码创建二元组。
bigram={}
for i in range(size):
ls=[]
for j in range(len(docToken[i])-1):
for k in range(j,len(docToken[i])-1):
ls.append([docToken[i][j],docToken[i][k+1]])
bigram[i]=ls
Run Code Online (Sandbox Code Playgroud)