tetrapod-klleon
v1.0.7
Published
π Improved swear word detection module, made by hmmhmmhmm, arranged by utolee90
Downloads
3
Maintainers
Readme
Tetrapod.js var1
μ΄ νλ‘μ νΈλ λ³νλ μμ€ λ¨μ΄λ₯Ό νμ νκ³ νμ§νλ κ²μ λͺ©μ μΌλ‘ νλ λͺ¨λλ‘, Github μ μ hmmhmmhmmμ Tetrapod νλ‘μ νΈλ₯Ό ν¬ν¬ν λ€μ μμ ν λͺ¨λμ λλ€. μ¬μ©μ Utolee90μ΄ μΌλΆ λ΄μ©μ μμ νμ΅λλ€.
Tetrapod.js λ λ³νλ μμ€ λ¨μ΄ ννλ€μ νμ νκ³ νμ§νκΈ° μν΄ κ°λ° λκ³ μλ λͺ¨λν νλ‘κ·Έλ¨μ λλ€. νκ΅μ΄μμ μ‘΄μ¬νλ μμ€ λ¨μ΄λ€μ μ°μ μ μΌλ‘ νμ§ λμμΌλ‘ μ νμ¬ κ°λ°λκ³ μμΌλ©°, ν₯ν λͺ¨λ μΈμ΄μμ λ³νλ μμ€ ννμ νμ§νλλ° μ¬μ©λ μ μμ΅λλ€.
νλ‘μ νΈ μ©λ
μ΄ νλ‘μ νΈλ (μ£Ό)ν΄λ μ¨μμ μ 곡νλ μμ 곡μ SNS Kamelo μμ νμ©ν μμ μ λλ€.
λΌμ΄μΌμ€
ν΅μ¬ λͺ¨λμ MIT Licensed. μλ³Έμ λΌμ΄μ μ€λ₯Ό κ·Έλλ‘ λ°λ¦ λλ€. λ€λ§ μμ€ κ°μ§ λ°μ΄ν°λ 보μμ¬νμΌλ‘ 곡κ°λμ§ μμ μμ μ λλ€.
νλ‘μ νΈ μ νμ§ μκ³ λ¦¬μ¦ κ΅¬μ±
Tetrapod.js μμ μ¬μ©νλ μμ€ νμ§ μκ³ λ¦¬μ¦μ ꡬμ±μ λ€μκ³Ό κ°μ΅λλ€.
μ μλ¨μ΄ λͺ©λ‘ ꡬμ±
μλ°μ
κ³Ό κ°μ λ¨μ΄μ μ€νμ§λ₯Ό λ§κΈ° μν΄μ μ¬μ μ λ¬Έμμ΄μμ μ°Ύμμ μμ€ νμ§μ νμ§λμμμ μ μΈμν¬ μ©λμ μ μλ¨μ΄ λͺ©λ‘μ ꡬμ±ν©λλ€.
μμ€λ¨μ΄ λͺ©λ‘ ꡬμ±
- μ¬λ¬ μμ€ λ¨μ΄μ λ³νμ λͺ¨λ νμ
νκΈ° μν΄μ,
μμ΄
,μμ
,μ΄μ
3λ¨κ³μ κ±Έμ³μ κ° κΈμ μμλ€μ λ³νμ λͺ¨λ νμ νμ¬μ μμ€ λ¨μ΄ λͺ©λ‘μ ꡬμ±ν©λλ€. ν΄λΉ λ΄μ©μ νλ¨μ Bias ꡬμ±λ μμ μμΈν μ€λͺ ν©λλ€.
(μΆκ°) μ μν λ¨μ΄ λͺ©λ‘ ꡬμ±
- μμ€λ‘ λΆλ₯νκΈ° μ 맀νμ§λ§ μ μν ννμ κ²μΆν μ μμ΅λλ€. μμ€λ¨μ΄μ λ§μ°¬κ°μ§λ‘ λ¨μν 리μ€νΈλ§ μΈ λΏ μλλΌ μ΄μ°¨μ λ°°μ΄μ ν΅ν μ‘°ν©μΌλ‘λ μ λ κ°λ₯ν©λλ€.
(μΆκ°) νΉμ ν λ°μΉ¨μ μ μ©ν λ¨μ΄ κ²μ
- γ γ , γΉγ , γΉγ± λ°μΉ¨μ λ¨μ©ν ννμ μ‘μλΌ μ μμ΅λλ€.
νλ‘μ νΈ μ νμ§ μκ³ λ¦¬μ¦ κ΅¬μ±
Tetrapod.js μμ μ¬μ©νλ μμ€ νμ§ μκ³ λ¦¬μ¦μ μ§νκ³Όμ μ λ€μκ³Ό κ°μ΅λλ€.
μ μ λ¨μ΄ νμ ν λ°°μ
- λ©μμ§μμ μ μλ¨μ΄λ₯Ό μ°Ύμμ ν΄λΉ λ¬Έμμ΄μ μμ μμΉμ λλλ μμΉλ₯Ό κΈ°λ‘ν©λλ€. ν΄λΉ λ¬Έμμ΄ λ²μλ μ΄ν μκ³ λ¦¬μ¦ νμ§μ λ²μμμ λ°°μ λ©λλ€.
λ©μμ§μ Nμλ¨μ λΆλ¦¬
- λͺ¨λ λ¬Έμμ΄μ μμμ κΈμ λ¨μμ μ²ν¬ λ©μμ§ λ‘ λΆλ¦¬ν΄μ μ²λ¦¬ν μ μμ΅λλ€. κΈ°λ³Έ λ¨μλ 15μμ΄λ©°, μμΈν κ²μ μλ APIλ₯Ό μ°Έμ‘°νμΈμ.
ν κΈμμ© μμ€ λ¨μ΄ νμ
- κ°μΆκ³ μλ λͺ¨λ μμ€ λ¬Έμλ₯Ό κΈμλ¨μλ‘ λͺ¨λ λΆλ¦¬ν©λλ€. κ·Έ ν μ²ν¬ λ©μμ§μ ν΄λΉ μμ€ λ¬Έμμ κΈμκ° μ‘΄μ¬νλμ§, λͺλ²μ§Έ μμΉμ μ‘΄μ¬νλμ§λ₯Ό νμ ν©λλ€.
- λ§μ½ λ¬Έμλ€μ΄ λͺ¨λ μ‘΄μ¬ν κ²½μ° ν΄λΉ λ¬Έμλ€μ μμΉλ₯Ό ν΄λΉ μμ€ λ¨μ΄μ κΈμμμλλ‘ μ λ ¬ν©λλ€. μ΄λ λ§μ½ μμκ° μΌκ΄λμ§ μλ€λ©΄ κΈμκ° μμ¬μλ κ²μΌλ‘ κ°μ£Όν©λλ€.
- λ§μ½ κΈμκ° μμ¬μλ κ²½μ° μμ€ λ¨μ΄μ μ¬μ΄μ μμ±λ νκΈ λ¬Έμκ° μ‘΄μ¬νλμ§λ₯Ό νμΈνκ³ μ‘΄μ¬νλ€λ©΄ μ΄λ₯Ό μμ€ λͺ©λ‘μμ μ μΈν©λλ€. (
γ±
,γ
λ μμ±λ νκΈμ΄ μλλ©° μμ±λ νκΈμ μ λμ½λλ‘κ°
(0xAC00) ~ν£
(0xD7A3) μ¬μ΄μ κΈμλ₯Ό λ»ν©λλ€.) λν μμ±ν κΈμμ΄λλΌλ μμμ΄γ
μΈκ²½μ°μλ μμ€ μμΈμ²λ¦¬λ₯Ό νμ§ μμ΅λλ€.μ: λ°μμλ³΄μ€ μ κ°μ΄ μ΄μ΄μ£Όλ μμ κ²½μ° μμ€ μ²λ¦¬κ° νμν©λλ€.
νμμλ‘ λ μμ€ νμ§ (μ체 μΆκ°κΈ°λ₯)
- μ체μ μΈ νμλ³ν 맡μ μ΄μ©ν΄μ ν/μ λ³νμ μ΄μ©ν λ©μμ§μλ μμ€μ νμ§ν μ μμ΅λλ€. μλ₯Ό λ€λ©΄
wlfkf
μ΄λΌλ λ©μμ§λ QWERTY μμνμ λμλλ νκΈ λλ²μ μνμ ν€λ₯Ό μ λ ₯νλ©΄μ§λ
μ΄λΌλ λ©μμ§κ° λνλλ°, μ΄λ¬ν μμ€μ κ°μ§ν μ μμ΅λλ€.
κ°λ° μ±κ³Ό
μ νλ‘μ νΈμμ ꡬνλ λͺ©νλ₯Ό ν¬ν¨ν©λλ€.
- [x] κ΅λ¦½κ΅μ΄μμμμ νκ΅μ΄ μ μ λ¨μ΄ λͺ©λ‘ ν보
- [x] μΈν°λ· μμμ μ°μ΄λ μμ€ λ°μ΄ν° 1μ°¨ μμ§
- [x] λ¬Έμμ΄ μμμ μ μλ¨μ΄λ₯Ό μ°Ύμμ λͺ¨λ μ μλ¨μ΄ μμΉλ₯Ό νμ νλ μκ³ λ¦¬μ¦
- [x] κΈμλ¨μ μμ€ λ¨μ΄ νμ§ μκ³ λ¦¬μ¦
- [x] λ€μ§νκ±°λ λ€μμΈ μμ€ λ¨μ΄ ννμ κ²½μ° μ¬λμ΄ μΈμ§ κ°λ₯ν μμ€λ§μ μμ€λ‘ μ μ ν΄μ μ°¨λ¨νλ μκ³ λ¦¬μ¦ μΆκ°
- [x] μμ€λ¨μ΄ λ§μ μμ νκ±°λ νΉμ νΉμλ¬Έμλ‘ λμΉνλ νν μ μ ν¨μ
- [x] μμ€ λ¨μ΄μ λ³ν μλ₯Ό
μμ΄
,μμ
,μ΄μ
3λ¨κ³λ‘ λλμ΄μ μ 리ν΄λκ° μ μλ λΆν λ JSON κΈ°λ° νμΌ λ°μ΄ν° λ³ν© μ²΄κ³ - [x] λ°°μ΄ννλ‘ λ¨μ΄λ₯Ό μ /ν κ°μΌλ‘ λλ μ ꡬμ±ν μ μλ Bias λ°μ΄ν° ν¬λ©§ (μ: λ°λ₯Ό
γ /γ
λ‘ λλμ΄μ ννν μ μκ² νλ 체κ³λ₯Ό λ»ν©λλ€.) - [x] nμ°¨μ ννλ‘ μ€μ²©μν¬ μ μλ Bias λ°μ΄ν° ν¬λ©§ κ΅¬μ± (
λ°/보
λΌλ λ¨μ΄μ λ³ν μλ₯Ό λͺ¨λ ꡬν λ, λ³λλ‘ μ‘΄μ¬νλγ /γ
μγ /γ
λ°μ΄ν°λ₯Ό μ°κ²°μμΌμ ꡬμ±μν¬ μ μλ 체κ³λ₯Ό λ»ν©λλ€.) - [x] nμ°¨μμ λ°μ΄ν°λ₯Ό λ³ν©ν μ μλ Bias λ°μ΄ν° ν¬λ©§
- [x] Bias λ°μ΄ν° ν¬λ©§μμμ μμ λ³μ
- [x] Bias λ°μ΄ν° ν¬λ©§μμμ μμ© ν¨μ
- [x] Bias λ°μ΄ν° ν¬λ©§μμμ μλͺ¨ν©μ± ν¨μ
- [x] Bias λ°μ΄ν° ν¬λ©§μμμ κ²°κ³Όλ°°μ ν¨μ
- [x] Bias λ°μ΄ν° ν¬λ©§μμ ν μ€νΈ μ€ μ€λ³΅μμ λ λ¨μ΄ νμ§ λ° μμ νν°
- [ ] Bias λ°μ΄ν° ν¬λ©§μ λ¨μ΄ μλ λ³ν νμ κ°λ μΆκ° (λ§λ₯λ³νμΈμ)
- [ ] 1μ°¨ μμ§λ μμ€ λ°μ΄ν°μ Bias μ¬ν΄μ
- [ ] Bias λ°μ΄ν° ν¬λ©§μ ν¨ν€μ§ κ°λ μΆκ° (μμ€λ¨μ΄ / μ±μ λ¨μ΄ / νλ ₯μ±λ¨μ΄ / μ½λ¬Όμ±λ¨μ΄)
- [ ] LZString μ ν΅ν Bias λ°μ΄ν°μ minify ν λ° μμΆ μΆμΆ λ° λ©λͺ¨λ¦¬ λ‘λ 체κ³
- [ ] μ 체 μμ€ λ¨μ΄ λͺ©λ‘μ μ¬μ μ μ μ₯νλ ννκ° μλ, μμ€ λ¨μ΄ νμ§κ° λ°μν λ ν΄λΉ λ¨μ΄ λͺ©λ‘μ μ€μκ°μΌλ‘ ꡬμ±νμ¬μ μ°λ€κ°, μ΄λ₯Ό λ©λͺ¨λ¦¬μμ LRU μΊμ± ν΄λκ³ μμΌλ‘ μ 체 λ°μ΄ν° μ©λμ μ€μ΄λ λμ μΈ Bias λ°μ΄ν° ν΄μ 체κ³
- [x] μ²ν¬ λ©μμ§μμ μ²ν¬ μ€κ°μ μμ€μ΄ 걸릴 λ κ°μ§ 보μ. (Half-nodeλ₯Ό μ΄μ©ν΄ μ€κ°μ λ ΈνΈ λκΈ°λ‘ λ³΄μνμ.)
- [x] μ²ν¬ λ©μμ§μμ μμ€ λ¨μ΄μ κΈμκ° λ©μμ§ μμ μλμ§ νμΈν λ μ€μ²©μ μΌλ‘ μ‘΄μ¬νλ κΈμκ° μ‘΄μ¬νλ κ²½μ°, μ΄λ₯Ό λͺ¨λ μμ§ν ν λͺ¨λ κ²½μ°μλ₯Ό λ€ κ³μ°ν΄μ μμ€ κ²μ°νλ μκ³ λ¦¬μ¦ κ΅¬ν (λΆλΆμ μΌλ‘ ꡬν)
- [ ] κ²μμμ§ κΈ°λ° μΉ ν¬λ‘€λ§μ ν΅ν μμ€ νμ§μλ λ° λ³νλ¨μ΄ μμ§μλ
- [ ] ν μ€νΈ νμ΄μ§ λ° ν μ€νΈ μλ² κ΅¬μ±
- [ ] gpu.js μμ΄λ κΈ°λ°μ GPU λ³λ ¬ μ°μ° κ°μν ꡬν (λͺ¨λ μ²ν¬λ©μμ§λ₯Ό μ«μ λ°°μ΄ν ν ν μ½μ΄λ¨μ μ΄λ₯Ό 곡μ λ λ©λͺ¨λ¦¬ ννλ‘ μ λ¬νκ³ , μ«μ λ°°μ΄ν λ μμ€ λ¬Έμλ€μ μ½μ΄μκ² μ λ¬νλ©΄ μ΄λ₯Ό λͺ¨λ μ½μ΄ νλνλκ° κ°κ°μ μ«μλ°°μ΄ μΌμΉ μ 무λ₯Ό νμ νλ ꡬ쑰)
μ¬μ©κ°λ₯ν ν¨μ
Tetrapod.js
find.js νμΌμ import Tetrapod from '../tetrapod';
λΌκ³ μ
λ ₯νμ λ€μ λ€μκ³Ό κ°μ ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€. νΈμμ ν΄λμ€ λͺ
μΈ Tetrapod.(ν¨μλͺ
) νμμΌλ‘ μμ±νλ κ²μ΄ μ’μ΅λλ€.
λΉμμ΄ μ‘΄μ¬ μ¬λΆ νλ¨ :
Tetrapod.isBad(message, includeSoft=false)
- message νμλ λ¬Έμμ΄μ μ λ ₯ν΄μ μ¬μ© κ°λ₯ν©λλ€. κ²°κ³Όκ°μ μ°Έ/κ±°μ§ μ€ νλ.
- includeSoft λΆλΆμ trueλ₯Ό μ λ ₯νλ©΄ λΉμμ΄λΏ μλλΌ μ μν νν, λΆμ μ ν λ°μΉ¨μ λ¨μ©νλ ννκΉμ§ μ‘΄μ¬νλμ§ μ²΄ν¬ν μ μμ΅λλ€.
λΉμμ΄ κ°―μ μΈκΈ° :
Tetrapod.countBad(message, isStrong=false)
- message νμλ λ¬Έμμ΄μ μ λ ₯ν΄μ μ¬μ© κ°λ₯ν©λλ€.
- κ²°κ³Όκ°μ
{bad:(λΉμμ΄ κ°―μ),soft:(μ μν νν κ°―μ),end:(λΆμ μ ν λ°μΉ¨ κ°―μ)}
νμμΌλ‘ μΆλ ₯λ©λλ€. isStrong
κ°μ μ°ΈμΌλ‘ μ§μ νλ©΄ λ€λ₯Έ λ¬Έμλ₯Ό νκΈμλͺ¨μ²λΌ μ΄μ©ν΄μ μ°νμ ννμ΄λ (μ:γ±Hμ77|
) 첫 μμ γ , 무μλ―Έν λͺ¨μ γ ‘μ½μ λ° λμ리λ₯Ό μ΄μ©ν μ°ννν(λΈμ보 μλΌ
)λ μ‘μλΌ μ μμ΅λλ€.
λΉμμ΄ νν μ§μ μ°ΎκΈ° :
Tetrapod.find(message, needMultipleCheck=false, splitCheck=15, qwertyToDubeol=false, stronger=false)
- message νμλ λ¬Έμμ΄μ μ§μ μ λ ₯ν΄μ μ¬μ©κ°λ₯ν©λλ€.
- κ²°κ³Όκ°μ
{totalResult:[(λΉμμ΄ λ¨μ΄ λͺ©λ‘)], softResult:[(μ μν νν λ¨μ΄ λͺ©λ‘)], endResult:[(λ°μΉ¨ μ μ©ν νν λͺ©λ‘)]}
νμμ μ€λΈμ νΈλ‘ μΆλ ₯λ©λλ€. needMultiplecheck
λ₯Ό trueλ‘ μ§μ νλ©΄ νν°μ 걸리λ λͺ¨λ ννμ μ‘μλΌ μ μμ΅λλ€.splitCheck
λ₯Ό μμμ μ«μ(μ 20)λ‘ μ§μ νλ©΄ μ§μ ν μ«μλ§νΌ λ¬Έμμ΄μ λλ λ€ λλ μ‘°κ°λ€λ§ μ‘°μ¬ν©λλ€. κΈ°λ³Έκ°μ 15μ΄λ©°, 0μ μ§μ νλ©΄ λ¬Έμμ΄μ λλμ§ μκ³ μ 체 λ¬Έμμ΄μ κ²μ¬ν©λλ€. isStrongμ μ§μ νλ©΄ νμ±νλμ§ μμ΅λλ€.qwertyToDubeol
λ₯Ό trueλ‘ μ§μ νλ©΄ ν/μμ νλ ννμ μ‘μλΌ μ μμ΅λλ€. μλ₯Ό λ€λ©΄μλ°
μ QWERTYμ λμλλ ννμΈtlqkf
μ μ‘μλΌ μ μμ΅λλ€.isStrong
μ trueλ‘ μ§μ νλ©΄ λ€λ₯Έ λ¬Έμλ₯Ό νκΈμλͺ¨μ²λΌ μ΄μ©νλ μ°νμ ννμ΄λ 첫μμ γ , 무μλ―Έν λͺ¨μ γ ‘μ½μ λ° λμ리λ₯Ό μ΄μ©ν μ°ν ννλ μ‘μλΌ μ μμ΅λλ€. μμλ₯Ό νκΈλ‘ λ³νν΄μ κ²μ¬νλ νΉμ±μ μμqwertyToDubeol
μ κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
λΉμμ΄ νν μ¨κΈ°κΈ° :
Tetrapod.fix(message, replaceCharacter, condition)
ννλ‘ μ¬μ©ν©λλ€.- message νμλ μμ€μ΄ λ€μ΄κ° λ¬Έμμ΄μ μ§μ μ λ ₯ν΄μ μ¬μ© κ°λ₯ν©λλ€.
- replaceCharacter νμλ μμ€μ μ¨κΈΈ λ μ¬μ©νλ λ¬Έμλ₯Ό μ§μ ν μ μμ΅λλ€. κΈ°λ³Έκ°μ "*"μ λλ€.
- condition νμλ qwertyToDubeol, antispoof, dropDouble μ΅μ
μ€ νλλ₯Ό μΌ€ μ μμ΅λλ€. κΈ°λ³Έμ
{qwertyToDubeol:false, antispoof:false, dropDouble:false, fixSoft:false}
μΌλ‘ λͺ¨λ λΉνμ±νλ μνμ λλ€. - νμ¬λ conditionμ μ΅μ μ μΌ€ κ²½μ° qwertyToDubeol(qwertyμν->λλ²μ μνμΌλ‘ νμλ³ν ν ν μ€νΈ), antispoof(μ μ¬μμ, μ μ¬λͺ¨μ μ λΆ μλͺ¨λ‘ λ°κΎΌ ν ν μ€νΈ), dropDouble(γ λ€μ΄κ°μ μ λ리기 λ± μ‘μλ)μΌλ‘ λ°λ νμ μ‘μλΈ λ©μμ§λ§ μ²΄ν¬ κ°λ₯ν©λλ€. μλ¬Έμμ κ΅μ νλ μ΅μ μ νμ¬ λΆκ°λ₯ν©λλ€.
- condition 쑰건μ
{fixSoft:true}
λΌκ³ μ§μ ν κ²½μ° λΉμμ΄ λΏ μλλΌ μ μν ννκ³Ό κ³Όλν κ²Ήλ°μΉ¨ ννλ μ¨κΉμ²λ¦¬κ° κ°λ₯ν©λλ€.
λΉμμ΄ νν 리μ€νΈ λΆλ¬μ€κΈ° :
Tetrapod.defaultLoad
λ₯Ό μ¬μ©νμλ©΄ λ©λλ€.νμ±ν λΉμμ΄ νν 리μ€νΈ μ μ₯νκΈ° :
Tetrapod.defaultSaveAllData
λ₯Ό μ¬μ©νμλ©΄ λ©λλ€.
JSON νμΌ μμ±λ°©λ²
κΈ°λ³Έμ μΌλ‘ ./resource/dictionary
λλ ν 리μ μλ bad-words.json
, normal-words.json
, soft-search-words.json
μ΄ μΈ νμΌμ κ²μ¬ν©λλ€.
bad-words.json
- μμλλ λΉμμ΄λ₯Ό μ μ₯ν©λλ€. νμ±ν λ recursiveComponenent λ©μλλ₯Ό μ΄μ©νκΈ°μ[['λ°','ba'],['보','bo']]
μ²λΌ μλ¨μ΄/λ·λ¨μ΄λ‘ ꡬμ±λ ꡬμ±μμλ μμ± κ°λ₯ν©λλ€.badword
: κΈ°λ³Έ λΉμμ΄ λͺ©λ‘drug
: μ½λ¬Ό κ΄λ ¨ λΉμμ΄ λͺ©λ‘insult
: λͺ¨μμ μΈ νν κ΄λ ¨ λΉμμ΄ λͺ©λ‘sexuality
: μ±μ μΈ νν κ΄λ ¨ λΉμμ΄ λͺ©λ‘violence
: νλ ₯μ νν κ΄λ ¨ λΉμμ΄ λͺ©λ‘macro
: νΉμ λ°λ³΅λλ ν¨ν΄λ€μ μ μ₯ν μ μμ΅λλ€. μ μ₯ν λλ"맀ν¬λ‘λͺ ":[(맀ν¬λ‘μ ν¬ν¨λ 리μ€νΈ)]
νμμΌλ‘ μ¬μ©νμλ©΄ λλ©°, 맀ν¬λ‘λ₯Ό μ¬μ©ν λμλ 맀ν¬λ‘ μ΄λ¦ μμ "*"νμλ₯Ό λΆμ΄λ©΄ λ©λλ€.- 맀ν¬λ‘ μμ :
{λ:["λ", "λΈ", "λ", "둬", "λ£", "λΌ"]}
badword
μ λ ₯ν λ[[["κ°", "λ©μ²ν"], ["*λ"]]]
- νμ± κ²°κ³Ό :
- 맀ν¬λ‘ μμ :
[ "κ°λ", "κ°λΈ", "κ°λ", "κ°λ‘¬", "κ°λ£", "κ°λΌ", "λ©μ²νλ", "λ©μ²νλΈ", "λ©μ²νλ", "λ©μ²ν둬", "λ©μ²νλ£", "λ©μ²νλΌ" ]
normal-words.json
- μμλλ μ μ λ¨μ΄λ₯Ό μ μ₯ν©λλ€. tetrapod νλ‘μ νΈλ λ©μμ§μμ μ μλ¨μ΄λ‘ μμλλ μμΉμμλ κ²μ¬νμ§ μλ λ°©μμ λλ€. μ μλ¨μ΄μ λͺ¨μμ ννμ΄ λΆμ κ²½μ° μ΄ λΆλΆμ κ°μ§νμ§ μκΈ° μν μμΈ λͺ©λ‘μ μΆκ°νλ €λ©΄exception
λΆλΆμ 리μ€νΈλ₯Ό μΆκ°νμλ©΄ λ©λλ€.soft-search-words.json
- μμλλ μ μν ννμ μ μ₯ν©λλ€. λ¨μ΄λͺ©λ‘μ νμ±ν λ recursiveComponent λ©μλλ₯Ό μ¬μ©ν©λλ€. λΉμμ΄λ‘ 보기 μ 맀νμ§λ§ μ μν ννμ΄λΌ μ¬κΈ°λ ννμ μΆκ°ν μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ μ μν ννμ μ‘μ§ μμ§λ§ μ΅μ μ μ£Όμ΄μ μ μν ννλ μ‘μλΌ μ μκ² λ³κ²½ν μ μμ΅λλ€.
μμ±μ© κΈ°νΈ
νκΈ λ¨μ΄ μ΄μΈμ *, !, ?
λ±μ μ¬μ©ν μ μμ΅λλ€. μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
- 맀ν¬λ‘μ© λ¬Έμ. μμμ λΆμΌ λμλ§ μΈ μ μμ΅λλ€.
*
맀ν¬λ‘ μ¬μ©ν λ μ¬μ©ν μ μμ΅λλ€. μ£Όμν μ μ 맀ν¬λ‘ μ΄λ¦μ λμ΄μ°κΈ°λ₯Ό ν΄μλ μ λλ©°, 리μ€νΈμ λ 립λ λ¨μ΄ νμμΌλ‘ λ€μ΄κ°μΌ ν©λλ€.
- λ체 λ¬Έμ - κΈμ λ€μ λ¬Έμλ₯Ό μ¬μ©ν©λλ€. κΈμ νλλ§ μ¬μ©ν μ μμ΅λλ€.
!
μμ μ€λ κΈμμ λν΄ λ³νν¨ν΄λ€μ λͺ¨λ κ°μ§ν©λλ€.Tetrapod.isKindChar
ν¨μλ₯Ό μ΄μ©ν΄μ λ³ν ν¨ν΄μ μ‘μλΌ μ μμ΅λλ€. μλ₯Ό λ€λ©΄μ!
μ κ²½μ°γ
μ λμ리μΈγ
μ΄λγ £
μ λ°μμ΄ μ μ¬ν μ΄μ€λͺ¨μμΈγ
,γ ’
λ‘ λ³νλ κΈμλ μ‘μλΌ μ μμ΅λλ€.+
μμμ λ°μΉ¨μ ννν λ μ¬μ©ν©λλ€. μλ₯Ό λ€λ©΄ "μ+"λ "μ,μ,μ,..."λ±μ λͺ¨λ ν¬ν¨ν©λλ€.
- μλ¬΄κ° λ¬Έμ - κΈμ λ€μ λ¬Έμλ₯Ό μ무거λ ννν λ μ¬μ©ν©λλ€. 무μ νμΌλ‘ μ¬μ©ν μ μμ΅λλ€.
?
μμ μ€λ κΈμμ λν΄ λ€μ μ무 νκΈ ν μλ₯Ό λͺ¨λ κ°μ§ν©λλ€. μλ₯Ό λ€λ©΄λ©?μ²
μ΄λΌκ³ μ λ ₯ν κ²½μ°,λ©κ°μ²
μ κ°μ§ν μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ Tetrapodλ μ΄λ μ λ κΈμ μ¬μ΄κ° λ²μ΄μ§ κ²μ κ°μ§νμ§λ§ μ΄ λ¬Έμλ₯Ό μ΄μ©νλ©΄ λ¬Έμ λ€μ μ΄λ€ νκΈμ΄ μλ 무μν μ μμ΅λλ€.
- μ΄μ€μΌμ΄ν λ¬Έμ - νΉμ κΈ°νΈλ₯Ό λ°λ‘ νννκ³ μ ν λ μ¬μ©ν©λλ€.
,
Tetrapodλ νκΈμλͺ¨κ° λ°λ‘ λ¨μ΄μ Έ μμΌλ©΄ μλμΌλ‘ ν©μ±μ ν΄μ μ²λ¦¬ν©λλ€. μ¦, λΉμμ΄ λ¦¬μ€νΈμ ["γ±γ £λ γ±γ £"]λΌκ³ μ λ ₯νλ©΄ "κΈ°λ κΈ°"λ₯Ό λΉμμ΄λ‘ μΈμν©λλ€. ꡬνμ¬ μλμ ννμΈ "γ±γ £λ γ±γ £"λ₯Ό μΈμνκΈ° μν΄μλ "γ±,γ £λ γ±,γ £"λΌκ³ μ λ ₯νμλ©΄ λ©λλ€..
μμ νΉμλ¬Έμκ° ν¬ν¨λ 리μ€νΈλ₯Ό μμ±νκ³ μΆμ λ μ¬μ©νλ μ΄μ€μΌμ΄ν λ¬Έμμ λλ€. μλ₯Ό λ€λ©΄ "κΈ°!" μ체λ₯Ό λΉμμ΄λ‘ μΈμνκ³ μΆμ λλ "κΈ°.!"μ΄λΌκ³ μ λ ₯νμλ©΄ λ©λλ€.
Bias.js
find.js νμΌμ import Bias from '../bias/bias';
λ₯Ό μ
λ ₯νμ λ€μ
Bias.buildHelper('(ν¨ν€μ§λͺ
)', '(μλ³Έ λ¨μ΄λͺ
)', false)
λ₯Ό μ
λ ₯νμλ©΄ μ¬μ©κ°λ₯ν©λλ€. JSON νμΌμ bias/buildμ μ μ₯λ©λλ€.
ν¨ν€μ§ μ μ λ° μ¬μ© λ°©λ²
Tetrapod νλ‘μ νΈλ κΈ°λ³Έμ μΌλ‘ kr-badword
ν¨ν€μ§λ₯Ό μ§μνκ³ μμ΅λλ€. κ·Έλ¬λ
Bias.js νμΌμ μ΄μ©νλ©΄ μ¬μ©μκ° μνλ λλ‘ λ³ν ν¨ν΄μ μ§μ ν μ μμ΅λλ€.
- μ°μ
bias/source
λλ ν 리μ ν¨ν€μ§λͺ μΌλ‘ λλ ν 리λ₯Ό μ μν©λλ€. - κ·Έ λ€μ μλ ν¬λ§· κ·μΉμ μ΄μ©ν΄μ JSON νμΌμ μμ±ν©λλ€.
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"
]
}
]
}
μ£Όμμ¬ν
λ¨μ΄λ³ν©μ μ£Όμμ¬ν
- λ¨μ΄λ³ν© ν¨μλ νκΈ κΈμ μλͺ¨μ κ°κ° νκΈμμ©μ ν λΉν΄μ λ³ν©νλ ν¨μλ₯Ό λ»ν©λλ€. (μ: γ γ γ γ -> γ γ γ γ )
- μμλ§μΌλ‘ μμ€κ° λ μ μλ μμ€μ κ²½μ°μ λ¨μ΄λ³ν©μ λͺ¨μμ μ λ μΆκ°λ‘ νκΈ°νμ§ μμ΅λλ€.
- λΆνμν λͺ¨μμ μΆκ°νλ©΄ λΆνμν μ©λμ¦κ°μ μ²λ¦¬μλ μ§μ°μ λΆλ¬μ΅λλ€.
μλͺ¨ν©μ±μ μ£Όμμ¬ν
- μλͺ¨ν©μ± ν¨μλ νκΈ κΈμ μλͺ¨λ₯Ό μ΅λν νκΈμλ‘ λͺ°μμ λ³ν©νλ ν¨μλ₯Ό λ»ν©λλ€. (μ: γ γ γ γ -> λ°λ³΄)
γ γ γ
μ κ°μ΄ νκΈμλ‘ ν©μ±λ μ μλ λ¨μ΄ ν©μ±μ μ λμ μΌλ‘ νΌν΄μΌν©λλ€.