sourcecode

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

codebag 2023. 6. 22. 21:51
반응형

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에서dict.keys()반복 가능하지만 인덱싱할 수 없는 개체를 반환합니다.가장 간단하지만 효율적이지 않은 솔루션은 다음과 같습니다.

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

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

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

사용 중python 3.5그리고 저는 같은 문제를 만나요. TypeError.

사용.vocab = list(fdist1.keys())가장 자주 사용되는 상위 50개 단어를 제공하지 않습니다.
그렇지만fdist1.most_common(50)한다.

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

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

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

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

가장 자주 사용되는 200단어를 인쇄하려면: fdist1.most_common(200) 위의 코드 라인은 가장 자주 사용되는 200단어를 키-빈도 쌍으로 반환합니다.

python 3을 사용하는 경우:

fdist1.most_common(200)

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

fdist1 = FreqDist(NSmyText)

vocab=fdist1.keys()

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

list(fdist1.keys())

언급URL : https://stackoverflow.com/questions/26394748/nltk-python-error-typeerror-dict-keys-object-is-not-subscriptable

반응형