Это ссылка на набор данных — https://huggingface.co/datasets/surrey-nlp/PLOD-CW
Вы можете загрузить набор данных, используя эту строку — load_dataset( "surrey-nlp/PLOD-CW")
Я пытался написать код, в котором сначала векторизую набор данных с помощью word2vec, а затем применяю алгоритм LSTM для классификации последовательностей с несколькими метками, но я сталкиваюсь ошибка.
Это код, который я создал-
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.layers import Input, LSTM, Dense, Embedding, Dropout
from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.utils import to_categorical
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
datasets = load_dataset("surrey-nlp/PLOD-CW")
# Preprocess the data for a single dictionary
def preprocess_data(data):
processed_data = []
for sentence in data['tokens']:
processed_sentence = []
for word in sentence:
processed_sentence.append(word.lower())
processed_data.append(processed_sentence)
return processed_data
# Convert the data into Tfidf vectors
# Convert the data into Tfidf vectors
def tfidf_vectorization(data):
data_strings = [' '.join(sentence) for sentence in data]
vectorizer = TfidfVectorizer(max_features=5000)
tfidf_matrix = vectorizer.fit_transform(data_strings)
return tfidf_matrix, vectorizer
# Build the LSTM model
def build_lstm_model(input_shape, num_labels):
inputs = Input(shape=input_shape)
embedding_layer = Embedding(input_dim=5000, output_dim=100, input_length=input_shape[0])(inputs)
lstm_layer = LSTM(units=100, return_sequences=False)(embedding_layer)
dense_layer = Dense(units=num_labels, activation='sigmoid')(lstm_layer)
model = Model(inputs=inputs, outputs=dense_layer)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
# Preprocess the data for the list of dictionaries
processed_data = [preprocess_data(dataset) for dataset in datasets.values()]
# Convert the data into Tfidf vectors
tfidf_matrix, vectorizer = tfidf_vectorization(processed_data)
# Prepare the data for LSTM input
max_sequence_length = 50
X = tfidf_matrix.toarray()
X = pad_sequences(X, maxlen=max_sequence_length, padding='post', truncating='post')
# Prepare the labels
num_labels = len(np.unique(np.concatenate([dataset['train']['ner_tags'] for dataset in datasets])))
Y = np.concatenate([np.array(dataset['train']['ner_tags']) for dataset in datasets])
Y = to_categorical(Y, num_labels)
# Split the data into training and validation sets
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size=0.1, random_state=42)
# Build the LSTM model
input_shape = (max_sequence_length,)
model = build_lstm_model(input_shape, num_labels)
# Train the model
checkpointer = ModelCheckpoint(filepath='best_model.h5', verbose=1, save_best_only=True)
model.fit(X_train, Y_train, validation_data=(X_val, Y_val), epochs=10, batch_size=32, callbacks=[checkpointer])
# Evaluate the model
model.load_weights('best_model.h5')
loss, accuracy, f1_score = model.evaluate(X_val, Y_val, verbose=1)
print('Loss:', loss)
print('Accuracy:', accuracy)
print('F1 Score:', f1_score)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [67], in ()
42 processed_data = [preprocess_data(dataset) for dataset in datasets.values()]
44 # Convert the data into Tfidf vectors
---> 45 tfidf_matrix, vectorizer = tfidf_vectorization(processed_data)
47 # Prepare the data for LSTM input
48 max_sequence_length = 50
Input In [67], in tfidf_vectorization(data)
25 def tfidf_vectorization(data):
---> 26 data_strings = [' '.join(sentence) for sentence in data]
27 vectorizer = TfidfVectorizer(max_features=5000)
28 tfidf_matrix = vectorizer.fit_transform(data_strings)
Input In [67], in (.0)
25 def tfidf_vectorization(data):
---> 26 data_strings = [' '.join(sentence) for sentence in data]
27 vectorizer = TfidfVectorizer(max_features=5000)
28 tfidf_matrix = vectorizer.fit_transform(data_strings)
TypeError: sequence item 0: expected str instance, list found
Я пытался заставить этот код работать, чтобы я мог создать код для классификации последовательностей с несколькими метками с использованием векторизации TFIDF и алгоритма LSTM.
Наборы данных состоят из-
Пожалуйста, помогите мне внести изменения в код, чтобы я мог получить выходные данные. Пожалуйста, дайте мне альтернативу или внесите исправления в соответствии с набором данных, чтобы я мог создать код для классификации последовательностей с использованием векторизации Tfidf и алгоритма LSTM.
Это ссылка на набор данных — https://huggingface.co/datasets/surrey-nlp/PLOD-CW Вы можете загрузить набор данных, используя эту строку — load_dataset( "surrey-nlp/PLOD-CW") Я пытался написать код, в котором сначала векторизую набор данных с помощью word2vec, а затем применяю алгоритм LSTM для классификации последовательностей с несколькими метками, но я сталкиваюсь ошибка. Это код, который я создал- [code]import numpy as np import tensorflow as tf from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.layers import Input, LSTM, Dense, Embedding, Dropout from tensorflow.keras.models import Model from tensorflow.keras.callbacks import ModelCheckpoint from tensorflow.keras.utils import to_categorical from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split
datasets = load_dataset("surrey-nlp/PLOD-CW")
# Preprocess the data for a single dictionary def preprocess_data(data): processed_data = [] for sentence in data['tokens']: processed_sentence = [] for word in sentence: processed_sentence.append(word.lower()) processed_data.append(processed_sentence) return processed_data
# Convert the data into Tfidf vectors # Convert the data into Tfidf vectors def tfidf_vectorization(data): data_strings = [' '.join(sentence) for sentence in data] vectorizer = TfidfVectorizer(max_features=5000) tfidf_matrix = vectorizer.fit_transform(data_strings) return tfidf_matrix, vectorizer
# Build the LSTM model def build_lstm_model(input_shape, num_labels): inputs = Input(shape=input_shape) embedding_layer = Embedding(input_dim=5000, output_dim=100, input_length=input_shape[0])(inputs) lstm_layer = LSTM(units=100, return_sequences=False)(embedding_layer) dense_layer = Dense(units=num_labels, activation='sigmoid')(lstm_layer) model = Model(inputs=inputs, outputs=dense_layer) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model
# Preprocess the data for the list of dictionaries processed_data = [preprocess_data(dataset) for dataset in datasets.values()]
# Convert the data into Tfidf vectors tfidf_matrix, vectorizer = tfidf_vectorization(processed_data)
# Prepare the data for LSTM input max_sequence_length = 50 X = tfidf_matrix.toarray() X = pad_sequences(X, maxlen=max_sequence_length, padding='post', truncating='post')
# Prepare the labels num_labels = len(np.unique(np.concatenate([dataset['train']['ner_tags'] for dataset in datasets]))) Y = np.concatenate([np.array(dataset['train']['ner_tags']) for dataset in datasets]) Y = to_categorical(Y, num_labels)
# Split the data into training and validation sets X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size=0.1, random_state=42)
# Build the LSTM model input_shape = (max_sequence_length,) model = build_lstm_model(input_shape, num_labels)
# Train the model checkpointer = ModelCheckpoint(filepath='best_model.h5', verbose=1, save_best_only=True) model.fit(X_train, Y_train, validation_data=(X_val, Y_val), epochs=10, batch_size=32, callbacks=[checkpointer])
# Evaluate the model model.load_weights('best_model.h5') loss, accuracy, f1_score = model.evaluate(X_val, Y_val, verbose=1) print('Loss:', loss) print('Accuracy:', accuracy) print('F1 Score:', f1_score) [/code] Я получаю следующую ошибку: [code]--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Input In [67], in () 42 processed_data = [preprocess_data(dataset) for dataset in datasets.values()] 44 # Convert the data into Tfidf vectors ---> 45 tfidf_matrix, vectorizer = tfidf_vectorization(processed_data) 47 # Prepare the data for LSTM input 48 max_sequence_length = 50
Input In [67], in tfidf_vectorization(data) 25 def tfidf_vectorization(data): ---> 26 data_strings = [' '.join(sentence) for sentence in data] 27 vectorizer = TfidfVectorizer(max_features=5000) 28 tfidf_matrix = vectorizer.fit_transform(data_strings)
Input In [67], in (.0) 25 def tfidf_vectorization(data): ---> 26 data_strings = [' '.join(sentence) for sentence in data] 27 vectorizer = TfidfVectorizer(max_features=5000) 28 tfidf_matrix = vectorizer.fit_transform(data_strings)
TypeError: sequence item 0: expected str instance, list found [/code] Я пытался заставить этот код работать, чтобы я мог создать код для классификации последовательностей с несколькими метками с использованием векторизации TFIDF и алгоритма LSTM. Наборы данных состоят из- [code]DatasetDict({ train: Dataset({ features: ['tokens', 'pos_tags', 'ner_tags'], num_rows: 1072 }) validation: Dataset({ features: ['tokens', 'pos_tags', 'ner_tags'], num_rows: 126 }) test: Dataset({ features: ['tokens', 'pos_tags', 'ner_tags'], num_rows: 153 }) }) [/code] Для этих двух строк- [code]data=datasets['train'][0:3] print(data) [/code] Выходные данные приходят- [code]{'tokens': [['For', 'this', 'purpose', 'the', 'Gothenburg', 'Young', 'Persons', 'Empowerment', 'Scale', '(', 'GYPES', ')', 'was', 'developed', '.'], ['The', 'following', 'physiological', 'traits', 'were', 'measured', ':', 'stomatal', 'conductance', '(', 'gs', ',', 'mol', 'H2O', 'm-2', 's-1', ')', ',', 'transpiration', 'rate', '(', 'E', ',', 'mmol', 'H2O', 'm-2', 's-1', ')', ',', 'net', 'photosynthetic', 'rate', '(', 'PN', ',', 'μmol', 'm-2', 's-1', ')', 'and', 'intercellular', 'CO2', 'concentration', 'CO2', '(', 'Ci', ',', 'μmol', 'm-2', 's-1', ')', '.'], ['Minor', 'H', 'antigen', 'alloimmune', 'responses', 'readily', 'occur', 'in', 'the', 'setting', 'of', 'human', 'leukocyte', 'antigen', '(', 'HLA)–matched', 'allogeneic', 'solid', 'organ', 'and', 'stem', 'cell', 'transplantation', '(', 'SCT', ')', '[', '3,4', ']', '.']], 'pos_tags': [['ADP', 'DET', 'NOUN', 'DET', 'PROPN', 'PROPN', 'PROPN', 'PROPN', 'PROPN', 'PUNCT', 'PROPN', 'PUNCT', 'AUX', 'VERB', 'PUNCT'], ['DET', 'ADJ', 'ADJ', 'NOUN', 'AUX', 'VERB', 'PUNCT', 'ADJ', 'NOUN', 'PUNCT', 'PROPN', 'PUNCT', 'NOUN', 'NOUN', 'NOUN', 'NOUN', 'PUNCT', 'PUNCT', 'NOUN', 'NOUN', 'PUNCT', 'PROPN', 'PUNCT', 'NOUN', 'NOUN', 'NOUN', 'NOUN', 'PUNCT', 'PUNCT', 'ADJ', 'ADJ', 'NOUN', 'PUNCT', 'PROPN', 'PUNCT', 'NOUN', 'NOUN', 'NOUN', 'PUNCT', 'CCONJ', 'ADJ', 'NOUN', 'NOUN', 'PROPN', 'PUNCT', 'PROPN', 'PUNCT', 'NOUN', 'NOUN', 'NOUN', 'PUNCT', 'PUNCT'], ['ADJ', 'PROPN', 'NOUN', 'ADJ', 'NOUN', 'ADV', 'VERB', 'ADP', 'DET', 'NOUN', 'ADP', 'ADJ', 'NOUN', 'NOUN', 'PUNCT', 'PROPN', 'ADJ', 'ADJ', 'NOUN', 'CCONJ', 'NOUN', 'NOUN', 'NOUN', 'PUNCT', 'PROPN', 'PUNCT', 'PUNCT', 'NUM', 'PUNCT', 'PUNCT']], 'ner_tags': [['B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'I-LF', 'I-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O'], ['B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'I-LF', 'B-AC', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O'], ['B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-LF', 'I-LF', 'I-LF', 'B-O', 'B-AC', 'B-O', 'B-O', 'B-O', 'B-O', 'B-O']]} [/code] Пожалуйста, помогите мне внести изменения в код, чтобы я мог получить выходные данные. Пожалуйста, дайте мне альтернативу или внесите исправления в соответствии с набором данных, чтобы я мог создать код для классификации последовательностей с использованием векторизации Tfidf и алгоритма LSTM.
для кластеризации меток (в задаче классификации по нескольким меткам), которые чаще всего появляются вместе в кадре данных? Например, у меня есть этот фрейм данных:
text | genre
===========================
text 1 |
text 2 |
text 3 |
text 4 |...
Я реализую фильтрацию с помощью библиотеки с открытым исходным кодом под названием DataGridExtensions .
Я хотел бы реализовать фильтрацию для столбцов с несколькими метками в сочетании с другой фильтрацией. условия из DataGridExtensions'...
Я реализую фильтрацию с помощью библиотеки с открытым исходным кодом под названием DataGridExtensions .
Я хотел бы реализовать фильтрацию для столбцов с несколькими метками в сочетании с другой фильтрацией. условия из DataGridExtensions'...
Я реализую фильтрацию с помощью библиотеки с открытым исходным кодом под названием DataGridExtensions .
Я хотел бы реализовать фильтрацию для столбцов с несколькими метками в сочетании с другой фильтрацией. условия из DataGridExtensions'...
Я реализую фильтрацию с помощью библиотеки с открытым исходным кодом под названием DataGridExtensions .
Я хотел бы реализовать фильтрацию для столбцов с несколькими метками в сочетании с другой фильтрацией. условия из DataGridExtensions'...