wtorek, 6 lutego 2024

Analiza sentymentów danych giełdowych - zamykamy opis używanego środowiska

Ten wpis jest kontynuacją: https://kamilkondrat.blogspot.com/2024/02/analiza-sentymentow-danych-giedowych_4.html

Ta praca odzwierciedla zainteresowanie autora analizą finansową i wykorzystaniem narzędzi informatycznych w jej realizacji. Niniejszy blog nie ma na celu dostarczania porad finansowych, lecz stanowi konstruktywne podejście autora do dzielenia się wiedzą. Autor widzi w tym sposobność do rozwijania swoich umiejętności i zachęcania do wzajemnej dyskusji. Należy pamiętać, że wnioski wynikające z analiz prezentowanych na tym blogu nie powinny być bezpośrednio stosowane do podejmowania decyzji finansowych. Nawet jeśli analizy są dokładne, stanowią one tylko fragment potrzebnych informacji do podjęcia w pełni świadomej decyzji. Brak szerszego kontekstu, w którym znajduje się potencjalny inwestor lub decydent, może prowadzić do niepełnych wniosków.

import tensorflow as tf
from tensorflow.keras.layers import Bidirectional, Conv1D, Dense, 
	Dropout, Embedding, Flatten, Input, LSTM, MaxPool1D
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.preprocessing.text import one_hot, Tokenizer
from tensorflow.keras.utils import to_categorical

"Model" i "Sequential" - to klasy pozwalające na budowę modelu sieci neuronowych. "Sequential" jest stworzony do tworzenia prostszych modeli, w których to każda warstwa będzie przyjmować dane wyłącznie z jednej poprzedzającej warstwy i przekazywać je do następnej warstwy, to przejście jest wyłącznie liniowe.

Natomiast "Model" umożliwia tworzenie bardziej złożonych architektur sieci neuronowych. Wchodzi w to między innymi: wielokrotne wejścia i wyjścia danych do i z modelu, pozwalające na równoległą pracę modelu na przykład nad tłumaczeniem i streszczaniem tekstu jednocześnie; kolejną możliwością "Model" jest na przykład możliwość wielokrotnego wykorzystywania warstw, w różnych częściach modelu.

"pad_sequences" - funkcja służąca do normalizacji sekwencji tekstu. Mając sekwencje (zdania) o różnej długości będziemy zainteresowani zrównaniem ich ze sobą długością, tak aby uzyskać jednorodne partie i następnie użyć ich jako dane wejściowe do naszej sieci neuronowej.

"one_hot" - funkcja "one hot" w TensorFlow tworzy indeksy dla każdego słowa. Myślę, że najprościej będzie mi pokazać to na przykładzie:

Weźmy sobie zdanie "Ala ma kota". Po tokenizacji mamy: ["Ala", "ma", "kota"]. Ustalamy rozmiar naszego słownika. Następnie funkcja "one_hot" nada indeksy: "Ala" -> 1, "ma" -> 2, "kota" -> 3. Całe zdanie będzie, technicznie, listą prezentującą się następująco: [1,2,3].

Aby przekształcić to na wektory "one_hot", które nie są bezpośrednio związane z funkcją "one_hot" w TensorFlow, przyjęłoby to następujący wyraz (słownik o rozmiarze 4, pierwsza wartość zostaje 0, z racji tego, że tak się zwykle liczy od 0, nie od 1):
Dla indeksu 1 "Ala" -> [0, 1, 0, 0]
Dla indeksu 2 "ma" -> [0, 0, 1, 0]
Dla indeksu 3 "kota" -> [0, 0, 0, 1]

"Tokenizer" - jest podobny w działaniu do funkcji "one_hot", tylko że bardziej rozbudowany. Różnica przede wszystkim jest taka, że Tokenizer najpierw analizuje cały tekst, a później przypisuje unikalny indeks unikalnemu słowu. "One_hot" działa inaczej używa do tego prostej funkcji hashującej, bez uprzedniego tworzenia globalnego słownika.

"to_categorical" -przekształca liczby całkowite (wektory klas) na wyżej w tym tekście opisany "one hot" (to ma też określenie: binarna macierz klas - binarna, wyrażona w zerach i jedynkach).

Brak komentarzy:

Prześlij komentarz

Analiza sentymentów - wpisy na mediach społecznościowych (podział danych)

Ten wpis zaczniemy od stworzenia DataFrame z danymi treningowymi train_df = pd.read_csv('train.csv', encoding='ISO-8859-1')....