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
'sourcecode' 카테고리의 다른 글
Vuex getter 및 돌연변이 이해 (0) | 2023.06.27 |
---|---|
BEA-141297 - 서버 파일 잠금을 가져올 수 없습니다. (0) | 2023.06.27 |
사용자 지정 ApplicationContextInitializer를 스프링 부팅 응용 프로그램에 추가하는 방법은 무엇입니까? (0) | 2023.06.22 |
파티션 키/값을 역직렬화하는 동안 Kafka 오류가 발생했습니다. (0) | 2023.06.22 |
스프링 프로파일, 다양한 Log4j2 구성 (0) | 2023.06.22 |