2017-04-05 1 views
2

이 토큰 목록에서 각 튜플이 몇 번 발생하는지 계산하는 방법이 있습니까?목록에 파이썬 카운트 튜플이 발생 함

count 메서드를 시도했지만 작동하지 않습니다.

은 목록입니다

['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay'] 

이 목록을 기준으로 튜플이다 :이

('hello', 'how')1 
('how', 'are')1 
('are','you')2 
('you', 'doing')1 
('doing', 'today')1 
('today', 'are')1 
('you', 'okay')1 
+1

'카운터'는 어떻게 사용합니까? –

+1

튜플과 일치 시키려면 목록에서 토큰이 서로 옆에 있어야합니까? – chbchb55

+1

@ chbchb55 : 다소 * n * 그램의 아이디어입니다. –

답변

5

같은 것으로 결과를 싶습니다

('hello', 'how') 
('how', 'are') 
('are','you') 
('you', 'doing') 
('doing', 'today') 
('today', 'are') 
('you', 'okay') 

당신 이를 위해 Counter을 쉽게 사용할 수 있습니다.

from collections import Counter 
from itertools import islice 

def count_ngrams(iterable,n=2): 
    return Counter(zip(*[islice(iterable,i,None) for i in range(n)]))

이 생성 :

>>> count_ngrams(['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay'],2) 
Counter({('are', 'you'): 2, ('doing', 'today'): 1, ('you', 'doing'): 1, ('you', 'okay'): 1, ('today', 'are'): 1, ('how', 'are'): 1, ('hello', 'how'): 1}) 
>>> count_ngrams(['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay'],3) 
Counter({('are', 'you', 'okay'): 1, ('you', 'doing', 'today'): 1, ('are', 'you', 'doing'): 1, ('today', 'are', 'you'): 1, ('how', 'are', 'you'): 1, ('doing', 'today', 'are'): 1, ('hello', 'how', 'are'): 1}) 
>>> count_ngrams(['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay'],4) 
Counter({('doing', 'today', 'are', 'you'): 1, ('today', 'are', 'you', 'okay'): 1, ('are', 'you', 'doing', 'today'): 1, ('how', 'are', 'you', 'doing'): 1, ('you', 'doing', 'today', 'are'): 1, ('hello', 'how', 'are', 'you'): 1}) 
5

이 솔루션은 타사 모듈 (iteration_utilities.Iterable)가 필요하지만, 당신이 원하는 일을해야합니다

을 일반적인 기능은 다음 N -grams입니다 계산하기
>>> from iteration_utilities import Iterable 

>>> l = ['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay'] 

>>> Iterable(l).successive(2).as_counter() 
Counter({('are', 'you'): 2, 
     ('doing', 'today'): 1, 
     ('hello', 'how'): 1, 
     ('how', 'are'): 1, 
     ('today', 'are'): 1, 
     ('you', 'doing'): 1, 
     ('you', 'okay'): 1}) 
+0

고마워요! n-gram을 어휘로 사용하고 싶다면 어떻게해야하는지 알고 있습니까? 그리고 많은 목록에 대해이 어휘를 확인하십시오. – MyTivoli

+0

무슨 뜻인지 확실치 않습니다. 어쩌면 당신이 필요한 것을 더 명확하게 설명 할 수있는 다른 질문을 할 수 있습니다. – MSeifert

관련 문제