13. Przygotowanie danych w mediach
społecznościowych
CANT WAIT for the new season of #TwinPeaks YAAAAY \(^o^)/!!!
@davidlynch
CANT WAIT for the new season of _hashtag_TwinPeaks_ YAY _smiley_excited_!
_mention_davidlynch_ _emoji_happy_
HASHTAG ELONGATED WORD SMILEY ELONGATED WORD
MENTION EMOJI
14. Przygotowanie danych w mediach
społecznościowych
Jutro mija miesiąc od premiery albumu
_hashtag_instrukcjaobsługiświrów_ więc chyba już
możemy zdradzić częściowo zawartość edycji
specjalnej _emoji_smiling_face_with_sunglasses_
projekt _mention_forinstudiocom_
15. Flair - State of the Art NLP Library
● Łatwość użycia state-of-the-art word embeddings takie jak GloVe, BERT, ELMo
● Tworzenie embedding’ów dokumentów jako kombinacja różnych embedding’ów słów
● Zawiera Flair Embedding
● Wspiera wiele języków
● Modelowanie takich zagadnień jak:
○ Named entity recognition (NER)
○ Part-of-speech tagging (PoS)
○ Klasyfikacja (Multi-class i Multi-label)
○ Language model
● Hyperparameters optimization
● PyTorch
https://github.com/zalandoresearch/flair
16. Flair - przykład klasyfikacji
https://towardsdatascience.com/text-classification-with-state-of-the-art-nlp-library-flair-b541d7add21f
### Data load
corpus = NLPTaskDataFetcher.load_classification_corpus(Path('./'), test_file='test.csv', dev_file='dev.csv',
train_file='train.csv')
### Mixing word embeddings into document embeddings via LSTM
word_embeddings = [WordEmbeddings('glove'), FlairEmbeddings('news-forward-fast'),
FlairEmbeddings('news-backward-fast')]
document_embeddings = DocumentLSTMEmbeddings(word_embeddings, hidden_size=512)
### Training
classifier = TextClassifier(document_embeddings, label_dictionary=corpus.make_label_dictionary(),
multi_label=False)
trainer = ModelTrainer(classifier, corpus)
trainer.train('./', max_epochs=10)
### Predict
classifier = TextClassifier.load_from_file('./best-model.pt')
sentence = Sentence('Hi. Yes mum, I will...')
classifier.predict(sentence)
print(sentence.labels)
Result: ‘[ham (1.0)]’
17. Flair - przykład klasyfikacji
https://towardsdatascience.com/text-classification-with-state-of-the-art-nlp-library-flair-b541d7add21f
### Data load
corpus = NLPTaskDataFetcher.load_classification_corpus(Path('./'), test_file='test.csv', dev_file='dev.csv',
train_file='train.csv')
### Mixing word embeddings into document embeddings via LSTM
word_embeddings = [WordEmbeddings('glove'), FlairEmbeddings('news-forward-fast'),
FlairEmbeddings('news-backward-fast')]
document_embeddings = DocumentLSTMEmbeddings(word_embeddings, hidden_size=512)
### Training
classifier = TextClassifier(document_embeddings, label_dictionary=corpus.make_label_dictionary(),
multi_label=False)
trainer = ModelTrainer(classifier, corpus)
trainer.train('./', max_epochs=10)
### Predict
classifier = TextClassifier.load_from_file('./best-model.pt')
sentence = Sentence('Hi. Yes mum, I will...')
classifier.predict(sentence)
print(sentence.labels)
Result: ‘[ham (1.0)]’
18. [Wyniki]
http://nlpprogress.com/english/sentiment_analysis.html
Task Score Our
SemEval-2017 Task 4 Subtask A (Pos, Neg,
Neu) F1-score 0.685 F1-score 0.647
SemEval 2018 Task 1E-c (Emotions) Macro-F1 56.1 -
SST-2 binary sentiment Accuracy: 95.6% -
Model Score
LSTM + Flair on Polish Common Crawl Accuracy: 91.47%
LSTM + Multi-Language Flair (English, German,
French, Italian, Dutch, Polish) Accuracy: 87.79%
LSTM + Multi-Language BERT Accuracy: 82.5%
Przykłady State-of-the art dla klasyfikacji sentymenty
Wyniki eksperymentów na naszych danych w j. polskim
19. Co to znaczy dobrze?
http://blog.archisnapper.com/done-is-better-than-perfect-also-for-architects/