Text Operations and Choice Order - kimjooyoon/meta-ontology-go GitHub Wiki

λ¬Έμžμ—΄ ν•¨μˆ˜λ₯Ό Gooo둜 λ§Œλ“€κ³ , 후보 μˆœμ„œλ„ λ’€μ§‘μ–΄ 보기

2026-10-08. λ¬Έμžμ—΄ 길이와 λΆ€λΆ„ μΆ”μΆœμ„ μΆ”κ°€ν•œ 개발 PR #1371의 κ΄€μΈ‘μž…λ‹ˆλ‹€. 전체 CI와 검증 기둝을 확인해 dev 463f3f7f에 λ³‘ν•©ν–ˆμŠ΅λ‹ˆλ‹€. main 반영 PR #1372도 CI와 병합 검증을 ν†΅κ³Όν–ˆκ³ , 곡개 0.6.8 λ°”μ΄λ„ˆλ¦¬μ—λŠ” 아직 이 변경이 λ“€μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Gooo둜 μž‘μ„±ν•  수 있게 된 것

파일 이름이 .gooo둜 λλ‚˜λŠ”μ§€, μˆ¨κΉ€ 이름인지, ν™•μž₯자λ₯Ό λ–Όλ©΄ μ–΄λ–€ 이름이 λ‚¨λŠ”μ§€λ₯Ό Gooo ν•¨μˆ˜λ‘œ μ μ—ˆμŠ΅λ‹ˆλ‹€. 접두어·접미어 검사, μ ‘λ―Έμ–΄ 제거, λ°”μ΄νŠΈ 길이λ₯Ό 각각 ν•¨μˆ˜λ‘œ λ§Œλ“€κ³  Classifyκ°€ 뢈러 μ”λ‹ˆλ‹€. νŒŒμΌμ„ 직접 μ½μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

이전 μ‹€ν–‰ νŒŒμΌμ€ 같은 접두어 ν•¨μˆ˜λ₯Ό len ν˜ΈμΆœμ—μ„œ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€. 개발 μ†ŒμŠ€μ—μ„œλŠ” νƒ€μž… 검사와 λ³€ν™˜ μ „ν›„ 비ꡐλ₯Ό ν†΅κ³Όν•©λ‹ˆλ‹€. 빈 λ¬Έμžμ—΄, 짧은 μž…λ ₯, ν•œκΈ€, 이λͺ¨μ§€, 잘λͺ»λœ μœ„μΉ˜κ°’, μ €μž₯ μž¬μ‹€ν–‰μ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 길이와 μœ„μΉ˜λŠ” UTF-8 λ°”μ΄νŠΈ κΈ°μ€€μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ κ°€λŠ” 3λ°”μ΄νŠΈμ΄λ©°, 접두어·접미어 μ „μ²΄μ˜ κ²½κ³„λ‘œ 잘라 λ¬Έμžκ°€ μͺΌκ°œμ§€λŠ” 것을 ν”Όν•©λ‹ˆλ‹€.

μ†ŒμŠ€μ™€ μ‚¬μš©λ²• Β· Go 길이 κ·œμΉ™ Β· Go λΆ€λΆ„ μΆ”μΆœ κ·œμΉ™.

처음 ν•œ 번의 κ²°κ³Ό

μ„Έ κ²°κ³Ό ν•„λ“œμ— 각각 두 후보가 μžˆμ–΄ 쑰합은 μ—¬λŸ κ°œμž…λ‹ˆλ‹€. λ‹€μ„― 쑰립 μ‚¬λ‘€λ‘œ μ„ νƒν•˜κ³ , λ‹€λ₯Έ 파일 이름 열두 개둜 μ‹€ν–‰ κ²°κ³Όλ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈμ€ κΈ°μ‘΄ 자체 μ†Œν˜• λͺ¨λΈμ„ κ·ΈλŒ€λ‘œ μΌμŠ΅λ‹ˆλ‹€.

경둜 μ‹œλ„ν•œ 후보 쑰립 사둀 / ν•„λ“œ 별도 μ‹€ν–‰
κ³ μ • μˆœμ„œ 8 5/5 Β· 15/15 12/12
λͺ¨λΈ μˆœμ„œ 1 5/5 Β· 15/15 12/12
μ €μž₯ν•œ λͺ¨λΈ κ²°κ³Ό μ‹€ν–‰ μƒˆ 후보 μ—†μŒ 이전 선택 μœ μ§€ 12/12

이 κ΄€μΈ‘μ˜ μ†ŒμŠ€λŠ” 334f5ed13bf520c54efe9d8270582dc31433d5f3μž…λ‹ˆλ‹€. λͺ¨λΈ νŒλ‹¨μ€ 37.542Β΅s, μ€€λΉ„λŠ” 0.670792ms, ν…μ„œλŠ” 2,096Bμ˜€μŠ΅λ‹ˆλ‹€. 전체 λͺ…령은 κ³ μ • μˆœμ„œ 0.35초, λͺ¨λΈ 0.33μ΄ˆμ˜€μŠ΅λ‹ˆλ‹€. λͺ¨λΈ λͺ…λ Ήμ˜ CPU μ‹œκ°„μ€ μ‚¬μš©μž 0.16μ΄ˆΒ·μ‹œμŠ€ν…œ 0.10초, 졜고 RSSλŠ” 86,704,128Bμ˜€μŠ΅λ‹ˆλ‹€. CPU/λ²½μ‹œκ°„μ€ ν•œ μ½”μ–΄ κΈ°μ€€ μ•½ 78.8%이며 μžμ‹ μž‘μ—…μ„ ν¬ν•¨ν•©λ‹ˆλ‹€. 호슀트 CPU μ¦κ°€λŸ‰μ€ λ―ΈμΈ‘μ •μž…λ‹ˆλ‹€. μΊμ‹œμ™€ λ‹€λ₯Έ μž‘μ—…μ„ ν†΅μ œν•˜μ§€ μ•Šμ€ 단일 μŒμ΄λ―€λ‘œ 속도 μš°μœ„λ₯Ό νŒλ‹¨ν•  근거둜 μ“°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ €μž₯ μ‹€ν–‰μ˜ μƒˆ λͺ¨λΈ ν˜ΈμΆœμ€ 0νšŒμ˜€μŠ΅λ‹ˆλ‹€.

같은 μ„ νƒμ§€μ˜ μ•žλ’€λ§Œ λ°”κΏ” λ³΄λ‹ˆ

첫 κ²°κ³Όμ—μ„œλŠ” 쒋은 선택지λ₯Ό λͺ¨λ‘ 두 λ²ˆμ§Έμ— λ†“μ•˜μŠ΅λ‹ˆλ‹€. 각 ν•„λ“œμ˜ μ•žλ’€λ₯Ό λ…λ¦½μ μœΌλ‘œ λ’€μ§‘μ–΄ κ°€λŠ₯ν•œ μ—¬λŸ 배치λ₯Ό μ „λΆ€ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ˜ 의미, μ„€λͺ… λ¬Έμž₯, 쑰립 사둀와 μ‹€ν–‰ μ‚¬λ‘€λŠ” μœ μ§€ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 ν•œ ν”„λ‘œκ·Έλž¨μ˜ 배치 μ‹€ν—˜ μ—¬λŸ κ°œμž…λ‹ˆλ‹€.

뒀집은 ν•„λ“œ κ³ μ • μˆœμ„œμ˜ μ‹œλ„ 수 λͺ¨λΈ μˆœμ„œμ˜ μ‹œλ„ 수
μ—†μŒ 8 1
μ†ŒμŠ€ μ—¬λΆ€ 7 3
이름 6 2
μ†ŒμŠ€ μ—¬λΆ€ + 이름 5 5
λ°”μ΄νŠΈ 길이 4 4
μ†ŒμŠ€ μ—¬λΆ€ + λ°”μ΄νŠΈ 길이 3 7
이름 + λ°”μ΄νŠΈ 길이 2 6
λͺ¨λ‘ 1 8
합계 36 36

λͺ¨λΈμ€ λͺ¨λ“  λ°°μΉ˜μ—μ„œ μ„Έ ν•„λ“œμ˜ 두 번째 후보λ₯Ό λ¨Όμ € κ³¨λžμŠ΅λ‹ˆλ‹€. 첫 후보가 λ§žμ€ λ°°μΉ˜λŠ” λͺ¨λΈλ„ κ³ μ • μˆœμ„œλ„ 1/8μž…λ‹ˆλ‹€. λͺ¨λΈμ΄ ν•΄λ‹Ή 쑰합에 λΆ€μ—¬ν•œ 값은 99.786~99.797%μ˜€μ§€λ§Œ, 이 수치λ₯Ό μ‹€μ œ μ •λ‹΅ ν™•λ₯ λ‘œ 읽을 μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. 이번 μ˜ˆμ œμ—μ„œλŠ” ν›„λ³΄μ˜ λ°°μΉ˜μ— 크게 μ˜μ‘΄ν–ˆμœΌλ©°, μ—¬λŸ 배치λ₯Ό ν•©μΉ˜λ©΄ νƒμƒ‰λŸ‰μ„ 쀄이지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

Gooo의 사둀 평가가 계속 μž‘λ™ν•΄ 두 방식 λͺ¨λ‘ μ—¬λŸ λ°°μΉ˜μ—μ„œ μ‹€ν–‰ 12/12λ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€. 합계 96/96은 같은 열두 μž…λ ₯을 μ—¬λŸ λ°°μΉ˜μ—μ„œ λ°˜λ³΅ν•œ μˆ˜μΉ˜μž…λ‹ˆλ‹€. 고유 μ‹€ν–‰ μž…λ ₯은 열두 개이며, 전체 μ–Έμ–΄λ‚˜ μƒˆλ‘œμš΄ λ¬Έμ œμ— λŒ€ν•œ μ •λ‹΅λ₯ μ„ λœ»ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

배치 μ‹€ν—˜μ€ ec801d913206d83e08992710a3834b87ce010b40μ—μ„œ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈ νŒλ‹¨ μ‹œκ°„μ€ 20.792~47.666Β΅s, 쀑앙값 22.333Β΅sμ˜€μŠ΅λ‹ˆλ‹€. λͺ¨λΈ ν˜ΈμΆœμ€ λ°°μΉ˜λ‹Ή ν•œ 번, μ‹€ν–‰ μ‹œ μƒˆ ν˜ΈμΆœμ€ 0νšŒμž…λ‹ˆλ‹€. μƒˆ ν•™μŠ΅μ€ ν•˜μ§€ μ•Šμ•˜κ³ , λͺ¨λΈ ν•™μŠ΅ μžλ£Œμ™€μ˜ 쀑볡 μ—¬λΆ€λŠ” λ―Έν™•μΈμž…λ‹ˆλ‹€.

ν•™μŠ΅ 전에 μ‚¬λΌμ§€λŠ” ꡬ뢄을 μ°Ύμ•˜λ‹€

ν›„μ†μœΌλ‘œ λͺ¨λΈμ— λ“€μ–΄κ°€λŠ” μ‹€μ œ float32 배열을 λΉ„κ΅ν–ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μž…λ ₯ ν‘œν˜„μ€ suffix && visibleκ³Ό suffix || visible을 κ°™κ²Œ λ§Œλ“€κ³ , inputκ³Ό stem도 κ°™κ²Œ λ§Œλ“­λ‹ˆλ‹€. μ—¬λŸ 후보 λ°°μΉ˜κ°€ 전체 λ°°μ—΄ 두 μ’…λ₯˜λ‘œ μ€„μ–΄λ“€μ—ˆμŠ΅λ‹ˆλ‹€. 각 λ°°μ—΄μ—λŠ” μ„œλ‘œ λ‹€λ₯Έ μ •λ‹΅ 선택이 ν•„μš”ν•œ λ„€ λ°°μΉ˜κ°€ λ¬Άμž…λ‹ˆλ‹€.

λ”°λΌμ„œ 제곡된 정닡을 κΈ°μ€€μœΌλ‘œ 이 μž…λ ₯만 μ“°λŠ” 결정둠적 선택기가 맞힐 수 μžˆλŠ” μ΅œλŒ€μΉ˜λŠ” 2/8μž…λ‹ˆλ‹€. κΈ°μ‘΄ λͺ¨λΈμ˜ μ‹€μ œ 첫 선택은 1/8μž…λ‹ˆλ‹€. 이 μ΅œλŒ€μΉ˜λŠ” ν•΄λ‹Ή μžλ£Œμ™€ ν˜„μž¬ νŠΉμ§• μΆ”μΆœ 버전에 ν•œμ •λ©λ‹ˆλ‹€. 같은 ν”„λ‘œκ·Έλž¨μ˜ μ—¬λŸ 배치λ₯Ό μ„Έμ—ˆμœΌλ©°, μ–Έμ–΄ μ „μ²΄μ˜ μ •ν™•λ„λ‚˜ μƒˆ ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μ„±λŠ₯을 μΈ‘μ •ν•œ 값은 μ•„λ‹™λ‹ˆλ‹€.

이 검사λ₯Ό μž‘μ—…μž₯ PR #21의 feature-audit λͺ…λ ΉμœΌλ‘œ λ§Œλ“€κ³  CIλ₯Ό 톡과해 main 13c54fe6에 λ³‘ν•©ν–ˆμŠ΅λ‹ˆλ‹€. Goκ°€ λͺ¨λ“  λ°°μ—΄ λΉ„νŠΈλ₯Ό λΉ„κ΅ν•˜κ³ , Gooo둜 μž‘μ„±ν•œ 평가 ν•¨μˆ˜κ°€ preserve-distinguishing-source-factsλ₯Ό λ‹€μŒ ν–‰λ™μœΌλ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€. λͺ¨λΈμ„ 켜고 끈 μ‹€μ œ μ‹€ν–‰μ—μ„œ 같은 문제λ₯Ό μ°Ύμ•˜κ³ , Gooo 평가 ν•¨μˆ˜μ˜ μƒˆ λͺ¨λΈ ν˜ΈμΆœμ€ 0νšŒμ˜€μŠ΅λ‹ˆλ‹€. ν•œ 행에 μ—¬λŸ¬ μ •λ‹΅ 후보가 μžˆλŠ” κ²½μš°λ„ λ‹€λ£Ήλ‹ˆλ‹€.

κ³ μ • μ†ŒμŠ€μ˜ 원본 κ΄€μΈ‘Β·μž¬μ‹€ν–‰Β·νŒŒμΌλ³„ ν•΄μ‹œ μ—λŠ” μž…λ ₯, 두 μ‹€ν–‰ κ²°κ³Ό, Gooo 평가 μ†ŒμŠ€μ™€ 생성 μ½”λ“œλ₯Ό λ‹΄μ•˜μŠ΅λ‹ˆλ‹€. ν‰κ°€λŠ” 곡개 0.6.8 컴파일러둜 μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€ ν•™μŠ΅κ³Ό κ°€μ€‘μΉ˜ 변경은 μ—†μŠ΅λ‹ˆλ‹€.

좜처λ₯Ό λ‹΄λŠ” v2 μž…λ ₯도 λ³„λ„λ‘œ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 컴파일러 4eefd6b7μ—μ„œ 같은 파일 이름 예제λ₯Ό λΆ„μ„ν•˜μž, μ‹€ν–‰μš©μœΌλ‘œλŠ” μ§€μ›ν•˜λŠ” HasSuffix 보쑰 ν•¨μˆ˜λ₯Ό 좜처 κ·Έλž˜ν”„κ°€ 따라가지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. 뢄석 κ²°κ³ΌλŠ” UNRESOLVED, λͺ¨λΈ λ¬Έλ§₯은 DECLINED_TO_DETERMINISTIC이며, 예츑과 후보 ν‰κ°€λŠ” 각각 0νšŒμ˜€μŠ΅λ‹ˆλ‹€. 이 λͺ…령은 μž…λ ₯ λΆ„μ„λ§Œ μˆ˜ν–‰ν•©λ‹ˆλ‹€. κ·ΈλŒ€λ‘œ λ³΄κ΄€ν•œ 좜λ ₯κ³Ό μž¬ν˜„ 방법.

후속 개발 μ†ŒμŠ€ 246fdf5bμ—μ„œλŠ” 이 ν•¨μˆ˜ 경계λ₯Ό μ—°κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 같은 v2 μž…λ ₯이 λ„€ 배열을 λ§Œλ“€μ–΄ 제곡된 μ •λ‹΅ κΈ°μ€€ μ΅œλŒ€μΉ˜κ°€ 4/8둜 λ°”λ€Œμ—ˆμŠ΅λ‹ˆλ‹€. μ—°μ‚°μž ꡬ뢄 손싀은 남아 있으며 μƒˆ λͺ¨λΈμ„ ν•™μŠ΅ν•œ κ²°κ³ΌλŠ” μ•„λ‹™λ‹ˆλ‹€. 보쑰 ν•¨μˆ˜ μ—°κ²°κ³Ό μƒˆ κ΄€μΈ‘.

λ‹€μŒ λͺ¨λΈ κ°œμ„ μ—μ„œ 확인할 것

  • Gooo 보쑰 ν•¨μˆ˜μ˜ μΈμžΒ·λ°˜ν™˜κ°’κ³Ό μ•ˆμ • IDλ₯Ό 좜처 κ·Έλž˜ν”„μ— μ—°κ²°ν•œλ‹€. 뢄석 λ²”μœ„λ₯Ό λ„˜λŠ” κ²½μš°λŠ” λ―Έν•΄κ²°λ‘œ 남긴닀. ν•¨μˆ˜ μ—°κ²°λ§ŒμœΌλ‘œ ν˜„μž¬μ˜ μ—°μ‚° ꡬ뢄 손싀이 ν•΄κ²°λ˜λŠ” 것은 μ•„λ‹ˆλ―€λ‘œ κ·Έλž˜ν”„μ™€ λͺ¨λΈ νŠΉμ§•μ„ 각각 ν™•μΈν•œλ‹€.
  • μ—°μ‚°μžμ˜ μ’…λ₯˜μ™€ κ°’μ˜ 좜처λ₯Ό μž…λ ₯에 λ³΄μ‘΄ν•œλ‹€. ν˜„μž¬ μž…λ ₯으둜 ν•™μŠ΅λŸ‰λ§Œ λŠ˜λ €λ„ νŠΉμ§• μΆ”μΆœ λ‹¨κ³„μ—μ„œ 사라진 ꡬ뢄은 λ³΅μ›λ˜μ§€ μ•ŠλŠ”λ‹€. μƒˆ ν‘œν˜„λ„ 같은 κ²€μ‚¬λ‘œ ν™•μΈν•œλ‹€.
  • 쒋은 후보가 μ•žμ΄λ‚˜ 뒀에 λ†“μ΄λŠ” 경우λ₯Ό ν•¨κ»˜ ν•™μŠ΅ 자료둜 λ§Œλ“ λ‹€.
  • 같은 원본 ν”„λ‘œκ·Έλž¨μ—μ„œ λ‚˜μ˜¨ λ°°μΉ˜λ“€μ€ 같은 데이터 뢄할에 λ‘”λ‹€. μ•žλ’€λ§Œ λ°”κΎΌ μ˜ˆμ œκ°€ ν•™μŠ΅κ³Ό 평가에 λ‚˜λ‰˜μ–΄ λ“€μ–΄κ°€λ©΄ μƒˆ 문제λ₯Ό ν‘ΈλŠ” λŠ₯λ ₯을 ν™•μΈν•˜κΈ° μ–΄λ ΅λ‹€.
  • 첫 선택과 총 μ‹œλ„ 수, λ§ˆμ§€λ§‰ μ‹€ν–‰ κ²°κ³Όλ₯Ό λ”°λ‘œ λ³Έλ‹€. μ»΄νŒŒμΌλŸ¬κ°€ μˆ˜μ •ν•œ 결과와 λͺ¨λΈμ˜ 첫 νŒλ‹¨μ΄ 각각 μ–Όλ§ˆλ‚˜ κΈ°μ—¬ν–ˆλŠ”μ§€ 남긴닀.
  • ν˜„μž¬ λͺ¨λΈμ€ ν•„λ“œλͺ…·후보 식·섀λͺ… λ¬Έμž₯을 μ½λŠ”λ‹€. 보쑰 ν•¨μˆ˜ λ‚΄λΆ€μ˜ κ³„μ‚°κΉŒμ§€ μ΄ν•΄ν–ˆλ‹€κ³  μ£Όμž₯ν•  κ·Όκ±°λŠ” λΆ€μ‘±ν•˜λ‹€. ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 값이 μ–΄λ””μ„œ μ™”λŠ”μ§€ μ—°κ²°ν•˜λŠ” ν‘œν˜„μ΄ λ‹€μŒ κ³Όμ œλ‹€.

ν˜„μž¬κΉŒμ§€μ˜ κ°œμ„ μ€ λ¬Έμžμ—΄ κΈ°λŠ₯을 Gooo둜 직접 μž‘μ„±ν•  수 μžˆλŠ” λ²”μœ„κ°€ λŠ˜μ—ˆλ‹€λŠ” μ μž…λ‹ˆλ‹€. λͺ¨λΈμ—λŠ” 후보 λ°°μΉ˜μ— λ”°λ₯Έ 약점이 남아 있으며, μœ„ 원본과 ν•¨κ»˜ 후속 비ꡐ κΈ°μ€€μœΌλ‘œ λ³΄κ΄€ν•©λ‹ˆλ‹€.

전체 μš”μ•½ Β· μ‹€μ œ κ°’ μž¬μ§‘κ³„ Β· μž¬ν˜„ 도ꡬ Β· κ΄€μΈ‘ 파일 λͺ©λ‘κ³Ό ν•΄μ‹œ.