• Stars
    star
    138
  • Rank 263,005 (Top 6 %)
  • Language
    Shell
  • License
    Other
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Korean sejong corpus download and simple analysis

sejong-corpus

๊ตญ๋ฆฝ๊ตญ์–ด์› ์„ธ์ข… ๋ง๋ญ‰์น˜๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

๋ณธ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ์„ธ์ข… ๋ง๋ญ‰์น˜ ๊ด€๋ จ ํŒŒ์ผ๋“ค์ด 1400๊ฐœ๊ฐ€ ๋„˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ „์ฒด ํฌ๊ธฐ๋Š” 2GB์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฒŒ์‹œํŒ์„ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ๋ฐ›๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ง๋ญ‰์น˜์— ์‚ฌ์†Œํ•œ ์˜ค๋ฅ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์„ธ์ข… ๋ง๋ญ‰์น˜๋Š” ๊ฐœ์ž‘ ๋ฐ ์žฌ๋ฐฐํฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ผ์ด์„ผ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์—ฐ๊ตฌ์ž๋“ค์ด ๋ง๋ญ‰์น˜๋ฅผ ๋ฐ›์•„ ์˜ค๋ฅ˜๋ฅผ ๊ณ ์ณ๋„ ์žฌ๋ฐฐํฌ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ง๋ญ‰์น˜ ํŒŒ์ผ์„ ๋ฐ›์„ ๋•Œ ํ•ญ์ƒ ๋ณด์ด๋Š”, ์ž๋ฃŒ์— ๋Œ€ํ•œ ๋ผ์ด์„ผ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ทธ ๋ผ์ด์„ผ์Šค ๋…ธ์ถœ์„ ์šฐํšŒํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ, ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ๋ผ์ด์„ผ์Šค๋ฅผ ์ฝ๊ณ  ๋™์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ์ „ ๋™์˜ํ•ด์•ผ ํ•˜๋Š” ๋ผ์ด์„ผ์Šค์˜ ์‚ฌ๋ณธ์€ LICENSE.txt ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

๋””์Šคํฌ์— ์ตœ์†Œํ•œ 5GB๋Š” ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋ฐ UTF-8์œผ๋กœ ๋ณ€ํ™˜

$ make

๊ฒŒ์‹œํŒ์˜ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก์„ ์ถ”์ถœํ•˜๊ณ , ๊ฐ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ฒจ๋ถ€ํŒŒ์ผ์„ ๋ฐ›๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด ๋„ค ๋‹จ๊ณ„๋ฅผ ์ž๋™์ง„ํ–‰ ํ•ฉ๋‹ˆ๋‹ค.

STEP 0

์ด ๋‹จ๊ณ„์—์„œ๋Š” ํ•„์š”ํ•œ ํˆด์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—†๋Š” ๊ฒฝ์šฐ ์ ๋‹นํ•˜๊ฒŒ ์„ค์น˜๋ฅผ ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋ผ๋ฉด ์†Œ์Šค(00.prepare.sh) ๋ฅผ ๋ณด์‹œ๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

STEP 1

์ด ๋‹จ๊ณ„๋Š” ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

STEP 2

์ด ๋‹จ๊ณ„๋Š” ๊ฐ ๊ฒŒ์‹œ๋ฌผ์˜ ์ฒจ๋ถ€ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

STEP 3

์ด ๋‹จ๊ณ„๋Š” ์ฒจ๋ถ€ํŒŒ์ผ์˜ ํ˜•์‹(UTF16)์„ UTF8์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ฐ๊ตฌ์ž์˜ ์ˆ˜์ž‘์—… ํŒจ์น˜๋ฅผ ๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

ํ˜•ํƒœ์†Œ๋ณ„ ์‚ฌ์ „ ๋งŒ๋“ค๊ธฐ

$ make dic

๋ง๋ญ‰์น˜๊ฐ€ ์ค€๋น„๋˜์—ˆ์œผ๋ฉด (corpus-utf8 ๋””๋ ‰ํ† ๋ฆฌ์—) ํ•ด๋‹น ๋ง๋ญ‰์น˜๋กœ๋ถ€ํ„ฐ ํ˜•ํƒœ์†Œ ๋ถ„์„ ๊ฒฐ๊ณผ๋งŒ์„ ์ถ”์ถœํ•˜๊ณ  ์ถ”์ถœ๋œ ํ˜•ํƒœ์†Œ ๋ฐ ํƒœ๊น…๋œ ํ’ˆ์‚ฌ๋กœ๋ถ€ํ„ฐ ์—ญ์œผ๋กœ dictionary ๋””๋ ‰ํ† ๋ฆฌ์— ์‚ฌ์ „์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ž๋™์œผ๋กœ ์„ธ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

STEP 4

์ด ๋‹จ๊ณ„๋Š” ๊ฐ ํŒŒ์ผ ์ค‘ ํ˜•ํƒœ์†Œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ ํŒŒ์ผ์—์„œ ์œ ํ˜•์„ ๋”ฐ๋ผ ํŒŒ์ผ์„ ํ˜•ํƒœ์†Œ ๋ฐ ํ’ˆ์‚ฌ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ถœ๋œ ํŒŒ์ผ๋“ค์€ ์ตœ์ข… ํ†ตํ•ฉ๋˜์–ด ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

STEP 5

ํ†ตํ•ฉ๋œ ๊ฑฐ๋Œ€ ํŒŒ์ผ์„ ์ •๋ ฌํ•œ ๋’ค ์ธ์ ‘ํ•œ ์ค‘๋ณตํ–‰์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์œ ์ผํ•œ ํ‘œ์ œ์–ด๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

STEP 6

์œ ์ผํ•œ ํ‘œ์ œ์–ด ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค์Œ ๊ฐ ํ’ˆ์‚ฌ๋ณ„๋กœ ์ชผ๊ฐœ์–ด ํ’ˆ์‚ฌ(POS)๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค

์ˆ˜์ •

corpus/*.txt ํŒŒ์ผ์€ UTF18 ์›๋ณธ์ด๋ฏ€๋กœ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ง๋ญ‰์น˜์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ corpus-utf8/*.txt ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

make diff

์œ„ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด corpus-utf8.orig ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ์›๋ณธ ํŒŒ์ผ์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž‘์—…์ž๊ฐ€ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์ด ์žˆ๋Š” corpus-utf8 ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ฐ”๋€ ํŒŒ์ผ๋“ค์˜ ์ฐจ์ด๋งŒ์„ patches ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ patches/*.patch ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ corpus-utf8 ํŒŒ์ผ๋“ค์— patch ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

$ cat patches/* | patch -N -d corpus-utf8 -p1

์œ„์™€ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค. -N ์˜ต์…˜์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ์ ์šฉ๋œ ํŒจ์น˜๋Š” ๋ฌด์‹œํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์‚ฐ์ถœ๋ฌผ

  • logs/list.idx : ๊ตญ๋ฆฝ๊ตญ์–ด์› ์–ธ์–ด์ •๋ณด๋‚˜๋ˆ”ํ„ฐ ๊ฒŒ์‹œํŒ ๊ธ€ ๋ฒˆํ˜ธ
  • html/* :๊ฒŒ์‹œํŒ ์›๋ฌธ
  • download/* :๊ฒŒ์‹œํŒ ์ฒจ๋ถ€ํŒŒ์ผ
  • corpus/* :์ฒจ๋ถ€ํŒŒ์ผ์—์„œ ๋ง๋ญ‰์น˜ ์ถ”์ถœ
  • corpus-utf8/* :๋ง๋ญ‰์น˜๋ฅผ UTF8์œผ๋กœ ๋ณ€ํ™˜
  • corpus-utf8.orig/* :๋ง๋ญ‰์น˜๋ฅผ UTF8์œผ๋กœ ๋ณ€ํ™˜ํ•œ ์›๋ณธ (make diff ์ค‘ ์ƒ๊น€)
  • logs/download.log: ์ฒจ๋ถ€ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋ก
  • logs/words.dic: ๋‹จ์–ด/ํ’ˆ์‚ฌ๋ถ„์„ ์ถ”์ถœ ์›๋ณธ
  • logs/words-uniq.dic: ๋‹จ์–ด/ํ’ˆ์‚ฌ์˜ ์ค‘๋ณต ์ œ๊ฑฐ
  • dictionary/(POS).dic ํ’ˆ์‚ฌ๋ณ„ ์‚ฌ์ „

์ œ๊ณต๋˜๋Š” ๋„๊ตฌ

00.prepare.sh

  • ํ•„์š”ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ˜น์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ์„ค์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

10.list.sh

  • ์–ธ์–ด์ •๋ณด๋‚˜๋ˆ”ํ„ฐ ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
  • logs/list.idx ํŒŒ์ผ์— ๊ธ€์˜ ์‹œ์ฟฝ์Šค๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

20.schedule.sh

  • ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ผ€์ฅด๋Ÿฌ์ž…๋‹ˆ๋‹ค.
  • logs/list.idx ๋ฅผ ๊ฐ ๋‹ค์šด๋กœ๋”์— ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  • make ๋ช…๋ น์— ๋™์‹œ์— ์ ‘์†ํ•  ์ˆ˜๋ฅผ M์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์€ 4 ์ž…๋‹ˆ๋‹ค.
make M=10

21.getcontent.sh

  • 02.schedule.sh ์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ๊ฒŒ์‹œ๊ธ€ ๋‹ค์šด๋กœ๋”์ž…๋‹ˆ๋‹ค.
  • logs/list.idx ์˜ ์‹œ์ž‘์œ„์น˜์™€ ๊ฐฏ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. (Makefile ์ฐธ์กฐ)

22.download.sh

  • 03.getcontent.sh์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ์ฒจ๋ถ€ํŒŒ์ผ ๋‹ค์šด๋กœ๋”์ž…๋‹ˆ๋‹ค.
  • ์›น์„œ๋ฒ„๋Š” ์ฒจ๋ถ€ํŒŒ์ผ์ด ํ•œ ๊ฐœ์ธ ๊ฒฝ์šฐ txt ํŒŒ์ผ๋กœ, ์—ฌ๋Ÿฌ๊ฐœ์ธ๊ฒฝ์šฐ zip ํŒŒ์ผ๋กœ ๋ฌถ์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ›์€ ํŒŒ์ผ์€ corpus/XXXXXX.txt ํŒŒ์ผ๋กœ ์ €์žฅ ํ˜น์€ ์••์ถ•์ด ํ’€๋ฆฝ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํŒŒ์ผ์€ XML ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์›๋ฌธ, ํ˜•ํƒœ์†Œ๋ถ„์„, ๋‹จ์–ด์˜๋ฏธ๋ถ„์„ ๋“ฑ ์—ฌ๋Ÿฌ ํ˜•์‹์ด ์„ž์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

30.convert.sh

  • ๋ฐ›์€ ํŒŒ์ผ์€ utf16 ํฌ๋งท์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ utf8 ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋Œ€์ƒ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

31.convert-file.sh

  • ์›๋ณธ, ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„์„ ๋ฐ›์•„ ์‹ค์ œ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • UTF16์„ UTF8์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • 05.convert-xml-tag.py ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ xml escaping์„ ํ•ฉ๋‹ˆ๋‹ค.

33.patch.sh

  • ๊ฐ ํŒŒ์ผ์— ํ•ด๋‹นํ•˜๋Š” patch ํŒŒ์ผ๋“ค์„ ์ฐพ์•„ ํŒจ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค
  • ํŒจ์น˜ ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์€ patches/(CORPUSFILENAME)-(NNN).patch ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์›๋ณธ์˜ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋‚ด์šฉ๋งŒ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

32.convert-xml-tag.py

  • XML ํŒŒ์ผ ๋ณธ๋ฌธ์— CDATA ์˜์—ญ์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ์ด XML ๊ทœ์•ฝ์— ๋”ฐ๋ผ escaping๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ง๋ญ‰์น˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํƒœ๊ทธ๋“ค์„ ์ œ์™ธํ•œ ํƒœ๊ทธํ˜•์‹์˜ '<', '>' ๋ฌธ์ž๋ฅผ '<', '>' ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

40.extract.sh

  • ๋ฐ›์€ ํŒŒ์ผ ์ค‘์—์„œ ํ˜•ํƒœ์†Œ๋ถ„์„ํŒŒ์ผ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ˜•ํƒœ์†Œ ๋ถ„์„ ๊ฒฐ๊ณผ๋งŒ ์ถ”์ถœํ•˜๊ณ  ์ž/๋ชจ ๋ณด์ •์„ ํ•ฉ๋‹ˆ๋‹ค
  • ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ๋Š” logs/words.dic ์— ํ†ตํ•ฉํ•˜์—ฌ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

41.extract.py

  • 40.extract.sh์— ์˜ํ•ด ์‹คํ–‰๋˜๋ฉฐ ํŒŒ์ผ์—์„œ ํ˜•ํƒœ์†Œ ๋ถ„์„ ๋ถ€๋ถ„๋งŒ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค

42.jamo-conv.py

  • 40.extract.sh์— ์˜ํ•ด ์‹คํ–‰๋˜๋ฉฐ, ํ˜•ํƒœ์†Œ ๋ถ„์„ ๊ฒฐ๊ณผ์ค‘์—์„œ ํŠน์ • ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๋Š” ์ข…์„ฑ์„ ๊ทธ๋Œ€๋กœ ์ข…์„ฑ ์ฝ”๋“œ๋กœ ์ €์žฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ดˆ์„ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

60.build_dic.py

  • ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์žˆ๋Š” ํ˜•ํƒœ์†Œ ๋ถ„์„ ๊ฒฐ๊ณผ ๋ญ‰์น˜์—์„œ ๊ฐ ํ˜•ํƒœ์†Œ๋ณ„๋กœ dictionary/(POS).dic ํŒŒ์ผ๋กœ ๋ถ„ํ• ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

90.diff.sh

  • ์›๋ณธ ํŒŒ์ผ๊ณผ(corpus-utf8.orig/*.txt) ์ž‘์—…์ž๊ฐ€ ๋ณด์ •ํ•œ(corpus-utf8/*.txt) ํŒŒ์ผ์„ ๋น„๊ตํ•˜์—ฌ patches/*.patch ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.