This is a sample Sentimental Analysis code for hotel reviews like positive or negative. I use pandas, transformers, datasets, turkish_lm_tuner libraries. Firstly, I think Path name (C:UsersAta Onur Özdemir so ‘Ö’ letter) and ı changed but it is not fixing and output give same error. Secondly, I create init.py in output folder but this way gives same error. And I define path in enviromental variables but same errors is coming again.I search google and stackoverflow but ı can’t find any way, I try many ways but I didn’t. Please help me 🙂 I search google and stackoverflow but I can’t find any way, I try many ways but I’cant.Please help me 🙂
import pandas as pd
from transformers import AutoTokenizer
from datasets import Dataset
from turkish_lm_tuner import TrainerForClassification, EvaluatorForClassification
import os
# Load the data
data = pd.read_csv('../Emotion_Detection/Hotel_readablee.csv')
output_dir = 'C:\Users\Ata Onur Özdemir\PycharmProjects\Emotion_Detection\output'
# Ensure the output directory exists and is a directory
if not os.path.exists(output_dir):
os.makedirs(output_dir)
elif not os.path.isdir(output_dir):
raise NotADirectoryError(f"{output_dir} is not a directory")
# Initialize the tokenizer
model_name = "boun-tabi-LMG/TURNA"
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Custom Dataset Processor class
class CustomDatasetProcessor:
def __init__(self, tokenizer, max_input_length):
self.tokenizer = tokenizer
self.max_input_length = max_input_length
def load_and_preprocess_data(self, data):
dataset = Dataset.from_pandas(data)
def preprocess_function(examples):
# Convert each review text to string type
positive_reviews = [str(review) for review in examples['Positive_Review_Tr']]
negative_reviews = [str(review) for review in examples['Negative_Review_Tr']]
# Use the tokenizer correctly
tokenized_reviews = self.tokenizer(
positive_reviews,
negative_reviews,
truncation=True,
padding='max_length',
max_length=self.max_input_length,
return_tensors='pt' # Return PyTorch tensors
)
return tokenized_reviews
tokenized_dataset = dataset.map(preprocess_function, batched=True)
return tokenized_dataset
# Initialize dataset processor
dataset_processor = CustomDatasetProcessor(tokenizer, max_input_length=2048)
# Split the data into train, validation, and test sets
train_data = data.sample(frac=0.8, random_state=42)
remaining_data = data.drop(train_data.index)
validation_data = remaining_data.sample(frac=0.5, random_state=42)
test_data = remaining_data.drop(validation_data.index)
# Preprocess datasets
train_dataset = dataset_processor.load_and_preprocess_data(train_data)
eval_dataset = dataset_processor.load_and_preprocess_data(validation_data)
test_dataset = dataset_processor.load_and_preprocess_data(test_data)
# Training parameters
training_params = {
'num_train_epochs': 10,
'per_device_train_batch_size': 4,
'per_device_eval_batch_size': 4,
'output_dir': 'C:\Users\Ata Onur Özdemir\PycharmProjects\Emotion_Detection\output',
'evaluation_strategy': 'epoch',
'save_strategy': 'epoch',
}
# Optimizer parameters
optimizer_params = {
'optimizer_type': 'adafactor',
'scheduler': False,
}
# Test parameters
test_params = {
'per_device_eval_batch_size': 4,
'output_dir': 'C:\Users\Ata Onur Özdemir\PycharmProjects\Emotion_Detection\output',
}
num_labels = 4 # Assuming you are performing binary classification
# Initialize TrainerForClassification
model_trainer = TrainerForClassification(
model_name=model_name,
num_labels=num_labels,
task='classification',
optimizer_params=optimizer_params,
training_params=training_params,
model_save_path="hotel_reviews_classification_model",
test_params=test_params # Add test_params here
)
# Train and evaluate the model
trainer, model = model_trainer.train_and_evaluate(train_dataset, eval_dataset, test_dataset)
# Save the trained model and tokenizer
model.save_pretrained("hotel_reviews_classification_model")
tokenizer.save_pretrained("hotel_reviews_classification_model")
# Evaluate the model using EvaluatorForClassification
evaluator = EvaluatorForClassification(
model_save_path="hotel_reviews_classification_model",
model_name=model_name,
task='classification',
test_params=test_params, # Add test_params here
num_labels=num_labels # Add num_labels parameter here
)
# Evaluate model on test dataset
results = evaluator.evaluate_model(test_dataset)
# Convert results to DataFrame
results_df = pd.DataFrame(results)
# Save results to a new CSV file
results_df.to_csv('evaluation_results.csv', index=False)
print("Evaluation results saved to evaluation_results.csv.")
System is given this error:
Traceback (most recent call last):
File "C:UsersAta Onur ÖzdemirPycharmProjectsEmotion_Detectionmain.py", line 101, in <module>
trainer, model = model_trainer.train_and_evaluate(train_dataset, eval_dataset, test_dataset)
File "C:UsersAta Onur Özdemirvenvlibsite-packagesturkish_lm_tunertrainer.py", line 195, in train_and_evaluate
trainer.train()
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformerstrainer.py", line 1885, in train
return inner_training_loop(
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformerstrainer.py", line 2147, in _inner_training_loop
self.control = self.callback_handler.on_train_begin(args, self.state, self.control)
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformerstrainer_callback.py", line 454, in on_train_begin
return self.call_event("on_train_begin", args, state, control)
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformerstrainer_callback.py", line 498, in call_event
result = getattr(callback, event)(
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformersintegrationsintegration_utils.py", line 629, in on_train_begin
self._init_summary_writer(args, log_dir)
File "C:UsersAta Onur Özdemirvenvlibsite-packagestransformersintegrationsintegration_utils.py", line 615, in _init_summary_writer
self.tb_writer = self._SummaryWriter(log_dir=log_dir)
File "C:UsersAta Onur Özdemirvenvlibsite-packagestorchutilstensorboardwriter.py", line 249, in __init__
self._get_file_writer()
File "C:UsersAta Onur Özdemirvenvlibsite-packagestorchutilstensorboardwriter.py", line 281, in _get_file_writer
self.file_writer = FileWriter(
File "C:UsersAta Onur Özdemirvenvlibsite-packagestorchutilstensorboardwriter.py", line 75, in __init__
self.event_writer = EventFileWriter(
File "C:UsersAta Onur Özdemirvenvlibsite-packagestensorboardsummarywriterevent_file_writer.py", line 72, in __init__
tf.io.gfile.makedirs(logdir)
File "C:UsersAta Onur Özdemirvenvlibsite-packagestensorflowpythonlibiofile_io.py", line 513, in recursive_create_dir_v2
_pywrap_file_io.RecursivelyCreateDir(compat.path_to_bytes(path))
tensorflow.python.framework.errors_impl.FailedPreconditionError: C:UsersAta Onur ÖzdemirPycharmProjectsEmotion_Detectionoutput is not a directory
Ata Onur Özdemir is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.