다음은 2010년 11월, 대한민국 국회에서 발의된 의안 제1809890호의 원문에서 높은 빈도로 등장한 단어를 한국어 워드클라우드로 나타낸 것입니다.
(그리는 법 참고: http://lucypark.kr/courses/2015-dm/text-mining.html)
다음은 2010년 11월, 대한민국 국회에서 발의된 의안 제1809890호의 원문에서 높은 빈도로 등장한 단어를 한국어 워드클라우드로 나타낸 것입니다.
(그리는 법 참고: http://lucypark.kr/courses/2015-dm/text-mining.html)
// Word cloud layout by Jason Davies, http://www.jasondavies.com/word-cloud/ | |
// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf | |
(function(exports) { | |
function cloud() { | |
var size = [256, 256], | |
text = cloudText, | |
font = cloudFont, | |
fontSize = cloudFontSize, | |
rotate = cloudRotate, | |
padding = cloudPadding, | |
spiral = archimedeanSpiral, | |
words = [], | |
timeInterval = Infinity, | |
event = d3.dispatch("word", "end"), | |
timer = null, | |
cloud = {}; | |
cloud.start = function() { | |
var board = zeroArray((size[0] >> 5) * size[1]), | |
bounds = null, | |
n = words.length, | |
i = -1, | |
tags = [], | |
data = words.map(function(d, i) { | |
return { | |
text: text.call(this, d, i), | |
font: font.call(this, d, i), | |
rotate: rotate.call(this, d, i), | |
size: ~~fontSize.call(this, d, i), | |
padding: cloudPadding.call(this, d, i) | |
}; | |
}).sort(function(a, b) { return b.size - a.size; }); | |
if (timer) clearInterval(timer); | |
timer = setInterval(step, 0); | |
step(); | |
return cloud; | |
function step() { | |
var start = +new Date, | |
d; | |
while (+new Date - start < timeInterval && ++i < n && timer) { | |
d = data[i]; | |
d.x = (size[0] * (Math.random() + .5)) >> 1; | |
d.y = (size[1] * (Math.random() + .5)) >> 1; | |
cloudSprite(d, data, i); | |
if (place(board, d, bounds)) { | |
tags.push(d); | |
event.word(d); | |
if (bounds) cloudBounds(bounds, d); | |
else bounds = [{x: d.x + d.x0, y: d.y + d.y0}, {x: d.x + d.x1, y: d.y + d.y1}]; | |
// Temporary hack | |
d.x -= size[0] >> 1; | |
d.y -= size[1] >> 1; | |
} | |
} | |
if (i >= n) { | |
cloud.stop(); | |
event.end(tags, bounds); | |
} | |
} | |
} | |
cloud.stop = function() { | |
if (timer) { | |
clearInterval(timer); | |
timer = null; | |
} | |
return cloud; | |
}; | |
cloud.timeInterval = function(x) { | |
if (!arguments.length) return timeInterval; | |
timeInterval = x == null ? Infinity : x; | |
return cloud; | |
}; | |
function place(board, tag, bounds) { | |
var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}], | |
startX = tag.x, | |
startY = tag.y, | |
maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]), | |
s = spiral(size), | |
dt = Math.random() < .5 ? 1 : -1, | |
t = -dt, | |
dxdy, | |
dx, | |
dy; | |
while (dxdy = s(t += dt)) { | |
dx = ~~dxdy[0]; | |
dy = ~~dxdy[1]; | |
if (Math.min(dx, dy) > maxDelta) break; | |
tag.x = startX + dx; | |
tag.y = startY + dy; | |
if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || | |
tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue; | |
// TODO only check for collisions within current bounds. | |
if (!bounds || !cloudCollide(tag, board, size[0])) { | |
if (!bounds || collideRects(tag, bounds)) { | |
var sprite = tag.sprite, | |
w = tag.width >> 5, | |
sw = size[0] >> 5, | |
lx = tag.x - (w << 4), | |
sx = lx & 0x7f, | |
msx = 32 - sx, | |
h = tag.y1 - tag.y0, | |
x = (tag.y + tag.y0) * sw + (lx >> 5), | |
last; | |
for (var j = 0; j < h; j++) { | |
last = 0; | |
for (var i = 0; i <= w; i++) { | |
board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0); | |
} | |
x += sw; | |
} | |
delete tag.sprite; | |
return true; | |
} | |
} | |
} | |
return false; | |
} | |
cloud.words = function(x) { | |
if (!arguments.length) return words; | |
words = x; | |
return cloud; | |
}; | |
cloud.size = function(x) { | |
if (!arguments.length) return size; | |
size = [+x[0], +x[1]]; | |
return cloud; | |
}; | |
cloud.font = function(x) { | |
if (!arguments.length) return font; | |
font = d3.functor(x); | |
return cloud; | |
}; | |
cloud.rotate = function(x) { | |
if (!arguments.length) return rotate; | |
rotate = d3.functor(x); | |
return cloud; | |
}; | |
cloud.text = function(x) { | |
if (!arguments.length) return text; | |
text = d3.functor(x); | |
return cloud; | |
}; | |
cloud.spiral = function(x) { | |
if (!arguments.length) return spiral; | |
spiral = spirals[x + ""] || x; | |
return cloud; | |
}; | |
cloud.fontSize = function(x) { | |
if (!arguments.length) return fontSize; | |
fontSize = d3.functor(x); | |
return cloud; | |
}; | |
cloud.padding = function(x) { | |
if (!arguments.length) return padding; | |
padding = d3.functor(x); | |
return cloud; | |
}; | |
return d3.rebind(cloud, event, "on"); | |
} | |
function cloudText(d) { | |
return d.text; | |
} | |
function cloudFont() { | |
return "serif"; | |
} | |
function cloudFontSize(d) { | |
return Math.sqrt(d.value); | |
} | |
function cloudRotate() { | |
return (~~(Math.random() * 6) - 3) * 30; | |
} | |
function cloudPadding() { | |
return 1; | |
} | |
// Fetches a monochrome sprite bitmap for the specified text. | |
// Load in batches for speed. | |
function cloudSprite(d, data, di) { | |
if (d.sprite) return; | |
c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio); | |
var x = 0, | |
y = 0, | |
maxh = 0, | |
n = data.length; | |
di--; | |
while (++di < n) { | |
d = data[di]; | |
c.save(); | |
c.font = ~~((d.size + 1) / ratio) + "px " + d.font; | |
var w = c.measureText(d.text + "m").width * ratio, | |
h = d.size << 1; | |
if (d.rotate) { | |
var sr = Math.sin(d.rotate * cloudRadians), | |
cr = Math.cos(d.rotate * cloudRadians), | |
wcr = w * cr, | |
wsr = w * sr, | |
hcr = h * cr, | |
hsr = h * sr; | |
w = (Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f) >> 5 << 5; | |
h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr)); | |
} else { | |
w = (w + 0x1f) >> 5 << 5; | |
} | |
if (h > maxh) maxh = h; | |
if (x + w >= (cw << 5)) { | |
x = 0; | |
y += maxh; | |
maxh = 0; | |
} | |
if (y + h >= ch) break; | |
c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio); | |
if (d.rotate) c.rotate(d.rotate * cloudRadians); | |
c.fillText(d.text, 0, 0); | |
c.restore(); | |
d.width = w; | |
d.height = h; | |
d.xoff = x; | |
d.yoff = y; | |
d.x1 = w >> 1; | |
d.y1 = h >> 1; | |
d.x0 = -d.x1; | |
d.y0 = -d.y1; | |
x += w; | |
} | |
var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data, | |
sprite = []; | |
while (--di >= 0) { | |
d = data[di]; | |
var w = d.width, | |
w32 = w >> 5, | |
h = d.y1 - d.y0, | |
p = d.padding; | |
// Zero the buffer | |
for (var i = 0; i < h * w32; i++) sprite[i] = 0; | |
x = d.xoff; | |
if (x == null) return; | |
y = d.yoff; | |
var seen = 0, | |
seenRow = -1; | |
for (var j = 0; j < h; j++) { | |
for (var i = 0; i < w; i++) { | |
var k = w32 * j + (i >> 5), | |
m = pixels[((y + j) * (cw << 5) + (x + i)) << 2] ? 1 << (31 - (i % 32)) : 0; | |
if (p) { | |
if (j) sprite[k - w32] |= m; | |
if (j < w - 1) sprite[k + w32] |= m; | |
m |= (m << 1) | (m >> 1); | |
} | |
sprite[k] |= m; | |
seen |= m; | |
} | |
if (seen) seenRow = j; | |
else { | |
d.y0++; | |
h--; | |
j--; | |
y++; | |
} | |
} | |
d.y1 = d.y0 + seenRow; | |
d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32); | |
} | |
} | |
// Use mask-based collision detection. | |
function cloudCollide(tag, board, sw) { | |
sw >>= 5; | |
var sprite = tag.sprite, | |
w = tag.width >> 5, | |
lx = tag.x - (w << 4), | |
sx = lx & 0x7f, | |
msx = 32 - sx, | |
h = tag.y1 - tag.y0, | |
x = (tag.y + tag.y0) * sw + (lx >> 5), | |
last; | |
for (var j = 0; j < h; j++) { | |
last = 0; | |
for (var i = 0; i <= w; i++) { | |
if (((last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) | |
& board[x + i]) return true; | |
} | |
x += sw; | |
} | |
return false; | |
} | |
function cloudBounds(bounds, d) { | |
var b0 = bounds[0], | |
b1 = bounds[1]; | |
if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0; | |
if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0; | |
if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1; | |
if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1; | |
} | |
function collideRects(a, b) { | |
return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y; | |
} | |
function archimedeanSpiral(size) { | |
var e = size[0] / size[1]; | |
return function(t) { | |
return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)]; | |
}; | |
} | |
function rectangularSpiral(size) { | |
var dy = 4, | |
dx = dy * size[0] / size[1], | |
x = 0, | |
y = 0; | |
return function(t) { | |
var sign = t < 0 ? -1 : 1; | |
// See triangular numbers: T_n = n * (n + 1) / 2. | |
switch ((Math.sqrt(1 + 4 * sign * t) - sign) & 3) { | |
case 0: x += dx; break; | |
case 1: y += dy; break; | |
case 2: x -= dx; break; | |
default: y -= dy; break; | |
} | |
return [x, y]; | |
}; | |
} | |
// TODO reuse arrays? | |
function zeroArray(n) { | |
var a = [], | |
i = -1; | |
while (++i < n) a[i] = 0; | |
return a; | |
} | |
var cloudRadians = Math.PI / 180, | |
cw = 1 << 11 >> 5, | |
ch = 1 << 11, | |
canvas, | |
ratio = 1; | |
if (typeof document !== "undefined") { | |
canvas = document.createElement("canvas"); | |
canvas.width = 1; | |
canvas.height = 1; | |
ratio = Math.sqrt(canvas.getContext("2d").getImageData(0, 0, 1, 1).data.length >> 2); | |
canvas.width = (cw << 5) / ratio; | |
canvas.height = ch / ratio; | |
} else { | |
// node-canvas support | |
var Canvas = require("canvas"); | |
canvas = new Canvas(cw << 5, ch); | |
} | |
var c = canvas.getContext("2d"), | |
spirals = { | |
archimedean: archimedeanSpiral, | |
rectangular: rectangularSpiral | |
}; | |
c.fillStyle = "red"; | |
c.textAlign = "center"; | |
exports.cloud = cloud; | |
})(typeof exports === "undefined" ? d3.layout || (d3.layout = {}) : exports); |
<!DOCTYPE html> | |
<html> | |
<head> | |
<style> | |
text:hover { | |
stroke: black; | |
} | |
</style> | |
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> | |
<script src="d3.layout.cloud.js"></script> | |
</head> | |
<body> | |
<div id="cloud"></div> | |
<script type="text/javascript"> | |
var weight = 3, // change me | |
width = 960, | |
height = 500; | |
var fill = d3.scale.category20(); | |
d3.csv("words.csv", function(d) { | |
return { | |
text: d.word, | |
size: +d.freq*weight | |
} | |
}, | |
function(data) { | |
d3.layout.cloud().size([width, height]).words(data) | |
//.rotate(function() { return ~~(Math.random() * 2) * 90; }) | |
.rotate(0) | |
.font("Impact") | |
.fontSize(function(d) { return d.size; }) | |
.on("end", draw) | |
.start(); | |
function draw(words) { | |
d3.select("#cloud").append("svg") | |
.attr("width", width) | |
.attr("height", height) | |
.append("g") | |
.attr("transform", "translate(" + width/2 + "," + height/2 + ")") | |
.selectAll("text") | |
.data(words) | |
.enter().append("text") | |
.style("font-size", function(d) { return d.size + "px"; }) | |
.style("font-family", "Impact") | |
.style("fill", function(d, i) { return fill(i); }) | |
.attr("text-anchor", "middle") | |
.attr("transform", function(d) { | |
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; | |
}) | |
.text(function(d) { return d.text; }); | |
} | |
}); | |
</script> | |
</body> | |
</html> |
word | freq | |
---|---|---|
거나 | 1 | |
보인 | 2 | |
이다 | 2 | |
보여 | 2 | |
추계 | 4 | |
이상 | 5 | |
원하면 | 1 | |
그리고 | 2 | |
위하 | 1 | |
-------------.--------------- | 1 | |
경비 | 1 | |
대표 | 1 | |
필요하거 | 1 | |
신청할 | 1 | |
다음 | 5 | |
이며 | 1 | |
비 | 1 | |
---------- | 1 | |
경우 | 16 | |
논의 | 1 | |
김학송 | 1 | |
11 | 2 | |
34 | 1 | |
델 | 1 | |
통계 | 2 | |
이러한 | 1 | |
기자 | 1 | |
실제 | 1 | |
이사철 | 1 | |
때 | 1 | |
에 | 24 | |
차 | 1 | |
구조 | 1 | |
느 | 1 | |
및 | 4 | |
주지 | 2 | |
조정함 | 2 | |
) | 26 | |
부터 | 2 | |
공 | 1 | |
여기 | 1 | |
지 | 2 | |
상향 | 1 | |
확대됨 | 1 | |
비용 | 17 | |
기업체 | 1 | |
활용하는 | 1 | |
대상 | 2 | |
· | 1 | |
며 | 1 | |
따르 | 2 | |
--------------. | 1 | |
한 | 12 | |
않는 | 2 | |
완 | 1 | |
까지 | 1 | |
2010 | 3 | |
923 | 1 | |
많은 | 1 | |
학년 | 2 | |
주로 | 1 | |
박영아 | 1 | |
B | 2 | |
특별한 | 1 | |
그만 | 1 | |
하여 | 5 | |
4649 | 1 | |
“ | 2 | |
달 | 1 | |
임금 | 1 | |
고용 | 14 | |
나 | 1 | |
이어질 | 1 | |
무 | 1 | |
사랑 | 1 | |
여부 | 2 | |
대한 | 1 | |
분석관 | 1 | |
보기 | 1 | |
기 | 1 | |
30 | 1 | |
------------------------- | 1 | |
황영철 | 1 | |
법안 | 1 | |
추정 | 1 | |
법률 | 7 | |
로서 | 1 | |
부모님 | 1 | |
세로 | 1 | |
일자리 | 1 | |
185 | 1 | |
출산 | 2 | |
연장 | 1 | |
같다 | 2 | |
라 | 1 | |
시키는 | 1 | |
796 | 1 | |
과 | 11 | |
세이 | 1 | |
해당함 | 1 | |
따뜻한 | 1 | |
태 | 1 | |
여배 | 1 | |
4 | 8 | |
정리하면 | 1 | |
대 | 1 | |
휴 | 2 | |
억원 | 2 | |
것 | 6 | |
200 | 2 | |
중 | 6 | |
① | 2 | |
현 | 1 | |
육 | 2 | |
안규백 | 1 | |
육아 | 1 | |
정확하게 | 1 | |
항제 | 4 | |
에게 | 7 | |
② | 2 | |
p | 6 | |
추진 | 1 | |
에서는 | 1 | |
문제 | 1 | |
현행 | 4 | |
항 | 3 | |
지급하는 | 2 | |
모 | 1 | |
하나 | 1 | |
값 | 2 | |
임용 | 2 | |
발생 | 3 | |
고 | 5 | |
있다 | 3 | |
연월일 | 1 | |
용 | 1 | |
만 | 19 | |
현황 | 3 | |
육아휴직 | 38 | |
는 | 10 | |
호의 | 1 | |
인데 | 1 | |
비례 | 1 | |
원 | 3 | |
3 | 8 | |
가능 | 4 | |
만원 | 3 | |
이명수 | 1 | |
대통령령 | 1 | |
있어 | 1 | |
국회예산정책처 | 2 | |
관련 | 2 | |
법령 | 2 | |
필요 | 1 | |
수급 | 2 | |
․ | 11 | |
에서 | 11 | |
따라서 | 3 | |
므 | 1 | |
중인 | 2 | |
재정 | 4 | |
899 | 1 | |
행정안전부 | 2 | |
지방 | 5 | |
급 | 5 | |
되는 | 1 | |
문 | 1 | |
하고 | 5 | |
학 | 1 | |
하는 | 1 | |
년 | 7 | |
어느 | 1 | |
또는 | 2 | |
2007 | 3 | |
발생하는 | 4 | |
개 | 1 | |
의욕 | 1 | |
정 | 3 | |
63 | 5 | |
10 | 6 | |
음 | 4 | |
02 | 1 | |
령 | 1 | |
받던 | 1 | |
까지의 | 1 | |
제안 | 1 | |
일부 | 4 | |
해당 | 1 | |
추가 | 8 | |
여가 | 1 | |
월급 | 9 | |
발생하지 | 3 | |
날 | 1 | |
문대비 | 1 | |
~ | 1 | |
이하 | 18 | |
은 | 12 | |
국가 | 2 | |
대입 | 1 | |
내용 | 1 | |
자료 | 6 | |
20 | 1 | |
/ | 1 | |
21 | 2 | |
056 | 1 | |
8 | 12 | |
크 | 2 | |
초등학교 | 6 | |
사정 | 1 | |
연 | 2 | |
로 | 13 | |
세 | 16 | |
아 | 2 | |
공포 | 1 | |
428 | 1 | |
41 | 1 | |
」 | 5 | |
순 | 1 | |
이 | 26 | |
를 | 18 | |
개정안 | 3 | |
가능한 | 1 | |
일반 | 1 | |
현행법 | 1 | |
인원 | 1 | |
+ | 3 | |
확대 | 1 | |
부 | 1 | |
주 | 2 | |
따라 | 7 | |
기간 | 1 | |
위해서 | 1 | |
예상된 | 3 | |
184 | 1 | |
정도 | 1 | |
35 | 1 | |
957 | 1 | |
71 | 1 | |
571 | 1 | |
예상됨 | 1 | |
⋅ | 2 | |
보다 | 2 | |
근거 | 1 | |
사 | 1 | |
∼ | 2 | |
조제 | 7 | |
장 | 1 | |
저학년 | 2 | |
변수 | 1 | |
적 | 1 | |
미 | 3 | |
정의화 | 2 | |
이나 | 2 | |
있는 | 2 | |
곧 | 1 | |
모델 | 1 | |
396 | 1 | |
전 | 2 | |
팀 | 2 | |
하더 | 2 | |
요인 | 1 | |
번 | 1 | |
말한 | 2 | |
2009 | 1 | |
나이 | 2 | |
다 | 23 | |
되 | 2 | |
, | 26 | |
관한 | 2 | |
발 | 1 | |
율 | 1 | |
). | 1 | |
자 | 24 | |
---------------------------- | 4 | |
돌보기 | 1 | |
라도 | 1 | |
[ | 4 | |
휴직 | 6 | |
급할 | 1 | |
있 | 1 | |
이기 | 1 | |
도 | 2 | |
일 | 1 | |
-------- | 1 | |
29 | 1 | |
600 | 1 | |
자는 | 1 | |
대체 | 16 | |
하려 | 1 | |
법 | 4 | |
--------------------------- | 2 | |
> | 5 | |
작성자 | 1 | |
다시 | 1 | |
때문 | 2 | |
신 | 1 | |
규정 | 1 | |
양립 | 1 | |
P | 9 | |
바탕 | 2 | |
라고 | 1 | |
대상자 | 3 | |
생 | 4 | |
6 | 16 | |
안 | 6 | |
” | 2 | |
예상되는 | 1 | |
수반 | 1 | |
보살핌 | 1 | |
늘어날 | 1 | |
- | 21 | |
수가 | 1 | |
% | 10 | |
× | 17 | |
등 | 1 | |
. | 61 | |
의원 | 2 | |
되어 | 1 | |
다만 | 1 | |
첨부 | 3 | |
N | 10 | |
44 | 1 | |
종 | 1 | |
일용직 | 1 | |
에도 | 2 | |
직 | 2 | |
연감 | 1 | |
발의 | 2 | |
할 | 5 | |
한시 | 1 | |
정의 | 1 | |
공무원 | 10 | |
고용노동부 | 3 | |
40 | 7 | |
인 | 5 | |
주요 | 1 | |
1 | 13 | |
월 | 8 | |
면 | 4 | |
해당한 | 1 | |
9 | 1 | |
여자 | 1 | |
권 | 1 | |
X | 7 | |
있으 | 1 | |
김정훈 | 1 | |
김 | 1 | |
어 | 1 | |
연령 | 8 | |
시행 | 2 | |
액 | 17 | |
힘들 | 1 | |
이유 | 1 | |
총 | 1 | |
두어 | 1 | |
하게 | 1 | |
9890 | 1 | |
받는 | 7 | |
예산 | 1 | |
하면 | 1 | |
지원 | 1 | |
( | 27 | |
같이 | 2 | |
명 | 5 | |
사유 | 3 | |
않은 | 1 | |
400 | 1 | |
단서 | 1 | |
보자 | 1 | |
인력 | 13 | |
신청 | 2 | |
저하 | 1 | |
수리 | 1 | |
미만 | 2 | |
현재 | 3 | |
남녀 | 1 | |
취학 | 3 | |
규칙 | 1 | |
50 | 1 | |
가정 | 7 | |
조 | 3 | |
작성하면 | 1 | |
A | 2 | |
급여 | 8 | |
교육 | 4 | |
배 | 1 | |
해당하는 | 1 | |
을 | 34 | |
소요 | 3 | |
확률 | 5 | |
예상 | 1 | |
임신 | 1 | |
야 | 2 | |
된 | 2 | |
단위 | 1 | |
이고 | 1 | |
19 | 1 | |
근로자 | 3 | |
658 | 1 | |
인건비 | 2 | |
취 | 1 | |
12 | 1 | |
평균 | 2 | |
다고 | 4 | |
이는 | 1 | |
지급해야 | 2 | |
788 | 1 | |
지급하던 | 2 | |
으로 | 7 | |
하기 | 2 | |
지급 | 3 | |
43 | 1 | |
행 | 1 | |
7 | 6 | |
의 | 46 | |
여의 | 1 | |
위하여 | 2 | |
발생한 | 9 | |
2008 | 1 | |
더 | 2 | |
145 | 1 | |
2011 | 6 | |
되었 | 1 | |
국가공무원 | 2 | |
예정 | 1 | |
작성 | 1 | |
836 | 2 | |
자녀 | 14 | |
의안 | 1 | |
만들 | 1 | |
하자 | 1 | |
이용 | 1 | |
0 | 5 | |
가 | 16 | |
대비하여 | 1 | |
여 | 12 | |
않 | 4 | |
알아보기 | 2 | |
제 | 13 | |
것임 | 2 | |
채용 | 1 | |
tanzania@assembly.go.kr | 1 | |
하 | 1 | |
호 | 8 | |
2 | 11 | |
서 | 3 | |
표 | 5 | |
929 | 1 | |
와 | 4 | |
김을동 | 1 | |
지방공무원법 | 4 | |
략 | 4 | |
③⋅④ | 2 | |
개정 | 8 | |
칙 | 1 | |
291 | 1 | |
여상규 | 1 | |
동 | 1 | |
수식 | 5 | |
에는 | 4 | |
양육 | 2 | |
볼 | 1 | |
평등 | 1 | |
수 | 7 | |
] | 4 | |
위 | 5 | |
「 | 5 | |
같 | 4 | |
없으 | 1 | |
: | 10 | |
각 | 1 | |
따른 | 2 | |
부모 | 1 | |
5 | 12 | |
하지 | 1 | |
차이 | 1 |