2013-08-17 5 views
1

데이터를 거쳐 정규식을 사용하여 이모티콘을 검사하고 이모티콘이 발견되면 카운터가 업데이트되는 스크립트를 작성했습니다. 그런 다음 범주 당 카운트 수를 목록에 작성해야합니다 (예 : cat ne에는 25 개의 이모티콘, 범주 fr에는 45 ...). 여기에는 잘못 된 부분이 있습니다. 내가 얻은 결과는 다음과 같습니다.그룹 별 그룹 수

[1, 'dg', 4, 'fr' , 'fr', 8, 'hp', 9 'hp', 10 'hp', 11 'hp', 12 'hp', 13 'hp', 14 'hp', 15 ' 19, 'hp', 20, 'hp', 21, 'hp', 22, 'hp', 23, 'hp', 16, 'hp', 17, 'hp' , 24, 'hp', 25 'ne', 26 'ne', 27 'ne', 28 'ne', 29 'ne', 30 'ne', 31 'ne', 32 012, 37, 'ne', 38]

fileid의 형식은 다음과 같습니다. 하나의 큰 파일에는 7 개의 작은 파일이 들어 있습니다 (각 파일은 카테고리입니다). 카테고리 파일 내에서 카테고리 당 약 100 파일은 다음과 같습니다

데이터/NE/

.txt 인 각 파일의 데이터는 하나 개의 문장이며,이

과 같은 567.txt

:

오늘 : 그래서 행복은

이 내 스크립트입니다

counter = 0 
lijst = [] 
for fileid in corpus.fileids(): 
    for sentence in corpus.sents(fileid): 
     cat = str(fileid.split('/')[0]) 
     s = " ".join(sentence)  
     m = re.search('(:\)|:\(|:\s|:\D|:\o|:\@)+', s) 
     if m is not None: 
      counter +=1 
      lijst += [counter] + [cat] 
+0

당신이 입력 데이터의 예를해야합니까? –

+0

@SaulloCastro 입력 데이터에 대한 정보를 포함하도록 제 질문을 편집했습니다. 감사! – JohnDoe

답변

1

당신이해야 할 :

import collections 

counts = collections.defaultdict(lambda: 0) 
for fileid in corpus.fileids(): 
    for sentence in corpus.sents(fileid): 
     cat = str(fileid.split('/')[0]) 
     s = " ".join(sentence) 
     counts[cat] += len(re.findall('(:\)|:\(|:\s|:\D|:\o|:\@)+', s)) 
+0

대단히 감사합니다. 이제 모든 것이 카테고리별로 그룹화됩니다! – JohnDoe

+0

더 큰 스크립트에서 사용할 정의로 이것을 설명하려고하면 정의에 대한 오류가 계속 발생합니다. 정의의 이모티콘 (corpus)을 정의 할 수는 있지만 작동하지 않는 것 같습니다. 어떤 아이디어? – JohnDoe

+0

실제로 문제가 무엇인지 이해하지 못하는지, 문제의 원인이되는 질문에 코드를 붙여 넣을 수 있습니까? –