diff --git a/rocket-chat-api/rocket-chat-api.ipynb b/rocket-chat-api/rocket-chat-api.ipynb
index 4b976021c11523019a2b3cd74caa8e875bb9fe1b..4bf5ded841d51235d7610f74ca0457862b0a27a5 100644
--- a/rocket-chat-api/rocket-chat-api.ipynb
+++ b/rocket-chat-api/rocket-chat-api.ipynb
@@ -2,21 +2,22 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 3,
    "id": "initial_id",
    "metadata": {
     "collapsed": true,
     "ExecuteTime": {
-     "end_time": "2024-01-15T09:15:30.953499600Z",
-     "start_time": "2024-01-15T09:15:30.602210400Z"
+     "end_time": "2024-01-23T16:46:12.873037300Z",
+     "start_time": "2024-01-23T16:46:09.563529Z"
     }
    },
    "outputs": [
     {
      "data": {
-      "text/plain": "[('Note-to-self', '6123583208648d50d46136e7', 'Grib6LkDEh8BjXm5A'),\n ('SLT-Team', '621f3257dda518ec820fec0f', 'DLX2YQYzmwSefCFSs'),\n ('Arbeitsaufträge-SHK-Abt-3',\n  '6231a585396730692a6254af',\n  'h2F4wES7ALisyjFeS'),\n ('Machine-Learning-Team', '6243f60f3bb97e25a63651be', 'sibAdkwHQzqJChxH9'),\n ('mpilhlt-DH', '6246b44404cc8d8ba31517c2', 'yT4DM9pje2Cbnz7w3'),\n ('reference-extraction-workshops-2023',\n  '636a209aa7ef138927c64671',\n  'CXECckP3iJcT7Wzvm'),\n ('Literaturverwaltung', '642ab2edd4f482c368a7e364', 'ALzasJ7iwLpNzE34B'),\n ('Arbeitsgruppe-Gleichstellungsbericht',\n  '6492f49d7821ad51fcbbef97',\n  '6492f49e7821ad51fcbbef99'),\n ('mpilhlt-Auer-Doctoral-Students-plus-Coordinator',\n  '64b50afdf6d0cde3515015c3',\n  '64b50afdf6d0cde3515015c5'),\n ('DH-Projekte-Abt-Auer',\n  '655cd77374c1eb212615898e',\n  '655cd77374c1eb2126158990')]"
+      "text/plain": "                                              name                    roomId\n0                                     Note-to-self         Grib6LkDEh8BjXm5A\n1                                         SLT-Team         DLX2YQYzmwSefCFSs\n2                        Arbeitsaufträge-SHK-Abt-3         h2F4wES7ALisyjFeS\n3                            Machine-Learning-Team         sibAdkwHQzqJChxH9\n4                                       mpilhlt-DH         yT4DM9pje2Cbnz7w3\n5              reference-extraction-workshops-2023         CXECckP3iJcT7Wzvm\n6                              Literaturverwaltung         ALzasJ7iwLpNzE34B\n7             Arbeitsgruppe-Gleichstellungsbericht  6492f49e7821ad51fcbbef99\n8  mpilhlt-Auer-Doctoral-Students-plus-Coordinator  64b50afdf6d0cde3515015c5\n9                             DH-Projekte-Abt-Auer  655cd77374c1eb2126158990",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>name</th>\n      <th>roomId</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>Note-to-self</td>\n      <td>Grib6LkDEh8BjXm5A</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>SLT-Team</td>\n      <td>DLX2YQYzmwSefCFSs</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>Arbeitsaufträge-SHK-Abt-3</td>\n      <td>h2F4wES7ALisyjFeS</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>Machine-Learning-Team</td>\n      <td>sibAdkwHQzqJChxH9</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>mpilhlt-DH</td>\n      <td>yT4DM9pje2Cbnz7w3</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>reference-extraction-workshops-2023</td>\n      <td>CXECckP3iJcT7Wzvm</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>Literaturverwaltung</td>\n      <td>ALzasJ7iwLpNzE34B</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>Arbeitsgruppe-Gleichstellungsbericht</td>\n      <td>6492f49e7821ad51fcbbef99</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>mpilhlt-Auer-Doctoral-Students-plus-Coordinator</td>\n      <td>64b50afdf6d0cde3515015c5</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>DH-Projekte-Abt-Auer</td>\n      <td>655cd77374c1eb2126158990</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
      },
-     "execution_count": 2,
+     "execution_count": 3,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -43,7 +44,7 @@
     "        raise RuntimeError(f'Cannot parse response from {response.url}.')\n",
     "\n",
     "teams = call_rocket_chat_api(\"teams.list\").get('teams')\n",
-    "[(t.get('name'), t.get('_id'), t.get('roomId')) for t in teams]\n"
+    "[(t.get('name'), t.get('_id'), t.get('roomId'), t.get('t')) for t in teams]\n"
    ]
   },
   {
@@ -56,31 +57,28 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 8,
    "outputs": [
     {
-     "ename": "HTTPError",
-     "evalue": "400 Client Error: Bad Request for url: https://chat.gwdg.de/api/v1/channels.history?roomId=sibAdkwHQzqJChxH9",
-     "output_type": "error",
-     "traceback": [
-      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
-      "\u001B[1;31mHTTPError\u001B[0m                                 Traceback (most recent call last)",
-      "Cell \u001B[1;32mIn[3], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m msgs \u001B[38;5;241m=\u001B[39m call_rocket_chat_api(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mchannels.history\u001B[39m\u001B[38;5;124m'\u001B[39m, roomId\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124msibAdkwHQzqJChxH9\u001B[39m\u001B[38;5;124m'\u001B[39m)\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmessages\u001B[39m\u001B[38;5;124m'\u001B[39m)\n",
-      "Cell \u001B[1;32mIn[2], line 15\u001B[0m, in \u001B[0;36mcall_rocket_chat_api\u001B[1;34m(command, **params)\u001B[0m\n\u001B[0;32m     10\u001B[0m headers \u001B[38;5;241m=\u001B[39m {\n\u001B[0;32m     11\u001B[0m     \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mX-Auth-Token\u001B[39m\u001B[38;5;124m'\u001B[39m: os\u001B[38;5;241m.\u001B[39mgetenv(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mROCKETCHAT_API_KEY\u001B[39m\u001B[38;5;124m'\u001B[39m),\n\u001B[0;32m     12\u001B[0m     \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mX-User-Id\u001B[39m\u001B[38;5;124m'\u001B[39m: os\u001B[38;5;241m.\u001B[39mgetenv(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mROCKETCHAT_USER_ID\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m     13\u001B[0m }\n\u001B[0;32m     14\u001B[0m response \u001B[38;5;241m=\u001B[39m requests\u001B[38;5;241m.\u001B[39mget(url, headers\u001B[38;5;241m=\u001B[39mheaders, params\u001B[38;5;241m=\u001B[39mparams)\n\u001B[1;32m---> 15\u001B[0m response\u001B[38;5;241m.\u001B[39mraise_for_status()\n\u001B[0;32m     16\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m     17\u001B[0m     \u001B[38;5;28;01mreturn\u001B[39;00m response\u001B[38;5;241m.\u001B[39mjson()\n",
-      "File \u001B[1;32m~\\AppData\\Local\\miniconda3\\Lib\\site-packages\\requests\\models.py:1021\u001B[0m, in \u001B[0;36mResponse.raise_for_status\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m   1016\u001B[0m     http_error_msg \u001B[38;5;241m=\u001B[39m (\n\u001B[0;32m   1017\u001B[0m         \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstatus_code\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m Server Error: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mreason\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m for url: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39murl\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m   1018\u001B[0m     )\n\u001B[0;32m   1020\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m http_error_msg:\n\u001B[1;32m-> 1021\u001B[0m     \u001B[38;5;28;01mraise\u001B[39;00m HTTPError(http_error_msg, response\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m)\n",
-      "\u001B[1;31mHTTPError\u001B[0m: 400 Client Error: Bad Request for url: https://chat.gwdg.de/api/v1/channels.history?roomId=sibAdkwHQzqJChxH9"
-     ]
+     "data": {
+      "text/plain": "'Christian Boulanger: Ich schließe diesen Teamraum - alle DH-Projekte werden in einem neuen Teamraum weitergeführt - vielen Dank!\\nLisa-Marie Esselmann: Ich hoffe auf jeden Fall, dass die Kommentare zum Großteil hilfreich sind.\\nLisa-Marie Esselmann: Es besteht gegebenenfalls auch das Potential, den eigenen Beitrag in Relation zum Projekt und den genannten Schwierigkeiten etwas mehr herauszustellen, insofern der Schwerpunkt nicht in diesem gegebenen Kapitel grundsätzlich eher auf den Einschränkungen liegen sollte.\\nChristian Boulanger: Ja, da merkt man dann seine deutsche wissenschaftliche Sozialisation. Auf englisch müssen die Sätze einfach kürzer sein und lesen/verstehen sich einfach besser so.\\nLisa-Marie Esselmann: Stimmt, oben fehlen die Kommentare. Generell denke ich ja - allerdings waren dies zum Beispiel Stellen, an denen ich mir nicht ganz sicher war. Meistens waren das aber glaube ich Sätze, welche tendenziell lang sind und sinn-gemäß potenziell unterteilt werden könnten.\\nChristian Boulanger: Herzlichen Dank für die sorgfältige Durchsicht! Die gelben Markierungen heißen: \"hier noch mal Stil prüfen\"?\\nLisa-Marie Esselmann: *würden\\nLisa-Marie Esselmann: Ich habe einfach nur mal kurz drüber geschaut und Annotation re Kleinigkeiten beigefügt. Zum Teil sind das aber wahrscheinlich auch Anmerkungen, die jemanden der an dem Workshop teilnimmt nicht betreffen würde. Es ist wirklich sehr gut zu lesen. Vielen Dank für die Einsichten!\\nLisa-Marie Esselmann: \\nLisa-Marie Esselmann: Ich werde gleich mal schauen! 🙂\\nChristian Boulanger: Nur bei Interesse & Zeit, ist zwar Arbeitszeit, aber kein Arbeitsauftrag :-)\\nChristian Boulanger: \\nChristian Boulanger: Da sind wir die einzigen, die entsprechende Daten haben. Dank Eurer Annotationen!!\\nChristian Boulanger: \\nChristian Boulanger: Hier sind die Daten für die Zeitschrift für Rechtssoziologie:\\nChristian Boulanger: JLS = Journal of Law and Society\\nChristian Boulanger: `a_all` ist die Erkennungsrate von dem von uns verwendeten Algorithmus, WOS ist das Web of Science, eine extrem teure Datenbank mit Zitationsdatenbanken.\\nChristian Boulanger: \\nChristian Boulanger: \\nChristian Boulanger: Das ganze Buch (ist von 2012, also schon etwas veraltet) ist hier: https://doc.lagout.org/science/Artificial%20Intelligence/Machine%20learning/Natural%20Language%20Annotation%20for%20Machine%20Learning_%20A%20Guide%20to%20Corpus-...%20%5BPustejovsky%20%26%20Stubbs%202012-11-04%5D.pdf\\nChristian Boulanger: Der Text bezieht sich vor allem auf die Textkorpusanalyse und nicht auf die Annotation bibliographischer Daten, die einen Spezialfall davon darstellt. Aber man bekommt einen guten Überblick über Begrifflichkeiten und die Prozesse, die auf das annotierte Material aufbauen.\\nChristian Boulanger: Liebe alle, eine gute sehr generelle Einführung in das Gebiet der Annotation for Machine Learning findet ihr hier: https://www.oreilly.com/library/view/natural-language-annotation/9781449332693/ch01.html\\nDaniel Fejzo: Ich wurde eben auf die veranstaltungsreihe zum Einsatz von KI diese Woche aufmerksam gemacht - bei Interesse sicher einen Abstecher wert...\\nDaniel Fejzo: https://www.correlationsforum.de/\\nChristian Boulanger: 3) Issue-Info auch als \"Volume\" annotieren, meistens geht das ja zusammen \"vol 3 (1)\" oder \"Band 5, Nr.  3\"\\nChristian Boulanger: Wir hatten es eben persönlich besprochen, aber nochmal für die Runde: 1) Im Sinne des AnyStyle-Annotationssystems gelten Zeitungen auch als \"Journal\", 2) Unpublizierte Abschlussarbeiten normal mit Autor und Titel und Uni als Publisher markieren und Informationen wie \"Ph.D. Dissertation\" oder \"Master\\'s Thesis\" als \"Note\"\\nLisa-Marie Esselmann: Ah, und (3), es ist zwar ein Label für \"Volume\" da... aber wie sieht es da mit \"Issue\" aus? Das kann ich nicht finden...\\nLisa-Marie Esselmann: Hallo, ich hätte da einmal zwei Fragen: (1) Fällt eine Zeitung (e.g Independent oder The Economist) unter die Kategorie \"Journal\"; und wenn nein, wo finde ich das richtige Label? und (2) wie sieht es mit PhD Theses und Board Meeting Minutes aus?\\nJann-Toralf Maatz: janntoralf.maatz\\nLisa-Marie Esselmann: Okay, super, danke! \\nChristian Boulanger: So, funktioniert wieder.\\nLisa-Marie Esselmann: Das Problem mit dem Annotationsinterface hatte ich leider am Montag schon… ich habe Ordner für die neuen Datein erstellt, und hoffe, dass das so in Ordnung ist. Ich werde auch noch ein paar hochladen, die ich noch auf meinem USB Stick habe.\\nChristian Boulanger: Leider ist das Annotationsinterface im Moment ausgefallen, ich versuche gleich, es wieder herzustellen\\nChristian Boulanger: Es gibt eine neue Gruppe am Institut, die sich mit Digital Humanities und wissenschaftliche IT beschäftigt - falls es Euch interessiert, seid Ihr eingeladen, unter https://chat.gwdg.de/invite/p2rZtz dem Rocket.Chat der Gruppe beizutreten!\\nChristian Boulanger: l.esselmann\\nChristian Boulanger: \\nChristian Boulanger: \\nChristian Boulanger: wir haben jetzt ausreichend Trainingsmaterial! Ich bin gerade dabei, das vorhandene Material für anystyle umzuwandeln. Vielen Dank für die bisherige Arbeit. Eventuell baue ich das Annotationstool noch einmal für AnyStyle um, um weitere Zeitschriften zu annotieren. Aber im Moment arbeiten wir erst einmal mit den vorhandenen Annotationen! Die ersten Ergebnisse mit AnyStyle sind vielversprechend, ich halte Euch auf dem Laufenden.\\nChristian Boulanger: Liebe alle,\\nChristian Boulanger: Liebes Machine-Learning-Team, bevor ich mich in den Urlaub verabschiede, wollte ich noch kurz von den letzten Entwicklungen berichten. Wir haben unsere Ergebnisse zu Extraktion/Segmentation auf einem Workshop vorgestellt, der sehr fruchtbar war - ich erzähle Euch gerne davon, wenn ich im August wieder da bin. Auf jeden Fall ist auf großes Interesse gestoßen, dass wir so viele Textannotationen haben. Diese werden in der Machine Learning community als \"Gold\" bezeichnet, von \"Gold standard\", aber sie sind auch Gold wert, weil so aufwändig in der Herstellung, wie Ihr ja wisst. Insofern sitzen wir auf einem kleinen Schatz :-) . Wir werden mit dem jetzigen Algorithmus nicht weiterkommen, aber ich habe schon einen Nachfolger identifizieren können: https://github.com/inukshuk/anystyle/ - leider in der Programmiersprache Ruby geschrieben, während unser Projekt bisher mit Python gearbeitet hat. Es bleibgt spannend. Ich wünsche Euch jetzt erstmal ein paar schöne Sommertage und freue mich über weitere Annotationen. Herzliche Grüße, Christian\\nDaniel Fejzo: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=ioTnw6QYCDhmfHZjZ) Alles klar, ich lösche sie einfach nochmal\\nChristian Boulanger: Sind schon dort - also lösche ich den \"_Backup\"-Ordner\\nChristian Boulanger: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=ebgrn86zPBDGTRb63) @janntoralf.maatz @fabian.reinold Ich verschiebe mal die Dateien von \"_Backup\" in Eure Ordner.\\nChristian Boulanger: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=XcgGkbzXh4FNeyb72) Lösche dann einfach die auf der obersten Ebene, die Du schon bearbeitet hast.\\nChristian Boulanger: Ich sehe, dass es den Ordner \"_Backup\" auch noch gibt  -  ich denke es ist besser, wir lösen den auf und behalten alle PDFs und Annotationen im selben Ordner. Man kann dann eindeutig sehen, welche PDFs schon bearbeitet sind (dann gibt es die beiden Annotationsdateien) und welche nicht (dann fehlen diese).\\nChristian Boulanger: Lieber Daniel, danke für\\'s genau hinschauen - es kann gut sein, dass mir beim rumschieben Fehler passiert sind und manchmal spinnt OwnCloud auch.\\nDaniel Fejzo: Ich sehe gerade, dass sich auf der obersten Ebene wieder einige Datein finden, die ich eigentlich schon gelöscht hatte, weil sie schon bearbeitet waren. Ist das Absicht oder ist da was schief gegangen? Das Löschen müsste eigentlich funktioniert haben, jedenfalls wurden mir neulich nur die ganz neuen Dateien (u.a. 1988er) angezeigt, die ich dann auch in meinen Ordner verschieben konnte\\nChristian Boulanger: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=biQDasXQuDk4vBtbK) Ich verschiebe sie mal aus dem Backup-Ordner zurück in Eure Ordner, so ist es dann übersichtlicher.\\nChristian Boulanger: Wir sind auf jeden Fall von einer Accuracy von durchschnittlich 0.28 auf 0.35 hoch!\\nChristian Boulanger: Auf jeden Fall aber weiterhin auch immer auf \"Save\" klicken, damit sie auf dem Server abgespeichert sind.\\nChristian Boulanger: Vielleicht ist es dann sinnvoller, die exportierten .csv und .xml Dateien einfach zu den PDF in eurem Ordner abzuspeichern, dann sieht man bei der Dateiauflistung gleich, welche PDFs bereits annotiert sind.\\nChristian Boulanger: Bitte verschiebt Euch weiterhin von der obersten Ebene Dateien in Eure Ordner, wenn ihr Sie bearbeitet, damit es keine Dopplungen gibt.\\nChristian Boulanger: Sollte wieder funktionieren - bitte Bescheid geben wenn nicht.\\nChristian Boulanger: Fabian, das ist ein Code-Fehler ich aktualisiere gleich mal.\\nFabian Reinold: Liebe Alle, bei mir funktioniert in EXCITE die Auto-Segmentation nicht mehr. Der Fehler, der ausgegeben wird, ist: AttributeError: module \\'commands.segmentation\\' has no attribute \\'execute\\'\\nIst das ein Nutzungs-Fehler meinerseits, oder kommt das bei euch auch vor? Wenn ja, schreibe ich einen Fehlerreport im GitHub-Repository vom Projekt.\\nChristian Boulanger: Gar kein Problem - ich schiebe die Sachen einfach in den richtigen Ordner!\\nDaniel Fejzo: Kann man das Modell für die bereits abgespreicherten Datein noch auf \"zfrsoz\" ändern? die meisten meiner dokumente waren noch auf default eingestellt\\nChristian Boulanger: Liebes ML-Team, ich habe eine neue Version der Annotations-App hochgeladen, die vielleicht noch den ein oder anderen Fehler enthält. Wichtig ist es, dass Ihr unter \"Model\" das Modell \"zfrsoz-footnotes\" auswählt (d.h. einmal draufklicken), bevor Ihr Eure Arbeit speichert. Ich kann die Annotationen auch aus den anderen Modellen wieder herausziehen, aber so wäre es einfacher.\\n\\nFür die Auto-Segmentation könnt Ihr ausprobieren, ob das \"zfrsoz-footnotes\"-Modell, was nur mit Euren Annotation trainiert ist, oder das \"combined\"-Modell, das eine Mischung aus \"zfrsoz-footnotes\" und \"default\" ist, besser funktioniert (nach unserem Paper müsste es für die Segmentation das \"combined\" -Modell sein). \\n\\nMan kann jetzt, wenn man ein paar neue Annotationen hinzugefügt hat mit Model -> Evaluate ... sich ausrechnen lassen, wie gut die Erkennung funktioniert - nach einiger Rechenzeit wird die \"accuracy\" für extraction und segmentation angezeigt. Die Extraction accuracy liegt im Moment zwischen 0.26-0.35, was immer noch grausam schlecht ist, aber mit jeder weiteren Annotation müsste es eigentlich ein klein wenig besser werden.\\n\\nWichtig ist noch, dass die Funktionen \"Train ... \" und \"Evaluate ...\" (noch) nicht mehrbenutzerfähig sind, d.h. es darf immer nur einer den Prozess starten (zumindest für dasselbe Modell). Falls Ihr es also ausprobieren möchtet, erst mal hier abstimmen.\\nChristian Boulanger: Das Paper wird auf diesem Workshop vorgestellt: https://exciteproject.github.io/ULITE-ws/ Wir müssen bis 10. Juni das fertiggestellte Paper einreichen, bis dahin wäre es toll, noch möglichst viele Annotationen zu haben, wie es Eure Zeit eben erlaubt.\\nChristian Boulanger: In Tabelle 1 sieht man den derzeitigen \"Accuracy\"-Wert der Erkennung von Literaturangaben in Fußnoten: mit den bisher fertiggestellten Annotationen haben wir eine Verbesserung von 0,02 gegenüber dem Standardmodell erreicht. Das ist schon etwas! Aber insgesamt ist eine accuracy von 0,26 immer noch grottenschlecht. Ich hoffe, dass es nach und nach besser wird, je mehr annotiertes Trainingsmaterial wir haben.\\nChristian Boulanger: Damit Ihr wisst, wozu Ihr die Annotationen macht - zusammen mit einer Programmiererin von der Uni Stuttgart habe ich gerade ein Paper eingereicht, das sich mit der Technologie beschäftigt:  https://owncloud.gwdg.de/index.php/s/yMPXSWkkdS6Ul4C\\nChristian Boulanger: Liebe alle, ich hoffe, Ihr hattet schöne Ostern. Ich wollte mich erkundigen, wie Ihr so mit dem Annotieren vorankommt - wir können bei unserem Treffen dann auch darüber reden, ob es Dinge gibt, die man verbessern könnte, um Euch die Arbeit leichter zu machen.\\nFabian Reinold: Werde ich erledigen!\\nChristian Boulanger: Hast Du ein Konto bei github.com oder kannst Dir eines einrichten? Dann wäre es gut, den Fehler in einem neuen \"Issue\" einzutragen: https://github.com/cboulanger/excite-docker/issues\\nChristian Boulanger: Es ist im Moment nicht so schlimm, weil es ums Training geht und dabei eine Zeile mehr oder weniger nicht ins Gewicht fällt. Aber sobald die Segmentation für die richtige Extraktion benutzt wird, darf das natürlich nicht passieren.\\nChristian Boulanger: Hallo Fabian, danke für den Hinweis! Das ist ganz sicher ein Fehler im Programm, der mir auch schon einmal aufgefallen ist - ich habe damals aber vergessen, die Sache zu verfolgen, und habe die Autosegmentation meist nicht benutzt. Ich werde es der Programmiererin noch einmal melden.\\nFabian Reinold: Bei mir ist gerade bei der Autosegmentierung das Problem aufgetreten, dass die erste Quelle des Dokuments gelöscht wurde. Beim Wechsel von der Identifikation zur Segmentierung wurde sie noch angezeigt. Es ist möglich, sie einfach wieder händisch zu ergänzen, aber falls euch das ebenfalls passiert, könnte das auf ein Problem im Programm hinweisen.\\nChristian Boulanger: Das heißt, man braucht nur so viele Daten für den Abgleich, wie notwendig sind, um die Quelle eindeutig zu identifizieren; d.h. unvollständige Angaben sind dafür meistens völlig ausreichend. Natürlich wird es immer zitierte Literatur geben, die in keiner Datenbank verzeichnet sind, und dann sind auch diese \"Primärdaten\" aus den Fußnoten wichtig. Aber das ist der kleinste Teil.\\nChristian Boulanger: Die spätere tatsächliche Datenextraktion funktioniert auch nicht so, dass die Daten aus den Texten vollständig gebraucht werden, sondern sie dienen als Grundlage für einen Datenabgleich mit anderen, hochwertigen Datenquellen.\\nChristian Boulanger: Ich würde es unmarkiert lassen, da es ein Muster ergibt für andere Literaturangaben.\\nFabian Reinold: Die letzten Erklärungen helfen sehr!\\nTrotzdem bin ich mir gerade unsicher, wie ich mit den Fällen \"Herausgeber:in u.a.\" bzw. \"Vorname Nachname u.a.\" umgehen soll. Wird das \"u.a.\" mit eingeschlossen, oder ausgelassen und ignoriert? Wenn z.B. alle Herausgeber:innen eines Bandes erkannt werden sollen, wäre es ja relevant, das als Hinweis auf die nicht mehr aufgeführten zu inkludieren.\\nChristian Boulanger: Das muss jetzt nicht in jedem Fall zu 100% korrekt durchgeführt werden (sonst werden wir nie fertig), aber so als Faustregel sollte das nützlich sein. Macht das Sinn?\\nChristian Boulanger: (das ist mir jetzt erst eingefallen, hätte ich auch schon früher drauf kommen können) :smiley:\\nChristian Boulanger: Ihr könnt Euch das so vorstellen: wenn man im Segmentationsmodus eine annotierte Literaturangabe anschaut und alle Teile, die mit einem der Annotationsfelder (surname, title etc) durch \"_____\" ersetzt und die durch \"Ignore\" markierten Teile entfernt, sollte man durch Ausfüllen der \"_____\" Felder zu einer korrekten neuen Literaturangabe kommen können.\\nChristian Boulanger: Den Ort, z.B. in \"Baden-Baden, 1982\" bitte mit \"Ignore\" annotieren.\\nChristian Boulanger: ja, zum ML-Training werden beide benötigt. Die CSV-Datei für den Extraktions-Algorithmus, die XML-Datei für den Segmentations-Algorithmus\\nDaniel Fejzo: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=HLGk5z2ba3hxmywXa) Sollen wir dann  sowohl die \".csv\" als auch die \".xms\" Datei als Backup in der Cloud hochladen?\\nChristian Boulanger: Ich muss das noch einmal mit den Excite-Leuten klären, aber ich glaube das Muster ist ja, dass die Literaturangabe NACH Worten wie \"vgl.\" oder \"siehe\" beginnt, d.h. diese Worte, die man bei der Segmentierung ja auch rauswerfen müsste, sind nicht Teil des zu extrahierenden Musters.\\nChristian Boulanger: \"Vgl.\" und \"siehe\" etc. sollen doch nicht mit in die Zitatidentifikation mit eingeschlossen werden.\\nChristian Boulanger: Ich habe gerade meine letzte Nachricht gelöscht und muss mich korrigieren.\\nChristian Boulanger: \\nChristian Boulanger: Wichtig bei der Identifikation: Fußnotenzeichen nicht mit in die Zitatannotation einschließen, sondern nur die Literaturangabe selbst.\\nChristian Boulanger: Die Daten aus dem ersten Schritt sollten aber dann noch da sein (so ist es zumindest programmiert).\\nChristian Boulanger: Falls ihr das erste Abspeichern ausgelassen habt, könnt Ihr aus der Segmentation auch zurück zur Identifikation. Damit verliert ihr die Segmentations-annotation, aber die kann man ja vorher abspeichern.\\nChristian Boulanger: Wichtige Hinweise - Ihr müsst für jede Datei insgesamt zwei Dateien produzieren. Einmal nach dem \"Identification\"/Extraktions-Schritt \"save\" und \"export\" -> das ergibt eine Datei, die auf \".csv\"endet. Dann noch einmal nach der Segmentation, das ergibt eine \".xml\" datei.\\nChristian Boulanger: So bleibt für die Mustererkennung nur noch verschiedene Muster-\"Skelette\" übrig, die gelernt werden und später dann auf neue, noch unbekannte Zeichenketten angewendet werden (das ist dann der \"prediction\"-Teil von Machine Learning).\\nChristian Boulanger: Also: alle austauschbaren Worte/Zeichen, die nicht als sinntragend annotiert werden (z.B. title) und die nicht zu einem wiedekehrenden Muster gehören (wie z.B. auch die Satzzeichen, \"S.\", \"in:\" etc.) sollten \"ignore\"d werden\\nChristian Boulanger: Bei \"Auflage\" gilt wieder: das wort \"Aufl.\" nicht ignorieren, da es ein Muster ist, das wiederkehrt. Die Nummer der Auflage selbst aber ist \"Rauschen\", d.h. sollte ignoriert werden.\\nChristian Boulanger: Die Auflage kann ignoriert werden, Volume ist nur dann relevant, wenn es sich um ein mehrteiliges Werk handelt. Ansonsten ignorieren\\nFabian Reinold: Soll bei Büchern die Auflage unter \"Volume\" oder \"Issue\" erfasst, sie nicht markiert, oder mit \"ignore\" getagget werden?\\nRita Besang: Ja, \"Title\" ist der Titel des Beitrags, Kapitels, Textes, etc., \"Source\" ist der Name des gesamten Buches, der Zeitschrift, der Konferenz, etc., zumindest würde ich das so verstehen.\\nFabian Reinold: Verstehe ich das richtig, dass der Marker \"Source\" immer den Obertitel der Quelle meint und \"Title\" dem untergeordnete, etwa Kapitelüberschriften oder Titel von einzelnen Texten in Zwitschriften/Sammelbänden? Im Readme wird Source noch nicht definiert.\\nChristian Boulanger: Der nächste Schritt ist es, auf den \"Segmentation\" Button zu klicken. Das extrahiert die zuvor \\'identifizierten\\' Literaturangaben in ein neues Dokument, damit man diese dort \\'segmentieren\\' kann.\\nChristian Boulanger: Die Hinweise auf Zotero einfach ignorieren.\\nChristian Boulanger: Hier sind ein paar rudimentäre Hinweise: https://github.com/cboulanger/excite-docker/blob/main/docs/readme.md\\nFabian Reinold: Welche Arbeitsschritte folgen den in EXCITE nach der Identifikation? Das wurde mir bisher noch nicht erklärt.\\nChristian Boulanger: Ihr könnt unschwer erkennen, warum die deutsche juristische/geisteswissenschaftliche Literatur bisher so schlecht bibliometrisch erschlossen ist. Die Zitiergewohnheiten sind für Computer einfach zu irrational.\\nChristian Boulanger: Aber der Extraktionsalgorithmus (=Identification) soll solche Referenzen erkennen können.\\nChristian Boulanger: Wenn es um die spätere automatisierte Extraktion geht, muss eine Lösung noch implementiert werden, d.h. die Extraktion muss \"ebd.\" und ähnliche Tokens durch die vollständige Referenz ersetzen. Das wird nicht einfach. Für das Training der Mustererkennung kann man diese Zeile in der Segmentierung einfach vollständig mit \"Ignore\" annotieren. Eine Zeile Trainingsmaterial mehr oder weniger ist hier egal.\\nChristian Boulanger: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=sfheRcwuNw9fp2CmM) \"B. Kutchinsky, The Legal Consciousness, in: A. Podgorecki u.a., a.a.O. (Anm. 14), S. 122\" als Referenz annotieren. Damit muss man sich dann in der Segmentierung herumschlagen. Das ist noch ein offenes Problem.\\nChristian Boulanger: \\nFabian Reinold: Was mache ich denn, wenn ein neuer Artikel zitiert wird, aber die Fachzeitschrift in der Fußnote nicht vollständig wiedergegeben wird, sondern nur als weitere Referenz zu einer vorangegangenen Fußnote auftaucht?\\nBeispiel: \"B. Kutchinsky, The Legal Consciousness, in: A. Podgorecki u.a., a.a.O. (Anm. 14), S. 122\"\\n(Anmerkung 14: \"Vgl. A. Podgorecki/W Kaupen/J. Van Houtte/P. Vinke/B. Kutchinsky, Knowledge and Opinion\\nabout Law, London 1973\")\\nChristian Boulanger: Na klar! Ich konfrontiere Euch ja mit dieser doch noch sehr halbgaren Software. Bei Gelegenheit kann ich euch noch mehr darüber berichten. Kurz gesagt: wenn etwas nicht funktioniert oder nicht logisch ist, liegt es nicht an Euch, sondern daran, dass alles ziemlich frisch entwickelt ist und kaum getestet werden konnte. Ihr seid also ein Teil der Entwicklung und es soll auch besser werden. Wenn Euch also etwas auffällt oder Ihr Verbesserungsvorschläge habt, bin ich dafür sehr dankbar!\\nFabian Reinold: Wird gemacht. Danke für die Hilfe!\\nChristian Boulanger: Nicht markieren. Der Schritt von Identifikation zur Segmentation sollte dann nur die als vollständige Referenz erkannte Zeichenkette übertragen, damit es keine falschen positiven gibt.\\nFabian Reinold: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=G2Zo6XRhbkJGGLKnL) Sollen Fußnoten mit ebd. oder a.a.O. (Anm. 19) auch identifiziert werden und dann bei der Segmentierung wieder \"ausgeklammert\" werden, oder sollen sie von vornherein nicht markiert werden?\\nChristian Boulanger: Ich habe im Owncloud-Ordner \"neue-pdfs\" einen Ordner \"_Backup\" angelegt. Dorthin könnt ihr dann die fertigen Dokumente, die Ihr über den \"Export\"-Button lokal herunterladen könnt, ablegen.\\nChristian Boulanger: Noch eine Bitte - ich habe überlegt, dass es aus Sicherheitsgründen doch gut wäre, wenn Ihr zusätzlich zum \"Save\"-Klicken eine lokale Kopie der jeweiligen Annotation abspeichert und in den Owncloud-Ordner hochladet. Nur damit nichts verloren geht, falls der Server mal abschmieren sollte.\\nChristian Boulanger: Idealerweise würde es eine Annotation für \"Ebda\" geben, die automatisch die letztgenannte Fundstelle ergänzt. So schlau ist die Software aber noch nicht - kann aber noch kommen!\\nChristian Boulanger: Die zweite Referenz kannst Du weglassen\\nFabian Reinold: Liebe Alle,\\nich bin Fabian, studiere Politische Theorie im Master an der Goethe-Uni, und darf ab heute euer Team als studentische Hilfskraft erweitern. Ich freue mich darauf, mit euch zusammenzuarbeiten und euch kennenzulernen! :slight_smile: \\n\\nTatsächlich kam bei der Arbeit mit EXCITE bereits eine Frage auf, die sich auf den folgenden Text in einer Fußnote bezieht: \"Vgl. Entgegnung E. Blankenburg, Die impli\\xad\\nziten Theorien der KOL-Forschungen, in: Zeitschrift für Rechtssoziologie 2 (1982), S. 291—296, sowie Erwiderung von G. Smaus, ebda.\"\\nDen ersten Teil der Fußnote (\"Vgl. [...] 296\") markiere ich bei der Identifikation einfach als Referenz. Wie verfahre ich aber mit dem letzten Teil (\"sowie Erwiderung von G. Smaus, ebda\")? Markiere ich den einfach als eigenständige Referenz? Ein Großteil der bibliographischen Informationen befindet sich dann ja nicht im markierten Element selbst.\\nChristian Boulanger: Ergänzend muss es wohl heißen \"Alles, **was kein annotiertes Feld ist** und die Mustererkennung stören könnte und \"zufällig\", d.h. nicht regelmäßig wiederkehrend ist, mit \"Ignore\" markieren (z.B. Ortsangaben, eingefügte Kommentare, quellenspezifische Ergänzungen etc.).\"\\nChristian Boulanger: So verstehe ich zumindest die Sache (ich bin selbst ein Machine-Learning-Anfänger, werde aber im Mai einen Kurs machen)\\nJann-Toralf Maatz: :thumbsup:\\nChristian Boulanger: [ ](https://chat.gwdg.de/group/Machine-Learning-Team?msg=sD4JCBFHn8deToZcq) Hier ein paar Infos zu dieser Frage.\\nJann-Toralf Maatz: Angegebene Orte nicht markieren oder mit \"Ignore\" markieren?\\nJann-Toralf Maatz: Das leuchtet ein. Danke\\nChristian Boulanger: Die Annotation dient dazu, die Mustererkennung auf die vollständige (d.h in den meisten Fällen höchst invollständige!!) Literaturangabe zu trainieren. Im Prinzip könnte man dann auch schauen, wie oft, oder auf welchen Seiten die Nennung erfolgt, aber das brauchen wir im Moment nicht, und das KI-Modell unterstützt es auch nicht.\\nChristian Boulanger: @janntoralf.maatz  Weder das Programm noch die Annotationsregeln sind intuitiv und/oder ausreichend dokumentiert, deswegen bitte immer alles sofort fragen, ich antworte gerne!\\nNur das annotieren, was die eigentliche Literaturangabe ist, spätere Verweise darauf nicht mehr annotieren.\\nJann-Toralf Maatz: Verzeih bitte: Werden sämtliche Fußnoten extrahiert, sprich auch \"Vgl. ebenda\" oder nur solche, die tatsächlich annontiert werden können?\\nRita Besang: Hier noch einmal für alle der Link zum Programm vm-130-183-217-167.cloud.mpcdf.mpg.de\\nEXCITE Citation Identification and Segmentation\\nChristian Boulanger: Liebe alle, Jann hat mich darauf aufmerksam gemacht, dass man beim öffnen der Seite aufgefordert wird, zwei Zotero-Plugins zu installieren - das ist nicht notwendig und funktioniert zurzeit auch nicht, weil diese mit der neuesten Version von Zotero gar nicht kompatibel sind. Die Plugins werden nur gebraucht, wenn aus der Anwendung Daten nach Zotero exportiert werden sollen.\\nRita Besang: Danke!\\nChristian Boulanger: rita.besang\\nChristian Boulanger: fabian.reinold\\nRita Besang: Der Owncloud-Ordner ist für euch alle freigeschaltet.\\nDaniel Fejzo: Auch von meiner Seite aus klingt das gut, vielen Dank!\\nChristian Boulanger: Ersteres ist dann praktisch, wenn ihr die OwnCloud dazu nutzen möchtet, bearbeitete Zwischenstände der Identifikation/Segmentation bei den PDFs abzuspeichern (über den Export-Button)\\nChristian Boulanger: Das heißt, es geht auch einfacher über den öffentlichen Link: https://owncloud.gwdg.de/index.php/s/IDZ0j6ONvIwzcAB\\nChristian Boulanger: Zugangsdaten sind die selben wie beim Rocket.Chat.\\nChristian Boulanger: Falls Ihr die OwnCloud noch nicht benutzt habt, ist es notwendig, dass Ihr Euch unter https://owncloud.gwdg.de zunächst einmal einloggt. Dann seid ihr im System registriert und wir können den Ordner mit den PDFs mit Euch teilen.\\nJann-Toralf Maatz: ohne die Sache vollends zu überblicken, klingt das gut. ich fange ab morgen an. :)\\nJann-Toralf Maatz: Hallo Rita,\\nRita Besang: Hallo Zusammen, ich habe mal im entsprechenden Ordner auf der Owncloud Unterordner für jeden von uns angelegt und die Dokumente bis auf das von Daniel bearbeitete verteilt. Vorschlag: Jeder arbeitet nur an den Dokumenten im eigenen Ordner, ich verteile von Christian neu hinzugefügte Dokumente auf die Ordner. Wer mit seinem Ordner durch ist und Kapazitäten hat meldet sich bei mir. So vermeiden wir, dass Dokumente doppelt oder gar nicht bearbeitet werden. Wärt ihr einverstanden?\\nDaniel Fejzo: Alles klar!\\nChristian Boulanger: -> In der \"Segmentation\"-Ansicht ist jede Angabe nur einmal genannt.\\nChristian Boulanger: D.h. in deinem Fall Haug 1973 nur in Fußnote 11 annotieren, danach nicht mehr.\\nChristian Boulanger: Wichtige Frage, die ich schon hätte ansprechen sollen: Wenn die Literaturangabe schon in Fußnote 11 vollständig genannt wird, müssen alle folgenden Referenzen nicht mehr annotiert werden. Das heißt, dass es nur darum geht, die zitierte Literatur zu extrahieren, nicht die Information, an welcher Stelle sie (noch) zitiert wird.\\nDaniel Fejzo: Ich hätte auch gleich eine Frage: Gibt es Besonderheiten, die ich bei Zitaten in verkürzter Schreibweise zB \"Haug (1973) (Anm. 11), 64-70\" beachten soll?\\nDaniel Fejzo: ja, hab ich! Ich arbeite gerad an dem Text \"Die Wahrnehmung gebündelter Interessen im Zivilprozeß\" (bzw. das Dokument: 10.1515_zfrs-1982-0202)\\nChristian Boulanger: Wichtig ist auch - Bei herausgegebenen Werken sind die Herausgeber einzeln mit \"Editor\" zu markieren (am Anfang der Literaturangabe bei Büchern und in der Mitte wenn es sich um ein Kapitel in einem Sammelband handelt). Hier gibt es keine Vor- und Nachnamen.\\nChristian Boulanger: Bei Zweifelsfällen einfach hier nachfragen.\\nChristian Boulanger: Eine weitere wichtige Frage betrifft, was nicht markiert und was mit \"Ignore\" markiert werden soll. Hier ist die Regel: alles, was der Mustererkennung dient, was also regelmäßig an dem jeweiligen Platz in der Literaturangabe immer wieder auftaucht (\"(Hrsg.)\", \"hg. von\", \"in:\", \"S.\", \"p.\", \"Bd.\", ...) NICHT markieren. Alles, was die Mustererkennung stören könnte und \"zufällig\", d.h. nicht regelmäßig wiederkehrend ist, mit \"Ignore\" markieren (z.B. Ortsangaben, eingefügte Kommentare, quellenspezifische Ergänzungen etc.).\\nChristian Boulanger: \\nChristian Boulanger: Wenn Ihr Fragen habt, bitte jederzeit hier stellen. Z.B. kam eben die Frage auf, was man mit Literaturangaben machen soll, die über zwei Seiten gehen. Diese auslassen, weil es im Moment noch keine Möglichkeit gibt, das zu annotieren.\\nChristian Boulanger: @daniel.fejzo Du hast ja vielleicht schon angefangen - sag uns, an welchen Dokumenten du schon arbeitest.\\nChristian Boulanger: Sie wird für jeden einen Unterordner einrichten und kann dann jeweils ein paar Dokumente reinziehen - ihr könnt dann Bescheid geben, wenn Ihr \"durch\" seid.\\nChristian Boulanger: Um mit dem Projekt voranzukommen, brauchen wir eine Menge Trainingsmaterial. Ich teile mit allen über OwnCloud einen Ordner. Der enthält den Ordner \"Neue Pdfs\" mit - wie der Name sagt - PDFs enthält, deren Inhalt wie besprochen annotiert werden sollen. Ich habe Frau Besang gebeten, das ganze zu koordinieren, damit nicht zwei Leute an den selben Dokumenten arbeiten.\\nChristian Boulanger: Liebe alle, willkommen im neuen Kanal \"Machine-Learning-Team\". Hier geht es darum, dass wir dem Computer beibringen wollen, wie er aus rechtssoziologischer, rechtstheoretischer und juristischer Literatur die Literaturangaben aus den Fußnoten extrahiert. Das können die derzeitigen Machine-Learning-Modelle nämlich noch nicht (gut), deswegen machen wir da etwas ziemlich innovatives.\\nChristian Boulanger: janntoralf.maatz\\nChristian Boulanger: daniel.fejzo\\nChristian Boulanger: rita.besang'"
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "\n",
-    "msgs = call_rocket_chat_api('channels.history', roomId='sibAdkwHQzqJChxH9').get('messages')"
+    "msgs = call_rocket_chat_api('groups.history', roomId='sibAdkwHQzqJChxH9').get('messages')\n",
+    "msgs.reverse()\n",
+    "len(msgs)\n",
+    "\n"
    ],
    "metadata": {
     "collapsed": false,
     "ExecuteTime": {
-     "end_time": "2024-01-15T09:15:37.298747900Z",
-     "start_time": "2024-01-15T09:15:36.819053300Z"
+     "end_time": "2024-01-23T16:49:08.755014900Z",
+     "start_time": "2024-01-23T16:49:08.410043100Z"
     }
    },
    "id": "709f6d8c845a0056"