<jupyter_start><jupyter_text>정보처리및자연어처리 1차과제> 20161482 박준용<jupyter_code>from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/CSW4020
import nltk
from nltk.corpus import PlaintextCorpusReader
from nltk.corpus.reader.plaintext import CategorizedPlaintextCorpusReader
import re<jupyter_output><empty_output><jupyter_text>1번: 배점 1점현재 작업 폴더 밑 Q1 폴더의 16개 파일을 불러와서 다음의 결과를 얻을 수 있도록 변수 a를 있도록 한 줄 코드로 만드시오. (주의: categories의 출력값을 Q1 폴더 파일명으로부터 추출해야 함.)<jupyter_code># 1번
a = CategorizedPlaintextCorpusReader('./Q1','.*', cat_pattern='\D+[a-z](.+)[.]') 
a.categories()
len(a.fileids())
print(a.fileids())<jupyter_output>['CANacademicHUMANITIES.txt', 'CANacademicNATSCIENCE.txt', 'CANacademicSOCSCIENCE.txt', 'CANacademicTECH.txt', 'CANpopularHUMANITIES.txt', 'CANpopularNATSCIENCE.txt', 'CANpopularSOCSCIENCE.txt', 'CANpopularTECH.txt', 'NZacademicHUMANITIES.txt', 'NZacademicNATSCIENCE.txt', 'NZacademicSOCSCIENCE.txt', 'NZacademicTECH.txt', 'NZpopularHUMANITIES.txt', 'NZpopularNATSCIENCE.txt', 'NZpopularSOCSCIENCE.txt', 'NZpopularTECH.txt']<jupyter_text>2번: 배점 1점현재 작업 폴더 밑 Q2 폴더의 4개 파일을 불러와서 다음의 결과를 얻을 수 있도록 변수 b를 구성하도록 한 줄 코드로 만드시오.<jupyter_code># 2번
b = PlaintextCorpusReader('./Q2','.*') 
b.fileids()<jupyter_output><empty_output><jupyter_text>3번: 배점 2점2번의 변수 b와 for 구문을 이용하여 다음을 수행(코드라인 수 제한 없음) * 파일별 문자수 = 공백문자 및 문장부호 제외 문자수 * 파일별 어휘수 = 알파벳 또는 숫자문자 하나 이상 포함 어휘수 * 아래의 서식을 참고하여 함수 print를 이용하여 출력<jupyter_code># 3번
for fileid in b.fileids():
    num_chars = len(re.sub('[^a-z0-9]','',b.raw(fileid), flags=re.I))
    num_words = len([w for w in b.words(fileid) if re.search('[a-z0-9]',w, flags=re.I)])
    print('파일명: {0:<15} 문자수: {1:<10,} 어휘수: {2:<10,}'.format(fileid, num_chars, num_words))<jupyter_output>파일명: HUMANITIES.txt  문자수: 530,867    어휘수: 110,177   
파일명: NATSCIENCE.txt  문자수: 538,039    어휘수: 110,008   
파일명: SOCSCIENCE.txt  문자수: 566,873    어휘수: 115,451   
파일명: TECH.txt        문자수: 530,235    어휘수: 106,654<jupyter_text>4번: 배점 2점2번의 변수 b를 이용하여 빈도 3,000 이상의 문장부호를 빈도 내림차순으로 정렬하여 다음과 같은 변수 c 를 출력 하는 한 줄 코드를 작성하시오.<jupyter_code># 4번
c = sorted([w for w in nltk.FreqDist(b.raw()).items() if w[0].isalpha()==False and w[0].isdigit()==False and w[0].isspace()==False and nltk.FreqDist(b.raw())[w[0]] > 3000], key=lambda tup:(-tup[1], tup[0]))
len(c)
print(c)<jupyter_output>[(',', 22634), ('.', 21953), ('-', 6226), ("'", 4888), (')', 3703), ('(', 3694), ('"', 3095)]<jupyter_text>5번: 배점 2점2번의 변수 b, 4번의 변수 c, nltk의 tabulate 함수를 이용하여 다음과 같은 파일별 변수 c의 문장부호 빈도교차표를 출력하기 위한 코드를 제시하시오.(코드 라인 수 제한 없음)<jupyter_code># 5번
cfd = nltk.ConditionalFreqDist((genre,word)
for genre in b.fileids()
for word in b.raw(genre))
cfd.tabulate(conditions=b.fileids(), samples=[c[i][0] for i in range(len(c))])<jupyter_output>,    .    -    '    )    (    " 
HUMANITIES.txt 5770 5087 1222 1640  584  584  877 
NATSCIENCE.txt 6016 6091 1567  674 1515 1515  427 
SOCSCIENCE.txt 6078 5674 1706 1845  701  701 1042 
      TECH.txt 4770 5101 1731  729  903  894  749<jupyter_text>6번: 배점 2점2번의 변수 b와 for 구문, nltk similar을 이용하여 다음을 수행(코드라인 수 제한 없음) * 파일별 ‘evidence’와 분포 맥락이 어휘 목록을 추출 * 아래와 같이 파일명을 print 함수를 이용하여 출력한 후 nltk similar를 이용하여 출력<jupyter_code># 6번
for fileid in b.fileids():
    print('{0}'.format(fileid))
    nltk.Text(b.words(fileid)).similar('evidence')<jupyter_output>HUMANITIES.txt
one those time land life workshops islands flooding way that other
death nature signs some them works loss most definition
NATSCIENCE.txt
way need two implications absence so difficult argue year application
data same form soil surface zone work association material consisting
SOCSCIENCE.txt
one time part members which areas aware much discussion method crucial
discounting history the of measure and over another not
TECH.txt
is most possible selection use all those some but uncertainty into one
i follows assumed be which mentioned many such
{'fraction_non_alphanumeric': 0.13125810635538263, 'fraction_numerical': 0.06536964980544747, 'mean_word_length': 4.987577639751553, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '426440', 'license': 'MIT', 'n_tokens_mistral': 2143, 'n_tokens_neox': 2328, 'n_words': 432, 'path': 'CSW4020_HW1.ipynb', 'repo_name': 'jyjoon001/CSW4020', 'size': '3855'}