new_notes.md 4.01 KB
Newer Older
stalscar's avatar
stalscar committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## Vorwort:
- Da SpaCy das favorisierte Framework ist, bietet es sich an word embedding zu verwenden, da es
  viele Algorithmen gibt, die auf word embedding aufbauen. Jedoch möchten wir kein Modell implementieren
  und es selbstständig anlernen, da dieses Verfahren viele Eingabetexte benötigt, um sinnvolle Textausgaben
  zu generieren. Viel eher implementieren wir pre-trained Modelle.
- Word Embedding Methoden:
1. Bag of words
2. tf-idf
3. word2vec
4. glove embedding
5. fastext
6. elmo

- Des Weiteren soll kein anderes Framework als SpaCy verwendet werden. Sofern andere Strategien verwendet
wurden, handelt es sich hierbei um kein eigenes Framework, sondern viel eher um Algorithmen und Methoden.

## Strategien:
- bereits implementiert: 
  1. TFIDF (sentence embedding)
  2. sentence embedding with transformers
  3.
  
- weiterführende Strategien:
  1. abstractive summary with T5 - nur englisch
  2. Sumy
  3. Bert
  4. SpaCy
28
  5. Glove Word/Sentence Embedding
stalscar's avatar
stalscar committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  
  
## t5: https://towardsdatascience.com/simple-abstractive-text-summarization-with-pretrained-t5-text-to-text-transfer-transformer-10f6d602c426
- !pip install transformers==2.8.0
  & !pip install torch==1.4.0
- Problem mit der Strategie ist, dass Texte länger als 512 Token nicht verarbeitet werden 
- unklar bisher auch, ob Deutsche Texte funktionieren. Bisher wurde kein deutsches pre-trained Modell
gefunden, weshalb Texte nur kryptisch ausgegeben werden. Aufgabe wäre hier, ein Modell selbst anzulernen,
  hierfür gibt es bereits Projekte, die dies umgesetzt haben, jedoch soll die Qualität dabei nicht hoch
  gewesen sein.


## Sumy: https://pypi.org/project/sumy/
- Make sure you have Python 2.7/3.3+ and pip (Windows, Linux) installed
- pip install sumy
- import nltk
- nltk.download('punkt')
- pip install numpy  
- nimmt aktuell eine Website über URL und erzeugt dazu Zusammenfassung


## Bert: https://pypi.org/project/bert-extractive-summarizer/
- Es gilt einen Custom Summarizer zu erstellen, der default summarizer ist für die englische Sprache.
- Zwei Versionen wurden in BERT.py implementiert, beide sind verwertbar und hier gilt es zu testen,
  welche Variante sich besser eignet. 


56
57
58
59
60
61
62
## Word/sentence embedding with pre-trained vectors 
- Es werden Sentence Embeddings zon den dazugehörenden Wörter erzeugt. 
- Hier können die Embeddings für die Deutsche Sprache z.b von der Seite https://deepset.ai/german-word-embeddings genutzt werden. (Glove,Word2Vec,fastText)
- Man muss hier, die pre-trained Embeddings als Datei -- in Form von {Wort element1 element2 ... elementN} enthält -- addieren und wie groß ist jeder Vektor (100,300,..)
- Genutzte Biliotheken sind : numpy, scikit-learn (pip install -U scikit-learn), networkx (pip install networkx)


stalscar's avatar
stalscar committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
## Spacy & word embedding
- keine größeren Probleme mit SpaCy. Hierbei gibt es verschiedenste Strategien, wie man mit SpaCy arbeiten
kann. 
  Zu untersuchende Strategien:
  Spacy + Word embedding + word2vec: Eigenes Modell trainieren?

  Spacy + Word embedding + glove: Nach Untersuchungen wird glove hauptsächlich zur Textklassifizierung
  verwendet

  Spacy + Word embedding + fastext: Wie glove zur Textklassifizierung statt Textzusammenfassung

## transformer and pipeline:
- abstrakte Methode um Texte zusammenzufassen. Sehr langsam, nach den imports muss die pipeline
heruntergeladen werden (beim ersten Mal). Anschließend immernoch sehr slow, Zusammenfassungen sind
  sehr kryptisch.
  
## BART: 
- Verwendet Bert sowie GPT, funktioniert jedoch nicht bei Deutschen Texten 
## Pysummarization: 
- Funktioniert sehr gut für englische Texte, habe jedoch kein deutsches Modell gefunden

## NLTK:
- nicht erwünscht als Framework für unser Projekt, jedoch wurde eine Strategie trotzdem hierfür getestet.
- Strategie funktioniert gut, es gibt viele Möglichkeiten NLTK einzubinden
## XLM: https://huggingface.co/transformers/model_summary.html
- könnte funktionieren, unsicher bisher bei der Implementierung

## Tensorflow: 
- nur Strategien gefunden, die auf ein eigenständiges Training aufbauen. Dies wäre
 jedoch für uns unvorteilhaft.