Showing
5 changed files
with
371 additions
and
0 deletions
code/preparation/corpus2jsonl.py
0 → 100644
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 | + |
code/preparation/jsonl2parquet.py
0 → 100644
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") |
code/preparation/make_topic_dataset.py
0 → 100644
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 |
code/preparation/stastics.py
0 → 100644
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 |
code/preparation/sys_sampling_test.ipynb
0 → 100644
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 |
-
Please register or login to post a comment