import os import nltk import logging from pathlib import Path # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def setup_nltk(): """ Set up NLTK data in a local directory to avoid permission issues. Downloads required NLTK packages if they're not already present. """ try: # Create a local directory for NLTK data nltk_data_dir = Path('./nltk_data') nltk_data_dir.mkdir(exist_ok=True) # Add the local directory to NLTK's data path nltk.data.path.append(str(nltk_data_dir)) # Required NLTK packages required_packages = ['punkt', 'vader_lexicon', 'stopwords'] for package in required_packages: try: # Try to load the package first nltk.data.find(f'tokenizers/{package}' if package == 'punkt' else f'sentiment/{package}' if package == 'vader_lexicon' else f'corpora/{package}') logger.info(f"Package '{package}' is already downloaded") except LookupError: # If package is not found, download it logger.info(f"Downloading package '{package}'...") nltk.download(package, download_dir=str(nltk_data_dir)) logger.info(f"Successfully downloaded package '{package}'") logger.info("NLTK setup completed successfully") return True except PermissionError as e: logger.error(f"Permission error while setting up NLTK: {e}") return False except Exception as e: logger.error(f"Unexpected error during NLTK setup: {e}") return False if __name__ == "__main__": setup_nltk()