Open tamarab123 opened 3 years ago
Hallo Clemens, wir hätten noch ein paar Fragen zu unserem Vorgehen: NLP:
In den Daten wird Business Intelligence mit BI abgekürzt und beides verwendet. Für unsere Modelle stellt dies allerdings ein Problem dar. Sollen wir die beiden Begriffe händisch als Synonyme festlegen oder gibt es einen automatisierten Weg? Wir haben uns noch nicht alle Daten angeschaut und können deshalb auch nicht sagen, ob es weitere und wie viele solcher Fälle es gibt.
Wir berechnen momentan die Ähnlichkeit zwischen Fragen bzw. zwischen Antworten mit tf-idf. Dafür wollen wir einen Schwellwert festlegen, ab dem die Ähnlichkeit hoch genug ist, sodass z.B. eine Antwort als korrekt gilt oder eine Frage beantwortet werden kann. Kennst du eine zuverlässigere Möglichkeit um die Ähnlichkeit zu bestimmen? Manche Fragen, die eigentliche keinen Sinn machen, erreichen trotzdem eine Kosinus-Ähnlichkeit von 0.7. Die würde bei einem Schwellwert zu Problemen führen, weil sich ähnliche Fragen in einen ähnlich hohen Kosinus-Wert haben.
Die Antworten sind in der Regel deutlich länger als die Fragen. Dadurch besteht eine größere Gefahr für mögliche Synonyme oder andere Formulierungen. Kann hier trotzdem tf-idf sinnvoll verwendet werden oder kennst du hierfür ein besseres Modell?
Chatbot:
In unser Repository laden wir gleich noch ein Notebook mit dem ersten Versuch tf-idf zu verwenden
Hi, hier einige Vorschläge zu den Fragen:
Es gibt verschiedene Wege mit Synonymen umzugehen, das hängt aber sehr davon ab wo genau sie euch Probleme bereiten. Im besten Fall haben Synonyme sehr ähnliche Wortvektoren, je nachdem welche Embeddings ihr verwendet. Lasst uns dazu am Donnerstag sprechen.
TF-IDF könnt ihr dafür verwenden, evtl. könnte ein Ansatz mit Word- bzw. Sentence-Embeddings für euch aber vorteilhafter sein. Hier ein Link zu einer sehr guten Implementierung von Sentence Embeddings aus Transformer Modellen: https://www.sbert.net/docs/usage/semantic_textual_similarity.html
Hier bräuchte ich mehr Beispiele für die kurzen Fragen, die Probleme bereiten. TF-IDF ist in jedem Fall eine gute Baseline, damit könnt ihr die Ansätze vergleichen, die auf Embeddings basieren.
Es nicht notwendig ein bestimmtes Framework zu nutzen, für das Frontend ist die Telegram API in Ordnung. Was mir noch nicht klar ist ist, ob ihr das Abfragen einer passenden Antwort zu einer Frage als Klassifikationsmodell angeht oder mit statischen Vektoren, die ihr durch einer Distanzmetrik vergleicht.
Update zum Finetuning der sentence-transformer: Hierfür scheinen gelabelte Daten (Ähnlichkeitsmaß zweier Sätze als Label) benötigt zu werden. Dies ist für unseren Use-Case schlecht umsetzbar. Ist das ebenfalls der Stand deiner Informationen, oder haben wir das etwas übersehen?
Richtig, dafür braucht man Labels. Ich dachte die wären vorhanden, zumal ihr wisst welche Frage/Antwort Paare zusammen gehören und als Negativbeispiele andere Sätze bzw. die anderen Fragen heranziehen könntet.
Der Chatbot soll Fragen auf Basis von Fancy Flashcards stellen und die gegebene Antwort des Users validieren.
Gruppenmitglieder: