김민수

Upload preparation scripts

1 +import json
2 +import pathlib
3 +
4 +cwd = pathlib.Path.cwd()
5 +glob = cwd.glob('Article/*.json')
6 +for idx, json_path in enumerate(glob):
7 + with json_path.open(encoding='utf-8') as json_file:
8 + article = json.load(json_file)
9 + document = article["document"]
10 + with open(f"jsonl/{article['id']}.jsonl", 'w', encoding='utf-8') as write_file:
11 + for doc in document:
12 + metadata = doc["metadata"]
13 + hyphenated = f"{metadata['date'][:4]}-{metadata['date'][4:6]}-{metadata['date'][6:]}"
14 + obj = {
15 + "author": metadata["author"],
16 + "publisher": metadata["publisher"],
17 + "date": hyphenated,
18 + "topic": metadata["topic"],
19 + "paragraph": list(map(lambda line: line["form"], doc["paragraph"]))
20 + }
21 + write_file.write(json.dumps(obj, ensure_ascii=False) + '\n')
22 + if (idx+1) % 100 == 0:
23 + print(f"Converted {idx+1} files")
24 +else:
25 + print(f"Finished: total {idx+1} files are converted")
26 +
1 +from pyarrow import json
2 +import pyarrow.parquet as pq
3 +import pathlib
4 +from os import makedirs
5 +
6 +cwd = pathlib.Path.cwd()
7 +for idx, json_path in enumerate(cwd.glob('jsonl/*.jsonl')):
8 + with json_path.open('rb') as json_file:
9 + table = json.read_json(json_file)
10 + makedirs(f"parquet/{json_path.stem[:6]}", exist_ok=True)
11 + pq.write_table(table, f"parquet/{json_path.stem[:6]}/{json_path.stem}.parquet")
12 + if (idx+1) % 100 == 0:
13 + print(f"Converted {idx+1} files")
14 +else:
15 + print(f"Finished: total {idx+1} files are converted")
1 +import json
2 +import pathlib
3 +
4 +cwd = pathlib.Path.cwd()
5 +glob = cwd.glob('Article/NWRW18*.json')
6 +rows = []
7 +for idx, json_path in enumerate(glob):
8 + with json_path.open(encoding='utf-8') as json_file:
9 + article = json.load(json_file)
10 + document = article["document"]
11 + for doc in document:
12 + metadata = doc["metadata"]
13 + obj = {
14 + "publisher": metadata["publisher"],
15 + "topic": metadata["topic"],
16 + "original_topic": metadata["original_topic"]
17 + }
18 + rows.append(obj)
19 + if(idx+1) % 100 == 0:
20 + print(idx+1)
21 +with open('topic_to_predict.json', 'w', encoding='utf-8') as dataset:
22 + json.dump(rows, dataset, ensure_ascii=False)
23 +print("Finished")
...\ No newline at end of file ...\ No newline at end of file
1 +import pyarrow.parquet as pq
2 +import pandas as pd
3 +import matplotlib.pyplot as plt
4 +category='NIRW19'
5 +table = pq.read_pandas(f"parquet/{category}", columns=['author', 'publisher', 'date', 'topic'])
6 +print(table.schema)
7 +df = table.to_pandas()
8 +
9 +publisher=df.groupby('publisher').count()['author']
10 +topic = df.groupby('topic').count()['author']
11 +month = df.groupby(pd.Grouper(key='date', freq='M')).count()['author']
12 +plt.rc('font', family='BATANG')
13 +pub_ax = publisher.plot(kind="bar")
14 +plt.title(f"{category}-Publisher")
15 +for i, v in enumerate(publisher):
16 + pub_ax.text(i-0.25, v, v)
17 +plt.show()
18 +plt.title(f"{category}-Topic")
19 +top_ax=topic.plot(kind="bar")
20 +for i, v in enumerate(topic):
21 + top_ax.text(i-0.25, v, v)
22 +plt.show()
23 +plt.title(f"{category}-Month")
24 +month.plot()
25 +plt.show()
26 +plt.title(f"{category}-Publisher")
27 +publisher.plot.pie(autopct='%1.1f%%')
28 +plt.show()
29 +plt.title(f"{category}-Topic")
30 +topic.plot.pie(autopct='%1.1f%%')
31 +plt.show()
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "cells": [
3 + {
4 + "cell_type": "code",
5 + "execution_count": 1,
6 + "metadata": {
7 + "collapsed": true
8 + },
9 + "outputs": [],
10 + "source": [
11 + "import pandas as pd\n",
12 + "import pyarrow as pa\n",
13 + "import pyarrow.parquet as pq\n",
14 + "from pyarrow.dataset import DirectoryPartitioning"
15 + ]
16 + },
17 + {
18 + "cell_type": "code",
19 + "execution_count": 2,
20 + "outputs": [],
21 + "source": [
22 + "category=\"NWRW19\" # NIRW19, NLRW19, NPRW19\n",
23 + "\n"
24 + ],
25 + "metadata": {
26 + "collapsed": false,
27 + "pycharm": {
28 + "name": "#%%\n"
29 + }
30 + }
31 + },
32 + {
33 + "cell_type": "code",
34 + "execution_count": 3,
35 + "outputs": [
36 + {
37 + "data": {
38 + "text/plain": "author: string\n -- field metadata --\n PARQUET:field_id: '1'\npublisher: string\n -- field metadata --\n PARQUET:field_id: '2'\ndate: timestamp[ms]\n -- field metadata --\n PARQUET:field_id: '3'\ntopic: string\n -- field metadata --\n PARQUET:field_id: '4'\nparagraph: list<item: string>\n child 0, item: string\n -- field metadata --\n PARQUET:field_id: '7'\n -- field metadata --\n PARQUET:field_id: '5'"
39 + },
40 + "execution_count": 3,
41 + "metadata": {},
42 + "output_type": "execute_result"
43 + }
44 + ],
45 + "source": [
46 + "table = pq.read_table(f\"parquet/{category}\")\n",
47 + "table.schema\n",
48 + "\n"
49 + ],
50 + "metadata": {
51 + "collapsed": false,
52 + "pycharm": {
53 + "name": "#%%\n"
54 + }
55 + }
56 + },
57 + {
58 + "cell_type": "code",
59 + "execution_count": 4,
60 + "outputs": [
61 + {
62 + "data": {
63 + "text/plain": " author publisher date topic \\\n0 권경복 조선일보사 2009-01-01 사회 \n1 최우석 조선일보사 2009-01-01 문화 \n2 민구 조선일보사 2009-01-01 사회 \n3 채현선 조선일보사 2009-01-01 생활 \n4 김민철 조선일보사 2009-01-01 사회 \n... ... ... ... ... \n1442425 김종철 한겨레 2018-12-30 사회 \n1442426 김창금 한겨레 2018-12-30 스포츠 \n1442427 김경무 한겨레 2018-12-30 스포츠 \n1442428 김이택 한겨레 2018-12-30 사회 \n1442429 박찬수 한겨레 2018-12-30 사회 \n\n paragraph \n0 ['발틱의 호랑이' 라트비아, 종이호랑이로…, 잘나가던 强小國서 구제금융 받는 신세... \n1 ["부시는 독서광" 재임중 수백권 읽어 참모와 독서 경쟁도, 조지 W 부시 대통령은... \n2 [나와 나의 시, 집요하게 거리 두기를, 당선소감, 음성메시지로 당선을 통보받았다.... \n3 [내가 만든 음식이 설익지 않도록 뜸들일 것, 당선소감, 당선 통보를 받은 날 밤,... \n4 [與野, 새해에도 계속 대화하기로, 대표 회동 이어 원내대표들도 다시 만나, 여야는... \n... ... \n1442425 [사람/재일양심수동우회, “민주시민이 주는 상 받으니 40여년 맺힌 한 완전히 풀렸... \n1442426 [24/손흥민?이달의?선수상?놓고?살라흐?넘을까?, 손흥민 이달의 선수상 경쟁 살라... \n1442427 [24면/벤투호 새해 첫 단추를 잘 끼워라!, 사우디와의 악연, 새해 새벽 ‘종친다... \n1442428 [사설2/해고자, 세밑 ‘9년 만의 출근’, 아직 굴뚝 위엔 사람이 있다, 31일 ... \n1442429 [사설3/아베, 일본 ‘초계기 영상 공개’ 지시한 아베의 정략, 일본 방위성이 28... \n\n[1442430 rows x 5 columns]",
64 + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>author</th>\n <th>publisher</th>\n <th>date</th>\n <th>topic</th>\n <th>paragraph</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>권경복</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>['발틱의 호랑이' 라트비아, 종이호랑이로…, 잘나가던 强小國서 구제금융 받는 신세...</td>\n </tr>\n <tr>\n <th>1</th>\n <td>최우석</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>문화</td>\n <td>["부시는 독서광" 재임중 수백권 읽어 참모와 독서 경쟁도, 조지 W 부시 대통령은...</td>\n </tr>\n <tr>\n <th>2</th>\n <td>민구</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>[나와 나의 시, 집요하게 거리 두기를, 당선소감, 음성메시지로 당선을 통보받았다....</td>\n </tr>\n <tr>\n <th>3</th>\n <td>채현선</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>생활</td>\n <td>[내가 만든 음식이 설익지 않도록 뜸들일 것, 당선소감, 당선 통보를 받은 날 밤,...</td>\n </tr>\n <tr>\n <th>4</th>\n <td>김민철</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>[與野, 새해에도 계속 대화하기로, 대표 회동 이어 원내대표들도 다시 만나, 여야는...</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>1442425</th>\n <td>김종철</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사람/재일양심수동우회, “민주시민이 주는 상 받으니 40여년 맺힌 한 완전히 풀렸...</td>\n </tr>\n <tr>\n <th>1442426</th>\n <td>김창금</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>스포츠</td>\n <td>[24/손흥민?이달의?선수상?놓고?살라흐?넘을까?, 손흥민 이달의 선수상 경쟁 살라...</td>\n </tr>\n <tr>\n <th>1442427</th>\n <td>김경무</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>스포츠</td>\n <td>[24면/벤투호 새해 첫 단추를 잘 끼워라!, 사우디와의 악연, 새해 새벽 ‘종친다...</td>\n </tr>\n <tr>\n <th>1442428</th>\n <td>김이택</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사설2/해고자, 세밑 ‘9년 만의 출근’, 아직 굴뚝 위엔 사람이 있다, 31일 ...</td>\n </tr>\n <tr>\n <th>1442429</th>\n <td>박찬수</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사설3/아베, 일본 ‘초계기 영상 공개’ 지시한 아베의 정략, 일본 방위성이 28...</td>\n </tr>\n </tbody>\n</table>\n<p>1442430 rows × 5 columns</p>\n</div>"
65 + },
66 + "execution_count": 4,
67 + "metadata": {},
68 + "output_type": "execute_result"
69 + }
70 + ],
71 + "source": [
72 + "dt=table.to_pandas()\n",
73 + "dt"
74 + ],
75 + "metadata": {
76 + "collapsed": false,
77 + "pycharm": {
78 + "name": "#%%\n"
79 + }
80 + }
81 + },
82 + {
83 + "cell_type": "code",
84 + "execution_count": 5,
85 + "outputs": [
86 + {
87 + "data": {
88 + "text/plain": " author publisher date topic \\\n0 권경복 조선일보사 2009-01-01 사회 \n1 최우석 조선일보사 2009-01-01 문화 \n2 민구 조선일보사 2009-01-01 사회 \n3 채현선 조선일보사 2009-01-01 생활 \n4 김민철 조선일보사 2009-01-01 사회 \n... ... ... ... ... \n1442425 김종철 한겨레 2018-12-30 사회 \n1442426 김창금 한겨레 2018-12-30 스포츠 \n1442427 김경무 한겨레 2018-12-30 스포츠 \n1442428 김이택 한겨레 2018-12-30 사회 \n1442429 박찬수 한겨레 2018-12-30 사회 \n\n paragraph category \n0 ['발틱의 호랑이' 라트비아, 종이호랑이로…, 잘나가던 强小國서 구제금융 받는 신세... NWRW19 \n1 ["부시는 독서광" 재임중 수백권 읽어 참모와 독서 경쟁도, 조지 W 부시 대통령은... NWRW19 \n2 [나와 나의 시, 집요하게 거리 두기를, 당선소감, 음성메시지로 당선을 통보받았다.... NWRW19 \n3 [내가 만든 음식이 설익지 않도록 뜸들일 것, 당선소감, 당선 통보를 받은 날 밤,... NWRW19 \n4 [與野, 새해에도 계속 대화하기로, 대표 회동 이어 원내대표들도 다시 만나, 여야는... NWRW19 \n... ... ... \n1442425 [사람/재일양심수동우회, “민주시민이 주는 상 받으니 40여년 맺힌 한 완전히 풀렸... NWRW19 \n1442426 [24/손흥민?이달의?선수상?놓고?살라흐?넘을까?, 손흥민 이달의 선수상 경쟁 살라... NWRW19 \n1442427 [24면/벤투호 새해 첫 단추를 잘 끼워라!, 사우디와의 악연, 새해 새벽 ‘종친다... NWRW19 \n1442428 [사설2/해고자, 세밑 ‘9년 만의 출근’, 아직 굴뚝 위엔 사람이 있다, 31일 ... NWRW19 \n1442429 [사설3/아베, 일본 ‘초계기 영상 공개’ 지시한 아베의 정략, 일본 방위성이 28... NWRW19 \n\n[1442430 rows x 6 columns]",
89 + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>author</th>\n <th>publisher</th>\n <th>date</th>\n <th>topic</th>\n <th>paragraph</th>\n <th>category</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>권경복</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>['발틱의 호랑이' 라트비아, 종이호랑이로…, 잘나가던 强小國서 구제금융 받는 신세...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1</th>\n <td>최우석</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>문화</td>\n <td>["부시는 독서광" 재임중 수백권 읽어 참모와 독서 경쟁도, 조지 W 부시 대통령은...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>2</th>\n <td>민구</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>[나와 나의 시, 집요하게 거리 두기를, 당선소감, 음성메시지로 당선을 통보받았다....</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>3</th>\n <td>채현선</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>생활</td>\n <td>[내가 만든 음식이 설익지 않도록 뜸들일 것, 당선소감, 당선 통보를 받은 날 밤,...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>4</th>\n <td>김민철</td>\n <td>조선일보사</td>\n <td>2009-01-01</td>\n <td>사회</td>\n <td>[與野, 새해에도 계속 대화하기로, 대표 회동 이어 원내대표들도 다시 만나, 여야는...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>1442425</th>\n <td>김종철</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사람/재일양심수동우회, “민주시민이 주는 상 받으니 40여년 맺힌 한 완전히 풀렸...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442426</th>\n <td>김창금</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>스포츠</td>\n <td>[24/손흥민?이달의?선수상?놓고?살라흐?넘을까?, 손흥민 이달의 선수상 경쟁 살라...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442427</th>\n <td>김경무</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>스포츠</td>\n <td>[24면/벤투호 새해 첫 단추를 잘 끼워라!, 사우디와의 악연, 새해 새벽 ‘종친다...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442428</th>\n <td>김이택</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사설2/해고자, 세밑 ‘9년 만의 출근’, 아직 굴뚝 위엔 사람이 있다, 31일 ...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442429</th>\n <td>박찬수</td>\n <td>한겨레</td>\n <td>2018-12-30</td>\n <td>사회</td>\n <td>[사설3/아베, 일본 ‘초계기 영상 공개’ 지시한 아베의 정략, 일본 방위성이 28...</td>\n <td>NWRW19</td>\n </tr>\n </tbody>\n</table>\n<p>1442430 rows × 6 columns</p>\n</div>"
90 + },
91 + "execution_count": 5,
92 + "metadata": {},
93 + "output_type": "execute_result"
94 + }
95 + ],
96 + "source": [
97 + "dt['category']=category\n",
98 + "dt"
99 + ],
100 + "metadata": {
101 + "collapsed": false,
102 + "pycharm": {
103 + "name": "#%%\n"
104 + }
105 + }
106 + },
107 + {
108 + "cell_type": "code",
109 + "execution_count": 6,
110 + "outputs": [
111 + {
112 + "data": {
113 + "text/plain": " author publisher date topic \\\n0 오관철기자 경향신문사 2009-01-01 IT/과학 \n1 대전윤희일기자 경향신문사 2009-01-01 IT/과학 \n2 최병준기자 경향신문사 2009-01-01 IT/과학 \n3 손봉석기자 경향신문사 2009-01-02 IT/과학 \n4 이주영기자 경향신문사 2009-01-02 IT/과학 \n... ... ... ... ... \n1442425 성연철 한겨레 2018-12-28 정치 \n1442426 이정애 한겨레 2018-12-28 정치 \n1442427 정유경 한겨레 2018-12-28 정치 \n1442428 정은주 한겨레 2018-12-28 정치 \n1442429 송경화 한겨레 2018-12-29 정치 \n\n paragraph category \n0 [포털시장 ‘독과점’ 심화…콘텐츠업체에 횡포 우려, ㆍ상위3사가 90% 점유… 불공... NWRW19 \n1 [세계 최고·한국 최고 다 모였네 ‘대덕연구개발특구’, ㆍ인공태양·초고전압 현미경·... NWRW19 \n2 [내 몸, 초식동물에 가깝다…채식예찬 이 책 어때요?, 희망의 밥상…제인 구달 사이... NWRW19 \n3 [LG전자, 런던 새해맞이 불꽃놀이 후원, LG전자가 2009년 1월1일 새벽에 거... NWRW19 \n4 [(3) 전자업계 ‘바닥’ 탈출, ㆍ소비 위축에 마이너스성장 예고ㆍ차별화·고부가 제... NWRW19 \n... ... ... \n1442425 [**(1판)3면/문 대통령, 문희상 국회의장 등과 오찬, 문 대통령, 문희상 국회... NWRW19 \n1442426 [3판/8면/민주?“유치원3법?330일?기다릴?필요?없어”…국정조사?재검토?압박, ... NWRW19 \n1442427 [#3판/9면/31일 조국 운영위 출석 벼르는 야당, 어떤 쟁점 펼쳐질까, ‘조국 ... NWRW19 \n1442428 [10면/홍남기 “최저임금법 시행령 노사”, 홍남기 “최저임금법 시행령 개정안, 노... NWRW19 \n1442429 [#3판/8면/이용호 손금주 입당/4매, ‘국민의당 출신’ 무소속 이용호·손금주, ... NWRW19 \n\n[1442430 rows x 6 columns]",
114 + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>author</th>\n <th>publisher</th>\n <th>date</th>\n <th>topic</th>\n <th>paragraph</th>\n <th>category</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>오관철기자</td>\n <td>경향신문사</td>\n <td>2009-01-01</td>\n <td>IT/과학</td>\n <td>[포털시장 ‘독과점’ 심화…콘텐츠업체에 횡포 우려, ㆍ상위3사가 90% 점유… 불공...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1</th>\n <td>대전윤희일기자</td>\n <td>경향신문사</td>\n <td>2009-01-01</td>\n <td>IT/과학</td>\n <td>[세계 최고·한국 최고 다 모였네 ‘대덕연구개발특구’, ㆍ인공태양·초고전압 현미경·...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>2</th>\n <td>최병준기자</td>\n <td>경향신문사</td>\n <td>2009-01-01</td>\n <td>IT/과학</td>\n <td>[내 몸, 초식동물에 가깝다…채식예찬 이 책 어때요?, 희망의 밥상…제인 구달 사이...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>3</th>\n <td>손봉석기자</td>\n <td>경향신문사</td>\n <td>2009-01-02</td>\n <td>IT/과학</td>\n <td>[LG전자, 런던 새해맞이 불꽃놀이 후원, LG전자가 2009년 1월1일 새벽에 거...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>4</th>\n <td>이주영기자</td>\n <td>경향신문사</td>\n <td>2009-01-02</td>\n <td>IT/과학</td>\n <td>[(3) 전자업계 ‘바닥’ 탈출, ㆍ소비 위축에 마이너스성장 예고ㆍ차별화·고부가 제...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>1442425</th>\n <td>성연철</td>\n <td>한겨레</td>\n <td>2018-12-28</td>\n <td>정치</td>\n <td>[**(1판)3면/문 대통령, 문희상 국회의장 등과 오찬, 문 대통령, 문희상 국회...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442426</th>\n <td>이정애</td>\n <td>한겨레</td>\n <td>2018-12-28</td>\n <td>정치</td>\n <td>[3판/8면/민주?“유치원3법?330일?기다릴?필요?없어”…국정조사?재검토?압박, ...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442427</th>\n <td>정유경</td>\n <td>한겨레</td>\n <td>2018-12-28</td>\n <td>정치</td>\n <td>[#3판/9면/31일 조국 운영위 출석 벼르는 야당, 어떤 쟁점 펼쳐질까, ‘조국 ...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442428</th>\n <td>정은주</td>\n <td>한겨레</td>\n <td>2018-12-28</td>\n <td>정치</td>\n <td>[10면/홍남기 “최저임금법 시행령 노사”, 홍남기 “최저임금법 시행령 개정안, 노...</td>\n <td>NWRW19</td>\n </tr>\n <tr>\n <th>1442429</th>\n <td>송경화</td>\n <td>한겨레</td>\n <td>2018-12-29</td>\n <td>정치</td>\n <td>[#3판/8면/이용호 손금주 입당/4매, ‘국민의당 출신’ 무소속 이용호·손금주, ...</td>\n <td>NWRW19</td>\n </tr>\n </tbody>\n</table>\n<p>1442430 rows × 6 columns</p>\n</div>"
115 + },
116 + "execution_count": 6,
117 + "metadata": {},
118 + "output_type": "execute_result"
119 + }
120 + ],
121 + "source": [
122 + "dt.sort_values(by=[\"publisher\",\"topic\"],inplace=True,ignore_index=True)\n",
123 + "dt"
124 + ],
125 + "metadata": {
126 + "collapsed": false,
127 + "pycharm": {
128 + "name": "#%%\n"
129 + }
130 + }
131 + },
132 + {
133 + "cell_type": "code",
134 + "execution_count": 7,
135 + "outputs": [
136 + {
137 + "data": {
138 + "text/plain": "pyarrow.Table\nauthor: string\npublisher: string\ndate: timestamp[ms]\ntopic: string\nparagraph: list<item: string>\n child 0, item: string\ncategory: string"
139 + },
140 + "execution_count": 7,
141 + "metadata": {},
142 + "output_type": "execute_result"
143 + }
144 + ],
145 + "source": [
146 + "table.append_column('category',pa.array([category]*len(table)))"
147 + ],
148 + "metadata": {
149 + "collapsed": false,
150 + "pycharm": {
151 + "name": "#%%\n"
152 + }
153 + }
154 + },
155 + {
156 + "cell_type": "code",
157 + "execution_count": 8,
158 + "outputs": [],
159 + "source": [
160 + "pq.write_to_dataset( table.append_column('category',pa.array([category]*len(table))), root_path='categorized_parquet',\n",
161 + " partition_cols=['category', 'topic'],coerce_timestamps='us')"
162 + ],
163 + "metadata": {
164 + "collapsed": false,
165 + "pycharm": {
166 + "name": "#%%\n"
167 + }
168 + }
169 + },
170 + {
171 + "cell_type": "code",
172 + "execution_count": 4,
173 + "outputs": [
174 + {
175 + "data": {
176 + "text/plain": "author: string\n -- field metadata --\n PARQUET:field_id: '1'\npublisher: string\n -- field metadata --\n PARQUET:field_id: '2'\ndate: timestamp[ms]\n -- field metadata --\n PARQUET:field_id: '3'\nparagraph: list<item: string>\n child 0, item: string\n -- field metadata --\n PARQUET:field_id: '6'\n -- field metadata --\n PARQUET:field_id: '4'\ntopic: dictionary<values=string, indices=int32, ordered=0>\n-- schema metadata --\npandas: '{\"index_columns\": [], \"column_indexes\": [], \"columns\": [{\"name\":' + 546"
177 + },
178 + "execution_count": 4,
179 + "metadata": {},
180 + "output_type": "execute_result"
181 + }
182 + ],
183 + "source": [
184 + "\n",
185 + "test = pq.read_table(f\"categorized_parquet/category=NLRW19/\")\n",
186 + "test.schema"
187 + ],
188 + "metadata": {
189 + "collapsed": false,
190 + "pycharm": {
191 + "name": "#%%\n"
192 + }
193 + }
194 + },
195 + {
196 + "cell_type": "code",
197 + "execution_count": 9,
198 + "outputs": [
199 + {
200 + "name": "stdout",
201 + "output_type": "stream",
202 + "text": [
203 + "[\n",
204 + " \"train\",\n",
205 + " \"train\",\n",
206 + " \"train\",\n",
207 + " \"train\",\n",
208 + " \"train\",\n",
209 + " \"train\",\n",
210 + " \"train\",\n",
211 + " \"train\",\n",
212 + " \"train\",\n",
213 + " \"train\",\n",
214 + " ...\n",
215 + " \"train\",\n",
216 + " \"train\",\n",
217 + " \"train\",\n",
218 + " \"train\",\n",
219 + " \"train\",\n",
220 + " \"train\",\n",
221 + " \"train\",\n",
222 + " \"train\",\n",
223 + " \"train\",\n",
224 + " \"train\"\n",
225 + "]\n"
226 + ]
227 + }
228 + ],
229 + "source": [
230 + "l=[]\n",
231 + "count=0\n",
232 + "last_topic=''\n",
233 + "for k,v in enumerate(test['topic']):\n",
234 + " if v!=last_topic:\n",
235 + " count=0\n",
236 + " last_topic=v\n",
237 + " mod=count %100\n",
238 + " if mod==49:\n",
239 + " l.append('valid')\n",
240 + " elif mod==99:\n",
241 + " l.append('test')\n",
242 + " else:\n",
243 + " l.append('train')\n",
244 + " count+=1\n",
245 + "print(pa.array(l))"
246 + ],
247 + "metadata": {
248 + "collapsed": false,
249 + "pycharm": {
250 + "name": "#%%\n"
251 + }
252 + }
253 + }
254 + ],
255 + "metadata": {
256 + "kernelspec": {
257 + "display_name": "Python 3",
258 + "language": "python",
259 + "name": "python3"
260 + },
261 + "language_info": {
262 + "codemirror_mode": {
263 + "name": "ipython",
264 + "version": 2
265 + },
266 + "file_extension": ".py",
267 + "mimetype": "text/x-python",
268 + "name": "python",
269 + "nbconvert_exporter": "python",
270 + "pygments_lexer": "ipython2",
271 + "version": "2.7.6"
272 + }
273 + },
274 + "nbformat": 4,
275 + "nbformat_minor": 0
276 +}
...\ No newline at end of file ...\ No newline at end of file