우선 text.count
은 원하지 않는 것 같습니다.
>>> "Red wired tired".count("red")
2
당신은 아마 라인, 소문자로 텍스트 라인을 통해 읽고 각 행을 분할하고, Counter을 업데이트 할 것입니다. 그런 다음 Matt이 말했듯이 로컬 변수에 액세스하지 않고 함수가 반환 한 값을 할당해야합니다.
귀하의 의견에 nltk을 사용하고 있다고 말했기 때문에 아마도 (테스트되지 않은) 이와 비슷한 것일 수 있습니다. 문제 설명과 일치하기 때문에 전체 텍스트가 메모리에있는 것이 행복하다고 가정합니다. 우리는 단순히 (=
로) 지정을 사용
from collections import Counter
import matplotlib.pyplot as plt
import nltk
def countcolors(text)
tokens = nltk.word_tokenize(text)
tokens = map(lamda x: x.lower(), tokens)
ctr = Counter(tokens)
colorlist = ("red", "rust", "blue", "green")
colorcounts = dict((color,ctr[color]) for clr in colorlist)
return colorcounts
#we'll call the text in memory `mytext`
colors, counts = countcolors(mytext).items()
fig, ax = plt.subplots(1,1)
ax.pie(counts,labels=colors)
plt.show()
주 함수에서 반환 값을 얻을 수 있습니다.
사용중인 코딩 언어에 대해 자세히 알려주십시오. –
오 죄송합니다. 그것은 파이썬에 있습니다. –
'y0'이 접근하는 범위 내에서 정의되지 않았기 때문에 에러가 발생한 것 같습니다. 'y0'는 로컬 변수이며'colorperc' 함수의 범위 내에서 유효한 식별자 일뿐입니다. –