최상위 10_Wiki/Topic_*였던 4개 카테고리 폴더를 10_Wiki/Topics/Topic_* 로 재배치.
콘텐츠 변경 없음(순수 폴더 이동) — Topics/ 하위 나머지 폴더는 이미 지난 커밋에서
전부 정리된 상태(잔존 항목은 에이전트 운영 상태 및 사용자가 보존을 요청한
업데이트0615/무제 3.canvas 뿐).
"매 코드 작성자를 매 stylistic feature 로 식별하는 ML 기법". Caliskan et al. 2015 (USENIX) 가 random forest 로 250 명 중 94% 식별. 매 modern era — CodeBERT/StarCoder embedding 기반 분류기로 매 더 강력해짐. Privacy 위협 (anonymous contributor de-anon) ↔ defensive utility (malware attribution, plagiarism detection) 의 양날.
매 핵심
매 feature class
Lexical: identifier naming (camelCase vs snake_case), keyword frequency.
Layout: indentation, brace style, line length.
Syntactic: AST node distribution, depth, n-gram of node types.
Idiomatic: preferred construct (for vs map, ternary vs if).
Embedding-based: CodeBERT/StarCoder hidden states (2024+).
fromsklearn.ensembleimportRandomForestClassifierfromsklearn.feature_extractionimportDictVectorizervec=DictVectorizer(sparse=False)X=vec.fit_transform([extract_all_features(s)forsinsamples])clf=RandomForestClassifier(n_estimators=300,max_depth=20)clf.fit(X,authors)print(clf.score(X_test,y_test))# ~90%+ on 100-author corpus
CodeBERT embedding classifier (2024+)
fromtransformersimportAutoTokenizer,AutoModelimporttorchtok=AutoTokenizer.from_pretrained('microsoft/codebert-base')model=AutoModel.from_pretrained('microsoft/codebert-base').eval()defembed(src:str)->torch.Tensor:inp=tok(src,truncation=True,max_length=512,return_tensors='pt')withtorch.no_grad():out=model(**inp).last_hidden_state[:,0]# CLSreturnout.squeeze()# Then train linear classifier on embeddings
Defensive: code anonymizer
# Normalize to defeat stylometryimportblack,autopep8defanonymize(src:str)->str:src=black.format_str(src,mode=black.Mode())# uniform layout# rename identifiers via AST transform# replace idiosyncratic constructs with canonical formreturnsrc
매 결정 기준
상황
Approach
Small corpus (<50 authors)
RF on hand-crafted features
Large corpus, deep features
CodeBERT/StarCoder embedding + classifier
Defending privacy
Black/Prettier + identifier normalization
Adversarial robust attack
Limited — formatting tools 매 defeat 대부분
Cross-language
Embedding-based 만 가능
기본값: 매 RF + AST n-gram 으로 baseline. Embedding 으로 boost.