nhengatu-experiments / 01_word2vec /train_word2vec.py
rmacario's picture
Upload folder using huggingface_hub
7724c94 verified
Raw
History Blame Contribute Delete
1.43 kB
#!/usr/bin/env python3
"""Word2Vec baseline for Portuguese-Nheengatu parallel corpus."""
import json
import sys
from pathlib import Path
from gensim.models import Word2Vec
from collections import Counter
# Get project root (4 levels up from this file)
PROJECT_ROOT = Path(__file__).parent.parent.parent
corpus_path = PROJECT_ROOT / "data/processed/merged_5028_pairs.json"
with open(corpus_path, 'r') as f:
data = json.load(f)
print("="*60)
print("WORD2VEC BASELINE - Portuguese/Nheengatu")
print("="*60)
print(f"Corpus: {len(data)} sentence pairs")
print(f"Source: {corpus_path}")
# Prepare sentences
pt_sentences = [item['pt'].lower().split() for item in data]
nhe_sentences = [item['nhe'].lower().split() for item in data]
# Train models
for lang, sents in [('pt', pt_sentences), ('nhe', nhe_sentences)]:
print(f"\n🔧 Training {lang} model...")
# Small window (syntactic)
m_small = Word2Vec(sents, vector_size=100, window=3, min_count=3, epochs=10)
m_small.save(str(PROJECT_ROOT / f"experiments/01_word2vec/results/{lang}_w2v_small.model"))
# Large window (semantic)
m_large = Word2Vec(sents, vector_size=100, window=10, min_count=3, epochs=10)
m_large.save(str(PROJECT_ROOT / f"experiments/01_word2vec/results/{lang}_w2v_large.model"))
print(f" Vocabulary: {len(m_small.wv)} / {len(m_large.wv)}")
print("\n✅ Models saved to experiments/01_word2vec/results/")