본문 바로가기

개발하자

NLTK python 오류: "TypeError: 'dict_keys' 개체를 구독할 수 없습니다."

반응형

NLTK python 오류: "TypeError: 'dict_keys' 개체를 구독할 수 없습니다."

나는 수업 숙제를 위해 지시사항을 따르고 있고 가장 자주 사용하는 단어 200개를 텍스트 파일에서 찾아봐야 한다.

코드의 마지막 부분은 다음과 같습니다:

fdist1 = FreqDist(NSmyText)
vocab=fdist1.keys()
vocab[:200]

그러나 vocab 200 행 뒤에 Enter 키를 누르면 다음과 같이 반환됩니다:

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable

정답을 올바르게 반환할 수 있도록 이 문제를 해결하는 방법에 대한 제안이 있습니까?




파이썬 3을 사용하는 것 같습니다. 파이썬 3에서 인덱싱할 수는 없지만 개체를 반환합니다. 가장 단순하지만 효율적이지는 않은 솔루션은 다음과 같습니다:

vocab = list(fdist1.keys())[:200]

경우에 따라 목록 대신 반복기 개체로 작업을 계속하는 것이 좋습니다. 이 작업은 다음을 사용하여 수행할 수 있습니다:

import itertools
vocab_iterator = itertools.islice(fdist1.keys(), 200)



가장 자주 사용되는 200개의 단어를 인쇄하려면 다음을 사용하십시오. fdist1.most_common(200) 위의 코드 줄은 가장 자주 사용되는 200개의 단어를 키-주파수 쌍으로 반환합니다.




파이썬 3을 사용하는 경우 다음을 시도하십시오:

fdist1.most_common(200)

대신, 200개의 가장 흔한 단어를 얻기 위해.




나는 사용하고 있고 나는 같은 문제를 만났다.

를 사용해도 가장 자주 사용하는 단어 상위 50개를 얻을 수 없습니다. 하지만 그래요.

또한 빈도가 아닌 상위 50개 단어만 표시하려면 다음을 시도할 수 있습니다:

[word for (word, freq) in fdist1.most_common(50)]




fdist1 = FreqDist(NSmyText)

vocab=fdist1.keys()

이 코드는 Python 2.7에서 사용되고 있습니다. 따라서 변경해야 합니다. dic.keys()는 반복 가능한 파일을 반환합니다. 따라서 사용:

list(fdist1.keys())




요소를 키 및 값(워드 및 빈도)으로 가져오려면 다음을 사용할 수 있습니다:

list(fdist1.items())[:200]


반응형