2013-03-08 5 views
0

저는 정의한 두 가지 함수를 사용하여 n 개의 단어와 그 빈도를 반환하는 프로그램을 작성하고 있습니다. 문제는 내 프로그램이 주파수 만 반환한다는 것입니다. 나는 단어와 주파수를 함께 압축하려고 시도했지만 효과가 없습니다. 네가 본 것에서 나는이 잘못에 접근하고 있는가?서로 일치하는 두 개의 목록을 반환합니까?

def computeWordFrequencies(filename): #my function 
    f = open(filename,'r') 
    j = f.read() 
    OriginalL1 = parse(j) 
    L1 = unique(parse(j)) 
    L2 = [OriginalL1.count(freq) for freq in L1] 
    L = [L1, L2] 
    return L 


def mostFrequentWords(word,frequency,n): 
    words = word 
    freqs = sorted(frequency,reverse=True) 
    return freqs[:n] 

L = computeWordFrequencies('file.txt') #takes a file and returns words & their frequencies 
words = zip(*sorted(zip(L[0],L[1]))) 
freqs = L[1] 
print mostFrequentWords(words,freqs,100) 
+0

무엇'computeWordFrequencies'와'처럼 file.txt'합니까? – Blender

+0

질문에 computeWordFrequencies를 추가했으며 file.txt는 computeWordFrequencies에 입력 한 텍스트입니다 – user2041448

답변

1
def mostFrequentWords(word,frequency,n): 
    my_list = zip(word,frequency) #combine the two lists 
    my_list.sort(key=lambda x:x[1],reverse=True) #sort by freq 
    words,freqs = zip(*my_list[:n]) #take the top n entries and split back to seperate lists 
    return words #return our most frequent words in order 

더 잘 작동합니다 ...

관련 문제