Tetrapod Save Abandoned

😊 Improved swear word detection module

Project README
icon

Tetrapod.js

Tetrapod.js λŠ” λ³€ν˜•λœ μš•μ„€ 단어 ν‘œν˜„λ“€μ„ νŒŒμ•…ν•˜κ³  νƒμ§€ν•˜κΈ° μœ„ν•΄ 개발 되고 μžˆλŠ” λͺ¨λ“ˆν˜• ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. ν•œκ΅­μ–΄μ—μ„œ μ‘΄μž¬ν•˜λŠ” μš•μ„€ 단어듀을 μš°μ„ μ μœΌλ‘œ 탐지 λŒ€μƒμœΌλ‘œ μ •ν•˜μ—¬ 개발되고 있으며, ν–₯ν›„ λͺ¨λ“  μ–Έμ–΄μ—μ„œ λ³€ν˜•λœ μš•μ„€ ν‘œν˜„μ„ νƒμ§€ν•˜λŠ”λ° μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ 초기 개발 진행 쀑에 μžˆλŠ” ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ λͺ©ν‘œ

λŒ€μ²΄λ‘œ λΆ„μœ„κΈ°κ°€ 쒋지 μ•ŠμœΌλ©΄, μ–Έμ–΄ λ˜ν•œ κ·Έλ ‡κ²Œ λœλ‹€. (When the general atmosphere is bad, language must suffer)

인터넷 μƒμ—μ„œ λ‹€μˆ˜κ°€ λͺ¨μ—¬μ„œ λŒ€ν™” 쀑 λΆ„μœ„κΈ°κ°€ λ‚˜λΉ μ§€κ±°λ‚˜ μ‚¬νšŒ λ‚΄ λΆ„μœ„κΈ°κ°€ λ‚˜μ˜κ²Œ 되면, 이에따라 μ‚¬λžŒλ“€μ΄ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄ λ˜ν•œ κ³Όκ²©ν•˜κ²Œ λ˜κ±°λ‚˜ μš•μ„€λ‚˜ μ €μ†ν•œ 단어λ₯Ό μ„žμ–΄ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ΄ λ“±μž₯ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ˜ 근본적 원인은 μ‚¬νšŒμ  문제일 μˆ˜λ„, 개인적 문제일 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν‘œν˜„μ€ λ‹Ήμ‚¬μžμ˜ 감정을 λ‹΄κ³  있으며 이λ₯Ό λ³Έ μ‚¬λžŒλ“€ λ˜ν•œ 감정이 μƒν•˜κ²Œ λ˜λŠ” κ²½μš°κ°€ μƒκΉλ‹ˆλ‹€.

생각이 μ–Έμ–΄λ₯Ό μ˜€μ—Όμ‹œν‚¨λ‹€λ©΄, μ–Έμ–΄ μ—­μ‹œ 생각을 μ˜€μ—Όμ‹œν‚¬ 수 μžˆλ‹€. (If thought corrupts language, language can also corrupt thought.)

μ–Έμ–΄λŠ” 감정을 싀을 수 μžˆλŠ” 맀개체둜써, μ–΄λ– ν•œ 언어적 ν‘œν˜„μ„ 보고 기뢄이 λ‚˜μ˜κ²Œ λ§Œλ“œλŠ” 것 뿐만 μ•„λ‹ˆλΌ, μ–΄λ– ν•œ 감정을 μ „λ‹¬ν•˜κΈ° μœ„ν•œ λͺ©μ λ§Œμ„ μœ„ν•΄μ„œ μ‚¬νšŒμ μœΌλ‘œ 개인 λ˜λŠ” 집단에 μ˜ν•΄μ„œ λͺ¨λ‘κ°€ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄κ°€ λ³€ν˜•λ  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κ²Œ 언어에 λ‹΄κΈ°λŠ” κ°μ •μ—λŠ” 성적인 감정이 λ‹΄κΈΈ μˆ˜λ„, 폭λ ₯적인 감정이 λ‹΄κΈΈ μˆ˜λ„ 있으며 κ·Έ μœ ν˜•μ€ 맀우 λ‹€μ–‘ν•©λ‹ˆλ‹€.

ν•œκ΅­μ–΄λŠ” 자음과 λͺ¨μŒμ„ λͺ¨μ•„μ„œ μ“Έ 수 μžˆλŠ” λͺ¨μ•„μ“°κΈ°κ°€ κ°€λŠ₯ν•œ μ μ—μ„œ κΈ°μ‘΄ λ‹€λ₯Έ μ–Έμ–΄κΆŒκ³ΌλŠ” λ‹€λ₯΄κ²Œ μ–΄λ– ν•œ 단어가 λ³€ν˜•λ˜μ–΄ 생길 수 μžˆλŠ” νŒŒμƒλ‹¨μ–΄μ˜ μˆ˜κ°€ 맀우 많이 μ‘΄μž¬ν•  수 있으며, μ΄λ ‡κ²Œ λ³€ν˜• & νŒŒμƒλœ μš•μ„€ 단어λ₯Ό κΈ°κ³„μ μœΌλ‘œ νƒμ§€ν•˜κΈ° 맀우 μ–΄λ €μš΄ ꡬ쑰λ₯Ό κ°–μΆ”κ³  μžˆμŠ΅λ‹ˆλ‹€.

μžμ‹ μ΄ μ“°λŠ” μ–Έμ–΄λ₯Ό κ°„κ²°ν•˜κ²Œ ν•œλ‹€λ©΄, κ°€μž₯ 어리석은 ν†΅μ„€λ‘œλΆ€ν„° μžμœ λ‘œμ›Œμ§ˆ 수 μžˆλ‹€. λΆˆν•„μš”ν•œ κ΄€μš©μ–΄λ₯Ό μ“Έ 수 μ—†μœΌλ©°, 어리석은 ν‘œν˜„μ„ μ“°λ©΄ κ·Έ μ–΄λ¦¬μ„μŒμ΄ μŠ€μŠ€λ‘œμ—κ²Œλ„ λΆ„λͺ…νžˆ λ“œλŸ¬λ‚˜ 보이게 λœλ‹€. (If you simplify your English, you are freed from the worst follies of orthodoxy. You cannot speak any of the necessary dialects, and when you make a stupid remark its stupidity will be obvious, even to yourself.)

이 ν”„λ‘œμ νŠΈμ˜ λͺ©ν‘œλŠ” 인터넷 μƒμ—μ„œ λ²”λžŒν•˜λŠ” μš•μ„€μ΄ λ¬΄λΆ„λ³„ν•˜κ²Œ νΌμ§€λŠ” 것을 방지할 수 μžˆλŠ” μ–΄λ– ν•œ λ°©νŒŒμ œμ™€ 같은 λͺ¨λ“ˆμ„ κ°œλ°œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λͺ¨λ“ˆμ΄ λ§Žμ€ κ³³μ—μ„œ μ‚¬μš©λ˜λ„λ‘ ν•˜λŠ” 것을 λͺ©μ μœΌλ‘œ ν•˜κΈ°μ— 이 ν”„λ‘œμ νŠΈμ˜ μ €μž‘κΆŒμ€ Copyleft 둜 κ΅¬μ„±λ˜λ©° 상업적 비상업적 ꡬ뢄을 가리지 μ•Šκ³  μ–΄λ– ν•œ μ„œλΉ„μŠ€λ“  무료둜 자유둜운 μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ²Œλ” ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

λΌμ΄μ„ΌμŠ€

MIT Licensed

κΈ°μ‘΄ μš•μ„€ 탐지 μ²΄κ³„μ˜ ν•œκ³„

기쑴의 필터링은 λ¬Έμž₯ λ‹¨μœ„λ‘œ μš•μ„€ λ¬Έμžκ°€ λ¬Έμžμ—΄ 상에 μ‘΄μž¬ν•˜λŠ”μ§€ λ§Œμ„ ν™•μΈν•©λ‹ˆλ‹€. κ°€λ Ή 바보 λΌλŠ” μš•μ„€λ₯Ό μ°¨λ‹¨ν•˜λ € ν• λ•Œ μ΄μš©μžκ°€ μ•ˆλ…• 바보야 λΌλŠ” 메세지λ₯Ό μž…λ ₯ν–ˆλ‹€λ©΄, λ°”λ³΄λΌλŠ” λ¬Έμž₯이 μ‘΄μž¬ν•˜λŠ” κ²½μš°μ™€ 같이, λ³€ν˜•λ˜μ§€ μ•Šμ€ μš•μ„€μ΄ μ‘΄μž¬ν•˜λŠ” λ©”μ‹œμ§€μ— ν•œν•΄μ„œλ§Œ 탐지가 κ°€λŠ₯ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ•„λž˜μ™€ 같은 λ³€ν˜•μ— λŒ€ν•΄μ„œλŠ” λŒ€μ²˜ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

  • 문자 사이사이에 λΆˆκ·œμΉ™ν•œ κΈ€μžλ₯Ό μ„žμ—ˆμ„ λ•Œ
    • μ•ˆλ…• λ°”111보야, μ•ˆλ…• 바아아아보야
  • 발음 상 λ˜λŠ” λͺ¨μ–‘ 상 μœ μ‚¬ν•œ ν‘œν˜„μœΌλ‘œ λŒ€μ²΄ν•œ 경우
    • μ•ˆλ…• λΉ μ•„λ½€μ˜€μ•Ό!, μ•ˆλ…• ba보야!
  • ν•œκΈ€ λ°›μΉ¨ λ“± νŠΉμˆ˜ν•œ 쑰합을 μ΄μš©ν•΄ λ³€ν˜•ν•œ μš•μ„€μ˜ 경우
    • κ°’μ‚Ύν•ͺλ‹šλ‹Ά
  • 문자λ₯Ό 일뢀 λ’€μ§‘μ–΄μ„œ ν‘œν˜„ν•œκ²½μš°
    • 제발 μ’€ μž… λ‹₯쳐! => 제발 μ’€ μž… 쳐λ‹₯!

λ˜ν•œ μš•μ„€λ₯Ό 일뢀 ν¬ν•¨ν•˜κ³  μžˆμ§€λ§Œ μ •μƒμ μœΌλ‘œ 쓰일 수 μžˆλŠ” 단어듀이 μ‘΄μž¬ν•˜μ—¬ 일뢀 ν‘œν˜„μ„ μ˜€νƒμ§€ν•  ν™•λ₯ μ„ 높이기도 ν•©λ‹ˆλ‹€.

  • ν•œμž λ°œμŒμƒ λ™μΌν•œ λ‹¨μ–΄μ΄λ‚˜ 뜻이 λ‹€λ₯Έ ν‘œν˜„μ΄ 일뢀 더해져 μžˆλŠ” 경우
    • κ·Έ μ‚¬κ±΄μ˜ μ‹œλ°œμ μ€ Aμ”¨μ˜€λ‹€.

Tetrapod.js 은 μ΄λŸ¬ν•œ μš•μ„€ 탐지 μ•Œκ³ λ¦¬μ¦˜μ˜ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ°μœ„ν•΄μ„œ, 정상단어λ₯Ό λ¨Όμ € μ°Ύμ•„μ„œ 탐지 λ²”μœ„μ—μ„œ λ°°μ œν•œλ‹€μŒ, μš•μ„€ 단어λ₯Ό ν•œ κΈ€μž μ”© μ‘΄μž¬μ—¬λΆ€λ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€. λ˜ν•œ ν•œκ΅­μ–΄ μš•μ„€μ„ μˆ˜μ§‘ν•˜κ³  ν•΄λ‹Ή μš•μ„€μ˜ λ³€ν˜•μœ ν˜•μ„ 음운, 음절, μ–΄μ ˆ 3단계에 κ±Έμ³μ„œ κ°€λŠ₯ν•œ λͺ¨λ“  λ³€ν˜•κ°€λŠ₯ν•œ ν˜•νƒœλ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 상 탐지 μ•Œκ³ λ¦¬μ¦˜ ꡬ성

Tetrapod.js μ—μ„œ μ‚¬μš©ν•˜λŠ” μš•μ„€ 탐지 μ•Œκ³ λ¦¬μ¦˜μ˜ ꡬ성은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

정상단어 λͺ©λ‘ ꡬ성

  • μ‹œλ°œμ κ³Ό 같은 λ‹¨μ–΄μ˜ μ˜€νƒμ§€λ₯Ό 막기 μœ„ν•΄μ„œ 사전에 λ¬Έμžμ—΄μ—μ„œ μ°Ύμ•„μ„œ μš•μ„€ νƒμ§€μ‹œ νƒμ§€λŒ€μƒμ—μ„œ μ œμ™Έμ‹œν‚¬ μš©λ„μ˜ 정상단어 λͺ©λ‘μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€.

μš•μ„€λ‹¨μ–΄ λͺ©λ‘ ꡬ성

  • μ—¬λŸ¬ μš•μ„€ λ‹¨μ–΄μ˜ λ³€ν˜•μ„ λͺ¨λ‘ νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ, 음운, 음절, μ–΄μ ˆ 3단계에 κ±Έμ³μ„œ 각 κΈ€μž μš”μ†Œλ“€μ˜ λ³€ν˜•μ„ λͺ¨λ‘ νŒŒμ•…ν•˜μ—¬μ„œ μš•μ„€ 단어 λͺ©λ‘μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€. ν•΄λ‹Ή λ‚΄μš©μ€ ν•˜λ‹¨μ— Bias κ΅¬μ„±λž€ μ—μ„œ μžμ„Ένžˆ μ„€λͺ…ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 상 탐지 μ•Œκ³ λ¦¬μ¦˜ ꡬ성

Tetrapod.js μ—μ„œ μ‚¬μš©ν•˜λŠ” μš•μ„€ 탐지 μ•Œκ³ λ¦¬μ¦˜μ˜ 진행과정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

정상 단어 탐색 ν›„ 배제

  • λ©”μ‹œμ§€μ—μ„œ 정상단어λ₯Ό μ°Ύμ•„μ„œ ν•΄λ‹Ή λ¬Έμžμ—΄μ˜ μ‹œμž‘ μœ„μΉ˜μ™€ λλ‚˜λŠ” μœ„μΉ˜λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€. ν•΄λ‹Ή λ¬Έμžμ—΄ λ²”μœ„λŠ” 이후 μ•Œκ³ λ¦¬μ¦˜ νƒμ§€μ‹œ λ²”μœ„μ—μ„œ λ°°μ œλ©λ‹ˆλ‹€.

λ©”μ‹œμ§€μ˜ 15μžλ‹¨μœ„ 뢄리

  • λͺ¨λ“  λ¬Έμžμ—΄μ€ 15자 λ‹¨μœ„μ˜ 청크 λ©”μ‹œμ§€ 둜 λΆ„λ¦¬λ©λ‹ˆλ‹€.

ν•œ κΈ€μžμ”© μš•μ„€ 단어 탐색

  • κ°–μΆ”κ³  μžˆλŠ” λͺ¨λ“  μš•μ„€ 문자λ₯Ό κΈ€μžλ‹¨μœ„λ‘œ λͺ¨λ‘ λΆ„λ¦¬ν•©λ‹ˆλ‹€. κ·Έ ν›„ 청크 λ©”μ‹œμ§€μ— ν•΄λ‹Ή μš•μ„€ 문자의 κΈ€μžκ°€ μ‘΄μž¬ν•˜λŠ”μ§€, λͺ‡λ²ˆμ§Έ μœ„μΉ˜μ— μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€.
  • λ§Œμ•½ λ¬Έμžλ“€μ΄ λͺ¨λ‘ μ‘΄μž¬ν•  경우 ν•΄λ‹Ή λ¬Έμžλ“€μ˜ μœ„μΉ˜λ₯Ό ν•΄λ‹Ή μš•μ„€ λ‹¨μ–΄μ˜ κΈ€μžμˆœμ„œλŒ€λ‘œ μ •λ ¬ν•©λ‹ˆλ‹€. μ΄λ•Œ λ§Œμ•½ μˆœμ„œκ°€ μΌκ΄€λ˜μ§€ μ•Šλ‹€λ©΄ κΈ€μžκ°€ μ„žμ—¬μžˆλŠ” κ²ƒμœΌλ‘œ κ°„μ£Όν•©λ‹ˆλ‹€.
  • λ§Œμ•½ κΈ€μžκ°€ μ„žμ—¬μžˆλŠ” 경우 μš•μ„€ λ‹¨μ–΄μ˜ 사이에 μ™„μ„±λœ ν•œκΈ€ λ¬Έμžκ°€ μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό ν™•μΈν•˜κ³  μ‘΄μž¬ν•œλ‹€λ©΄ 이λ₯Ό μš•μ„€ λͺ©λ‘μ—μ„œ μ œμ™Έν•©λ‹ˆλ‹€. (γ„±, γ…™ λŠ” μ™„μ„±λœ ν•œκΈ€μ΄ μ•„λ‹ˆλ©° μ™„μ„±λœ ν•œκΈ€μ€ μœ λ‹ˆμ½”λ“œλ‘œ κ°€(0xAC00) ~ 힣(0xD7A3) μ‚¬μ΄μ˜ κΈ€μžλ₯Ό λœ»ν•©λ‹ˆλ‹€.) λ˜ν•œ μ™„μ„±ν˜• κΈ€μžμ΄λ”λΌλ„ 자음이 γ…‡ μΈκ²½μš°μ—λŠ” μš•μ„€ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예: λ°”μ•„μ•„λ³΄μ˜€ 와 같이 μ΄μ–΄μ£ΌλŠ” 음의 경우 μš•μ„€ μ²˜λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

Bias 데이터 포멧

  • μš•μ„€ λ‹¨μ–΄λŠ” μŒμš΄λ§ˆλ‹€ 발음이 μ•½κ°„μ”© λ‹¬λΌμ§€κ±°λ‚˜ λͺ¨μ–‘이 μ•½κ°„μ”© λ‹¬λΌμ§€λŠ” λ³€ν˜• 단어가 νŒŒμƒλ  수 μžˆμœΌλ―€λ‘œ, 각 μŒμš΄λ³„λ‘œ λͺ¨λ“  λ³€ν˜• κ°€λŠ₯ν•œ 쑰합을 μ•Œμ•„λ‚΄μ•Όν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό λͺ…ν™•ν•˜κ²Œ νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ λͺ¨λ“  음운과 음절, μ–΄μ ˆμ— 쓰일 수 μžˆλŠ” ꡬ쑰λ₯Ό 1차원 λ°°μ—΄ λ˜λŠ” 2차원 λ°°μ—΄λ‘œ ν‘œν˜„ν•˜μ—¬μ„œ λ³€ν˜•κ΅¬μ‘°λ₯Ό μ–΄μ ˆλ‹¨κ³„μ—μ„œ νŒŒμ•…ν•  수 μžˆλŠ” μ–΄λ– ν•œ 데이터 ꡬ쑰가 ν•„μš”ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œ 개발된 데이터 ꡬ쑰가 Bias 데이터 ν¬λ©§μž…λ‹ˆλ‹€.

RecursiveList

  • Bias 데이터 포멧은 필터에 μ‚¬μš©λ  μš•μ„€λ₯Ό 2차원 배열을 μ€‘μ²©ν•΄λ‚˜κ°€λ©΄μ„œ 쑰합될 λ‹¨μ–΄μ˜ λͺ©λ‘μ„ ꡬ성할 수 있게 λ•μŠ΅λ‹ˆλ‹€. 2차원 배열은 before+after ꡬ쑰둜, 각 차원 데이터가 ν•©μ³μ Έμ„œ 단어λ₯Ό κ΅¬μ„±ν•˜κ²Œ λ©λ‹ˆλ‹€. 이λ₯Ό RecursiveList 라고 ν•˜λ©° λ‹€μŒκ³Ό 같은 μ˜ˆμ‹œν˜•νƒœλ‘œ ꡬ성될 수 μžˆμŠ΅λ‹ˆλ‹€.
2차원 λ°°μ—΄ μ˜ˆμ‹œ
let data = [[
    "λ°”",
    "ba"
],[
    "보",
    "bo"
]]
let result = Bias.recursiveList(data)
let resultCheck = [
    "바보",
    "λ°”bo",
    "ba보",
    "babo"
]
console.log(result == resultCheck)
// true
μ€‘μ²©λœ 2차원 λ°°μ—΄ μ˜ˆμ‹œ

RecursiveList λ‘œλŠ” 자음과 λͺ¨μŒμ˜ λ³€ν˜•κ³Όμ •μ„ μ„ΈλΆ„ν™”ν•΄μ„œ λͺ…μ‹œν•˜λŠ”λ° μ ν•©ν•œ ꡬ쑰λ₯Ό κ°–μΆ”κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 자음 λͺ¨μŒμ„ ν•©μ„±ν•΄μ„œ μ™„μ„±λœ ν•œκΈ€λ¬Έμžλ‘œ ν•©μΉœλ‹€λ˜μ§€, 자음과 λͺ¨μŒμ„ μž¬ν™œμš©ν•  수 μžˆλŠ” μ–΄λ– ν•œ κ΅¬μ‘°λŠ” RecursiveComponent μ—μ„œ λ‹€λ£Ήλ‹ˆλ‹€.

let data = [[
    [[
        'γ…‚',
        'γ…ƒ'
    ],[
        'ㅏ',
        'γ…‘'
    ]],
    "ba"
],[
    "보",
    "bo"
]]
let result = Bias.recursiveList(data)
let resultCheck = [
    "ㅂㅏ보",
    "ㅂㅑ보",
    "ㅃㅏ보",
    "ㅃㅑ보",
    "ㅂㅏbo",
    "γ…‚γ…‘bo",
    "ㅃㅏbo",
    "γ…ƒγ…‘bo",
    "ba보",
    "babo"
]
console.log(result == resultCheck)
// true

RecursiveComponent

RecursiveComponent λŠ” RecursiveList 의 μž¬μ‚¬μš©μ„±μ„ 높이고 λ°°μ—΄ μƒμ—μ„œ μ‚¬μš©κ°€λŠ₯ν•œ 뢀가적인 ν•¨μˆ˜κ°œλ…μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

λ³€μˆ˜ 및 μ½”λ“œ 뢄리

RecursiveComponent λŠ” λ³€μˆ˜μ™€ μ½”λ“œκ°€ μ‘΄μž¬ν•˜λ©°, 자음과 λͺ¨μŒ 같이 ν•œκΈ€λ¬Έμžμ˜ μ΅œμ†Œ λ‹¨μœ„μΈ 음운 을 RecursiveList 둜 ν‘œν˜„ν•  λ•Œ μž¬ν™œμš©μ„±μ„ 높이기 μœ„ν•΄μ„œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©°, ν•΄λ‹Ή μŒμš΄λ“€λ‘œ μ–΄λ– ν•œ μ΅œμ’…μ μΈ μŒμ ˆμ„ ꡬ성할 λ•Œ μ½”λ“œ λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

자유둜운 JSON νŒŒμΌκ΅¬μ„±

RecursiveComponent λ₯Ό ꡬ성할 λ•Œ ν•œκ΅­μ–΄μ˜ 경우 음운, 음절, μ–΄μ ˆ 의 ν˜•νƒœλ‘œ ꡬ성될 수 μžˆμ§€λ§Œ, ν–₯ν›„ 개발 κ³Όμ •μ—μ„œ μƒˆλ‘œμš΄κ΅¬μ‘°κ°€ ν•„μš”ν•˜κ±°λ‚˜, μ°¨ν›„ λ‹€λ₯Έ 언어에 ν™•μž₯ν˜•νƒœλ‘œ λ‹€λ₯Έ ꡬ쑰λ₯Ό μ·¨ν•΄μ•Όν•  κ°€λŠ₯성이 μžˆκΈ°μ—, 보닀 μœ μ—°ν•˜κ²Œ 데이터λ₯Ό 뢄리해야할 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œ JSON ν˜•νƒœλ‘œ 데이터λ₯Ό ν‘œν˜„ν•  수 있게 ν—ˆμš©ν•˜κ³  있으며, JSON λ°μ΄ν„°λŠ” ν•΄λ‹Ή μ†ŒμŠ€ν΄λ” μ•ˆμ—λ§Œ μžˆλ‹€λ©΄ 내뢀에 μ–Όλ§ˆλ‚˜ μ€‘μ²©λœ ν΄λ”μ•„λž˜μ— JSON파일이 μ‘΄μž¬ν•˜λ˜, μ–΄λ–€ μ΄λ¦„μœΌλ‘œ 폴더가 μ‘΄μž¬ν•˜λ˜, μ–΄λ–€ μ΄λ¦„μœΌλ‘œ JSON 파일이 μ‘΄μž¬ν•˜λ˜ 이λ₯Ό λͺ¨λ‘ μˆ˜μ§‘ν•΄μ„œ ꡬ성할 수 μžˆκ²Œλ” RecursiveComponent λ₯Ό κ΅¬μ„±ν•˜μ˜€κ³ , 이λ₯Ό ν†΅ν•΄μ„œ 자유둭게 데이터 λͺ…μΉ­ λΆ€μ—¬λ₯Ό ν•˜κ³  자유둜운 데이터 μΉ΄ν…Œκ³ λ¦¬ λΆ€μ—¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

JSONλ‚΄μ—μ„œμ˜ λ³€μˆ˜ ꡬ성 예

JSON μ—μ„œ 객체λ₯Ό ν•˜λ‚˜ 생성후 κ·Έ μ•ˆμ— var λΌλŠ” μ΄λ¦„μ˜ 객체λ₯Ό ν•˜λ‚˜ λ‹΄μœΌλ©΄, κ·Έ var 객체 μ•ˆμ— λ³€μˆ˜λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•œκ΅­μ–΄ λ°μ΄ν„°μ˜ κ²½μš°μ—” 이λ₯Ό ν†΅ν•΄μ„œ 음운 데이터λ₯Ό κ΅¬μ„±ν•˜λ©°, 이 κ³Όμ •μ—μ„œ ν•œ 음운의 λ°œμŒλ³€ν˜• κ³Ό λͺ¨μ–‘λ³€ν˜• 데이터λ₯Ό RecursiveComponent 둜 λͺ¨λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ κ΅¬μ„±λœ γ…‚ 의 음운 데이터화 μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

{
    "var": {
        "γ…‚_λ°œμŒλ³€ν˜•": [
            "γ…‚",
            "γ…ƒ",
            "ㅍ"
        ],
        "γ…‚_λͺ¨μ–‘λ³€ν˜•": [
            "γ…‚",
            "γ…ƒ",
            "ㅍ",
            "b",
            "f"
        ]
    }
}
JSONλ‚΄μ—μ„œ λ³€μˆ˜ κ°„ μ°Έμ‘°

JSON ν˜•νƒœλ‘œ Bias 데이터λ₯Ό ꡬ성할 λ•Œ λ³€μˆ˜λ₯Ό ꡬ성할 수 μžˆλŠ”λ°, 이 λ³€μˆ˜ λ‚΄μ—μ„œ λ‹€λ₯Έ λ³€μˆ˜λ₯Ό μ¨μ•Όν•˜λŠ” 상황이 생길 수 μžˆμŠ΅λ‹ˆλ‹€. ν•œκ΅­μ–΄λŠ” 주둜 음절 데이터 κ΅¬μ„±μ‹œ 음운 λ³€μˆ˜λ₯Ό λΆˆλŸ¬μ™€μ•Όν•¨κ³Ό λ™μ‹œμ— μžμ‹ λ„ λ³€μˆ˜μ—¬μ•Όν•˜λŠ” 상황이 λ°œμƒν•˜λŠ”λ°, 이런 상황을 μœ„ν•΄μ„œ λ³€μˆ˜κ°€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ³€μˆ˜λŠ” RecursiveList λ₯Ό μ‚¬μš©ν• λ•Œ μš”μ†Œ μ•žμ— *λ₯Ό λΆ™μ—¬μ„œ μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή μœ„μΉ˜μ— λ³€μˆ˜ 데이터가 μ°Έμ‘°λ©λ‹ˆλ‹€. 음절 데이터 ꡬ성 μ‹œ 자음과 λͺ¨μŒμ„ ν•©μ³μ„œ μ™„μ„±λœ ν•œκΈ€ κΈ€μžλ₯Ό λ§Œλ“€μ–΄μ•Όν•˜λŠ” κ²½μš°κ°€ μƒκΈ°λŠ”λ°, 이럴 λ•Œλ₯Ό μœ„ν•œ 자λͺ¨ν•©μ„± ν•¨μˆ˜κΈ°λŠ₯ λ˜ν•œ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 자λͺ¨λ₯Ό ν•©μ„±ν•΄μ„œ μ™„μ„±λœ ν•œκΈ€ κΈ€μžλ₯Ό λ§Œλ“€μ§€ μ•Šκ³  자λͺ¨λ₯Ό 각각 λΆ„λ¦¬λœ κΈ€μžμ²˜λŸΌ μ·¨κΈ‰ν•˜λŠ” 것은 단어병합 ν•¨μˆ˜ 라고 ν•©λ‹ˆλ‹€. 기본적으둜 RecursiveList λŠ” 단어병합 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μž‘λ™λ˜μ§€λ§Œ, 자λͺ¨ν•©μ„±κ³Ό 차이λ₯Ό λͺ…ν™•ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ ν•¨μˆ˜λͺ…을 ν‘œκΈ°ν•΄μ„œ ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ³€μˆ˜κ°„ μ°Έμ‘° 및 ν•¨μˆ˜ μ‚¬μš© 예
{
    "var": {
        "μ‹œ": [
            {
                "type": "단어병합",
                "data": [[
                    "*γ……_λͺ¨μ–‘λ³€ν˜•"
                ], [
                    ""
                ]]
            },

            {
                "type": "자λͺ¨ν•©μ„±",
                "data": [
                    [
                        "γ……",
                        "γ…†"
                    ], [
                        "*γ…£_λ°œμŒλ³€ν˜•"
                    ]
                ],
                "exclude": ["μ‡ "]
            }
        ]
    }
}
단어병합 ν•¨μˆ˜ 및 μ½”λ“œ ꡬ성 예

code λŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ μ΅œμ’…μ μœΌλ‘œ μ •μ˜λ  데이터λ₯Ό μ •μ˜ν•˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€. ν•œκΈ€μ—μ„œλŠ” μ–΄μ ˆ 을 정리할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. μ΅œμ’…μ μœΌλ‘œ μ‚°μΆœλœ κ²°κ³Όλ¬Ό 쀑 λ°°μ œν•˜κ³  싢은 단어λ₯Ό exclude 뢀뢄에 μž…λ ₯ν•΄μ£Όλ©΄ ν•΄λ‹Ή λ‹¨μ–΄λŠ” κ²°κ³Όλ¬Όμ—μ„œ μ‚­μ œλœμ±„λ‘œ λ°˜ν™˜λ©λ‹ˆλ‹€.

{
    "code": [

        {
            "type": "단어병합",
            "data": [[
                "*λ°”"
            ],[
                "*보"
            ]],
            "exclude": [
                "babo"
            ]
        }

    ]
}

μ£Όμ˜μ‚¬ν•­

λ‹¨μ–΄λ³‘ν•©μ‹œ μ£Όμ˜μ‚¬ν•­
  • 단어병합 ν•¨μˆ˜λŠ” ν•œκΈ€ κΈ€μž 자λͺ¨μ— 각각 ν•œκΈ€μžμ”©μ„ ν• λ‹Ήν•΄μ„œ λ³‘ν•©ν•˜λŠ” ν•¨μˆ˜λ₯Ό λœ»ν•©λ‹ˆλ‹€. (예: ㅂㅏㅂㅗ-> ㅂㅏㅂㅗ)
  • 자음만으둜 μš•μ„€κ°€ 될 수 μžˆλŠ” μš•μ„€μ˜ κ²½μš°μ—” λ‹¨μ–΄λ³‘ν•©μ‹œ λͺ¨μŒμ„ μ ˆλŒ€ μΆ”κ°€λ‘œ ν‘œκΈ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • λΆˆν•„μš”ν•œ λͺ¨μŒμ„ μΆ”κ°€ν•˜λ©΄ λΆˆν•„μš”ν•œ μš©λŸ‰μ¦κ°€μ™€ μ²˜λ¦¬μ†λ„ 지연을 λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.
자λͺ¨ν•©μ„±μ‹œ μ£Όμ˜μ‚¬ν•­
  • 자λͺ¨ν•©μ„± ν•¨μˆ˜λŠ” ν•œκΈ€ κΈ€μž 자λͺ¨λ₯Ό μ΅œλŒ€ν•œ ν•œκΈ€μžλ‘œ λͺ°μ•„μ„œ λ³‘ν•©ν•˜λŠ” ν•¨μˆ˜λ₯Ό λœ»ν•©λ‹ˆλ‹€. (예: ㅂㅏㅂㅗ-> 바보)
  • γ…‚γ…—γ…‘ 와 같이 ν•œκΈ€μžλ‘œ 합성될 수 μ—†λŠ” 단어 합성을 μ ˆλŒ€μ μœΌλ‘œ ν”Όν•΄μ•Όν•©λ‹ˆλ‹€.

ν•΄λ‹Ή μš•μ„€ 탐지 μ²΄κ³„μ˜ ν•œκ³„

ν˜„μž¬ νŒŒμ•…ν•œ μš•μ„€ 탐지 μ²΄κ³„μ˜ ν•œκ³„λ₯Ό κΈ°λ‘ν•΄λ†“μŠ΅λ‹ˆλ‹€.

ν‘œν˜„μ˜λ„μ˜ νŒλ‹¨ λΆˆκ°€

ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” λ¬Έλ§₯을 μ΄ν•΄ν•˜κ³  λ¬Έλ§₯μƒμ—μ„œ μ–΄λ– ν•œ 단어가 λΆ€μ μ ˆν•œ μ˜λ„λ‘œ μ‚¬μš©λ˜μ—ˆλŠ”μ§€, ν‘œν˜„μ˜λ„ λ₯Ό νŒλ‹¨ν•˜μ§€λŠ” λͺ»ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κ·ΈλŸ¬ν•œ ν‘œν˜„μ˜λ„λ₯Ό νŒŒμ•…ν•˜κ³ μžν•˜λŠ” ν”„λ‘œμ νŠΈλ₯Ό λˆ„κ΅°κ°€ μ§„ν–‰ν•˜κ²Œ 될 λ•Œμ—, ν‘œν˜„μ˜λ„λ₯Ό 뢄석할 수 μžˆλŠ” μ°Έμ‘° 데이터가 될 수 μžˆκ²Œλ” 이 ν”„λ‘œμ νŠΈλ₯Ό ν†΅ν•΄μ„œ 데이터와 λ³€ν˜• ꡬ쑰λ₯Ό νŒŒμ•…ν•˜κ³ μž ν•©λ‹ˆλ‹€.

  • 단어상 λ™μŒμ΄μ˜μ–΄λ‘œ ν‘œν˜„ 상 ꡬ별점이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우
    • 2016λ…„ 병신년(δΈ™η”³εΉ΄)μ—λŠ” μ΄λŸ¬ν•œ 일이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
  • 정상단어λ₯Ό μ˜λ„κ°€ λΆˆμˆœν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 경우
    • λ„ˆλŠ” μ–΄λ¨Έλ‹ˆκ°€ μ—†κ΅¬λ‚˜
  • μš•μ„€λ‘œ μ˜€ν•΄κ°€λŠ₯ν•œ 정상단어λ₯Ό μ˜λ„κ°€ λΆˆμˆœν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 경우
    • λ„ˆκ°€ μ‹œλ°œμ μ΄μ•Ό 이 μ‹œλ°œμ μ•„!

ν•œμ •λœ 탐지 λŒ€μƒ

기본적으둜 Tetrapod.js λŠ” λͺ…ν™•ν•˜κ²Œ μš•μ„€λ‘œμ¨ 주둜 μ‚¬μš©λ˜λŠ” 단어λ₯Ό μ£Ό 필터링 λŒ€μƒμœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. 그렇기에 λ™μŒμ΄μ˜μ–΄ λ“±μœΌλ‘œ 인해 μ˜€νƒμ§€μœ¨μ΄ 높을 수 μžˆλŠ” λ‹¨μ–΄λ‚˜, λͺ…ν™•ν•œ μš•μ„€λ‘œ 쓰이기 보단 일반적인 μš©λ„λ‘œ μ‚¬μš©λ  κ°€λŠ₯성이 λ§Žμ€ λ‹¨μ–΄μ˜ 경우 νƒμ§€λŒ€μƒμœΌλ‘œ ν¬ν•¨μ‹œν‚€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

그렇기에 Tetrapod.js λŠ” ν™•μž₯ νŒ¨ν‚€μ§€ κ°œλ…μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŠ” Tetrapod.js 에 μΆ”κ°€ν•  수 μžˆλŠ” 필터링 λŒ€μƒ 단어 λͺ¨μŒ μ‚¬μ „μœΌλ‘œ, Tetrapod.js μ—μ„œ μ œκ³΅ν•˜λŠ” Bias 체계λ₯Ό μ‚¬μš©ν•˜μ—¬μ„œ μš•μ„€μ΄ μ•„λ‹Œ 폭λ ₯μ„± λ‹¨μ–΄λ‚˜, μŒλž€μ„± 단어 λ“± 필터링 μ›ν•˜λŠ” 단어 사전을 자유둭게 ꡬ성할 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

개발 λͺ©ν‘œ

  • κ΅­λ¦½κ΅­μ–΄μ›μ—μ„œμ˜ ν•œκ΅­μ–΄ 정상 단어 λͺ©λ‘ 확보
  • 인터넷 μƒμ—μ„œ μ“°μ΄λŠ” μš•μ„€ 데이터 1μ°¨ μˆ˜μ§‘
  • λ¬Έμžμ—΄ μƒμ—μ„œ 정상단어λ₯Ό μ°Ύμ•„μ„œ λͺ¨λ“  정상단어 μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜
  • κΈ€μžλ‹¨μœ„ μš•μ„€ 단어 탐지 μ•Œκ³ λ¦¬μ¦˜
  • λ’€μ§‘νžˆκ±°λ‚˜ λ’€μ„žμΈ μš•μ„€ 단어 ν‘œν˜„μ˜ 경우 μ‚¬λžŒμ΄ 인지 κ°€λŠ₯ν•œ μˆ˜μ€€λ§Œμ„ μš•μ„€λ‘œ μ„ μ •ν•΄μ„œ μ°¨λ‹¨ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ μΆ”κ°€
  • μš•μ„€λ‹¨μ–΄ λ§Œμ„ μ‚­μ œν•˜κ±°λ‚˜ νŠΉμ • 특수문자둜 λŒ€μΉ˜ν•˜λŠ” ν‘œν˜„ μ •μ • ν•¨μˆ˜
  • μš•μ„€ λ‹¨μ–΄μ˜ λ³€ν˜• 예λ₯Ό 음운, 음절, μ–΄μ ˆ 3λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄μ„œ μ •λ¦¬ν•΄λ‚˜κ°ˆ 수 μžˆλŠ” λΆ„ν• λœ JSON 기반 파일 데이터 병합 체계
  • λ°°μ—΄ν˜•νƒœλ‘œ 단어λ₯Ό μ „/ν›„ κ°’μœΌλ‘œ λ‚˜λˆ μ„œ ꡬ성할 수 μžˆλŠ” Bias 데이터 포멧 (예: λ°”λ₯Ό γ…‚/ㅏ 둜 λ‚˜λˆ„μ–΄μ„œ ν‘œν˜„ν•  수 있게 ν•˜λŠ” 체계λ₯Ό λœ»ν•©λ‹ˆλ‹€.)
  • n차원 ν˜•νƒœλ‘œ μ€‘μ²©μ‹œν‚¬ 수 μžˆλŠ” Bias 데이터 포멧 ꡬ성 (λ°”/보 λΌλŠ” λ‹¨μ–΄μ˜ λ³€ν˜• 예λ₯Ό λͺ¨λ‘ κ΅¬ν• λ•Œ, λ³„λ„λ‘œ μ‘΄μž¬ν•˜λŠ” γ…‚/ㅏ 와 γ…‚/γ…— 데이터λ₯Ό μ—°κ²°μ‹œμΌœμ„œ κ΅¬μ„±μ‹œν‚¬ 수 μžˆλŠ” 체계λ₯Ό λœ»ν•©λ‹ˆλ‹€.)
  • nμ°¨μ›μ˜ 데이터λ₯Ό 병합할 수 μžˆλŠ” Bias 데이터 포멧
  • Bias 데이터 ν¬λ©§μ—μ„œμ˜ 음절 λ³€μˆ˜
  • Bias 데이터 ν¬λ©§μ—μ„œμ˜ μ‘μš© ν•¨μˆ˜
  • Bias 데이터 ν¬λ©§μ—μ„œμ˜ 자λͺ¨ν•©μ„± ν•¨μˆ˜
  • Bias 데이터 ν¬λ©§μ—μ„œμ˜ 결과배제 ν•¨μˆ˜
  • Bias 데이터 ν¬λ©§μ—μ„œ ν…ŒμŠ€νŠΈ 쀑 μ€‘λ³΅μƒμ„ λœ 단어 탐지 및 μ‚­μ œ ν•„ν„°
  • Bias 데이터 포멧의 단어 μžλ™ λ³€ν˜• νŒŒμ•… κ°œλ… μΆ”κ°€ (만λŠ₯λ³€ν˜•μΈμž)
  • 1μ°¨ μˆ˜μ§‘λœ μš•μ„€ λ°μ΄ν„°μ˜ Bias μž¬ν•΄μ„
  • Bias 데이터 포멧의 νŒ¨ν‚€μ§€ κ°œλ… μΆ”κ°€ (μš•μ„€λ‹¨μ–΄ / 성적단어 / 폭λ ₯성단어 / 약물성단어)
  • LZString 을 ν†΅ν•œ Bias λ°μ΄ν„°μ˜ minify ν™” 및 μ••μΆ• μΆ”μΆœ 및 λ©”λͺ¨λ¦¬ λ‘œλ“œ 체계
  • 전체 μš•μ„€ 단어 λͺ©λ‘μ„ 사전에 μ €μž₯ν•˜λŠ” ν˜•νƒœκ°€ μ•„λ‹Œ, μš•μ„€ 단어 탐지가 λ°œμƒν• λ•Œ ν•΄λ‹Ή 단어 λͺ©λ‘μ„ μ‹€μ‹œκ°„μœΌλ‘œ κ΅¬μ„±ν•˜μ—¬μ„œ μ“°λ‹€κ°€, 이λ₯Ό λ©”λͺ¨λ¦¬μƒμ— LRU 캐싱 해놓고 μ”€μœΌλ‘œ 전체 데이터 μš©λŸ‰μ„ μ€„μ΄λŠ” 동적인 Bias 데이터 해석 체계
  • 청크 λ©”μ‹œμ§€μ˜ 15자->30자 ν™•λŒ€ 및, 청크 λ©”μ‹œμ§€κ°€ 연속될 경우, μ€‘κ°„μ˜ 15자끼리 μ΄μ–΄μ„œ μƒˆλ‘œμš΄ μ²­ν¬λ©”μ‹œμ§€λ₯Ό μž„μ˜λ‘œ λ§Œλ“€μ–΄μ„œ 검사λ₯Ό λŒλ¦¬λŠ” 보완체계 (청크 λ©”μ‹œμ§€ 사이에 κ±Έλ €μ„œ 필터링 λ˜μ§€ μ•ŠλŠ” μ˜ˆμ™Έ 상황 ν•΄κ²°)
  • 청크 λ©”μ‹œμ§€μ—μ„œ μš•μ„€ λ‹¨μ–΄μ˜ κΈ€μžκ°€ λ©”μ‹œμ§€ 상에 μžˆλŠ”μ§€ 확인할 λ•Œ μ€‘μ²©μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” κΈ€μžκ°€ μ‘΄μž¬ν•˜λŠ” 경우, 이λ₯Ό λͺ¨λ‘ μˆ˜μ§‘ν•œ ν›„ λͺ¨λ“  경우수λ₯Ό λ‹€ κ³„μ‚°ν•΄μ„œ μš•μ„€ κ²€μ‚°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„
  • 검색엔진 기반 μ›Ή 크둀링을 ν†΅ν•œ μš•μ„€ νƒμ§€μ‹œλ„ 및 λ³€ν˜•λ‹¨μ–΄ μˆ˜μ§‘μ‹œλ„
  • ν…ŒμŠ€νŠΈ νŽ˜μ΄μ§€ 및 ν…ŒμŠ€νŠΈ μ„œλ²„ ꡬ성
  • gpu.js 쉐이더 기반의 GPU 병렬 μ—°μ‚° 가속화 κ΅¬ν˜„ (λͺ¨λ“  μ²­ν¬λ©”μ‹œμ§€λ₯Ό 숫자 λ°°μ—΄ν™” ν•œ ν›„ 코어단에 이λ₯Ό 곡유된 λ©”λͺ¨λ¦¬ ν˜•νƒœλ‘œ μ „λ‹¬ν•˜κ³ , 숫자 λ°°μ—΄ν™” 된 μš•μ„€ λ¬Έμžλ“€μ„ μ½”μ–΄μ—κ²Œ μ „λ‹¬ν•˜λ©΄ 이λ₯Ό λͺ¨λ“  μ½”μ–΄ ν•˜λ‚˜ν•˜λ‚˜κ°€ 각각의 μˆ«μžλ°°μ—΄ 일치 유무λ₯Ό νŒŒμ•…ν•˜λŠ” ꡬ쑰)
Open Source Agenda is not affiliated with "Tetrapod" Project. README Source: hmmhmmhm/tetrapod
Stars
29
Open Issues
0
Last Commit
5 years ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating