Wie erstellt man eine Ki, die Beleidigungen erkennt?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Eine einfache Methode wäre indem du z.B. die API von OpenAi verwendest (ChatGPT). Der Prompt den du dann nutzt wäre z.B.

Instructions: Bewerte folgenden Text (nach TEXT:) ob er beleidigende, rassistische oder antisemitische Inhalte oder Vorurteile enthält. Formatiere deine Antwort als JSOn mit folgender Beispielsstruktur
{
verdict: VERTICT,
justification: JUSTIFICATION 
}
wobei VERICT entweder "true" oder "false" ist und JUSTIFICATION eine kurze Begründung der Bewertung.

TEXT:Dein Text 

Beispiel

TEXT:Alles Schotten sind geizig

Antwort:

{
"verdict": "true",
"justification": "Der Text enthält ein rassistisches Stereotyp über Schotten, indem behauptet wird, dass sie alle geizig seien."
}

Beispiel:

TEXT:Emma mag Sonnenblumen.

Antwort:

{
"verdict": "false",
"justification": "Der Text enthält keine beleidigenden, rassistischen oder antisemitischen Inhalte oder Vorurteile. Es ist eine neutrale Aussage über die Vorliebe von Emma für Sonnenblumen."
}

Woher ich das weiß:Berufserfahrung – Erfahrung mit Einsatz von KI in der Softwareentwicklung

Wenn du es dir einfach machen willst ne Liste mit verbotenen Wörtern.

ABER das kann je nachdem was geschrieben wird auch viel durchlassen oder zu viel Zensieren.

Nehmen wir das Wort Affe.

Keine Beleidigung.

"Du Affe" wäre aber aber schon eine.

Nimmt man jetzt Affe in Kombination mit Du schreibt der Kreative halt "Sie Affe" und du filterst dinge raus die keine Beleidung sind wie z.b. "Und du Affe gehst zurück zu deienn Leuten sagte sie dem Gorilla." Enthält zwar "du Affe" aber eben keine Beleidigung.

Solche späßchen zu unterscheiden dürfte halt die richtige Schwierigkeit sein.

Intention der Sprache ermitteln.

Dieser ganze Beitrag hier wäre angekreidet worden wenn Affe oder "du Affe" auf einer GF Liste für Beleidigungen stehen würde.

Fuchsling  08.04.2024, 13:01

Lustig. Ich musste den Affen-Satz drei Mal lesen, um den Sinn zu erkennen. Mit dem Verkümmern der deutschen Grammatik im Hinterkopf, da stimme ich dir doch glatt zu - Ganz schön schwierig, die Intention der Sprache zu ermitteln. "Und du, Affe, gehst zurück zu deinen Leuten.." ;)

0
dieLuka  08.04.2024, 13:38
@Fuchsling

Eben, wobei ich hier absichtlich auch noch auf " " verzichtet habe weil die Schachtelung (mit den " " die ich für Beispiele verwende) das sonst nicht besser verständlich macht.

Und im Falle von absichtlicher Beleidigung wird ja ggf auch absichtlich interesannt formuliert wenn man weiß das man damit um Kontrollen drumherrum kommt.

Welche AI findet die Beleidigung in "Es tut mir leid das du den Schulunterricht verschlafen hast" ?

Der Satz kann 1 zu 1 im einen Kontext ok und im nächsten eine Beleidigung sein.

Das könnte schwierig werden für den Fragesteller.

1

Eine KI weiß nicht welche Worte beleidigend sind oder in welcher zusammensetzung diese es werden. Einer KI beizubringen was man duldet oder nicht, ist wesentlich schwieriger als in einem kleinen RegEx Wortlisten zu definieren und dieses über einen Text laufen zu lassen.

Edit: Ok, MonkeyKing's Prompt belehrt mich eines Bessern....😎

Ob man wirklich alles durch ChatGPT schleusen sollte bleine mal dahingestellt.

Einen Text zu zensieren hat unsereins als (Foren)Admin relativ simpel gelöst. Dazu muss man nicht mal wissen was sich ein Autor einfallen lässt um etwas zu kombinieren. man muss lediglich im Regex definieren was nicht gestattetet sein soll.

für die Beispiele verwende ich Powershell weil's sich damit am bequemsten (auf Windows-Rechnern) testen lässt.

Man muss nicht zig verschiedene Ausführungen eines Suchbegriffs definieren. Es genügt völlig ein RegExPattern zu definieren, welches alle (gewünschten)Varianten eines Begriffs "umschreibt"

Um sohn , s0hn , s*hn zu definieren genügt s[o0\*]hn

$Pattern = 's[o0\*]hn' 
'sehn sohn s*hn sahn  s0hn' -replace $Pattern,'[WEG]'
#ergebnis: sehn [WEG] [WEG] sahn  [WEG]

das gehz natürlich auch mit wesentlich komplexeren Pattern und völlig unbekannten Texten. (den Text habe ich bewusst gewählt, weil sich in dem Gemüse die "PseudoSchimpfworte" kaum per Auge entdecken lassen.

aber das kleine Pattern '\b(Katz|Hund|Pferd)[en]*(s[o0\*]hn|tochter|kind)\b' definiert 81 verschiedenen Wortkombinationen....

$Text = 'Veggies Katze es bonus vobis, proinde vos postulo essum magis kohlrabi Pferdnes*hn welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.
Turnip greens yarrow ricebean Pferd rutabaga endive Hundesohn cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon napa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel .
Soko Tochter radicchio bunya nuts gram dulse silver beet parsnip napa cabbage Pferdetochter lotus root sea lettuce brussels sprout cabbage. Catsear cauliflower garbanzo yarrow salsify chicory garlic bell pepper napa cabbage lettuce tomato kale arugula melon sierra leone bologi rutabaga tigernut.
Beetroot water Sohn spinach okra water chestnut Katzs0hn ricebean pea catsear courgette Pferdekind summer purslane. Water spinach arugula pea Sohn tatsoi aubergine spring onion bush tomato kale radicchio turnip chicory salsify pea sprouts fava bean. Dandelion zucchini burdock Kind yarrow chickpea dandelion sorrel courgette Hundkind turnip greens tigernut soybean radish artichoke wattle seed endive groundnut broccoli arugula.
'

#mal das Pattern auf meherere Teilstrings/-abschnitte zerlegt (damit  iichs   besser kommentieren kann
$Pattern = @(
  '\b' #Wortgrenze
  '(' #beginn Matchgruppe 1
   'Katz|' #Liste 1.Wortteile jeweils als "Oder-Altanative" 
   'Hund|'
   'Pferd'
  ')' #ende Gruppe 1
  '[en]*' #Zeichen e oder n ,kein oder mehrere in beliebiger Abfolge
  '(' #beginn gruppe 2
   's[o0\*]hn|' #sohn s0hn s*hn
   'tochter|'
   'kind'
  ')' #ende Gruppe 2
  '\b'
) -join '' #zu einen Einzelstring zusammenfügen


#so sieht das eigentliche Pattern dann aus: '\b(Katz|Hund|Pferd)[en]*(s[o0\*]hn|tochter|kind)\b'
Write-Host $Pattern -fo green #mal anzeigen

$Text -replace $Pattern,'[ZENSIERT]'
pause

Ich wollte das Forum jetzt nicht selbst mit Schimpfworten fluten, also habe ich ein Paar Tiere, Söhne, Töchter unter den Gemüsetext gemischt. Das RegEx-Pattern : '\b(Katz|Hund|Pferd)[en]*(s[o0\*]hn|tochter|kind)\b' lässt einzelne Tiere ,Sohn Tochter in Ruhe, zensiert jedoch Zusammensetzungen der beiden Wortgruppen.... Katzs0hn, Hundesohn, Pfednes*hn, Pferdekind.

Natürlich kann man statt einer riesigen Wortliste auch eine Liste von RegEx-Pattern anlegen, welche ganze Gruppen von zu filternden Begriffen definieren.

RegEx gibts in nahezu allen modernen Sprachen. Ergo auch in Python. https://www.w3schools.com/python/python_regex.asp .

import re
result = re.sub(Pattern, "Replcement", Textvar)

Um das zu erreichen, muss man erst einmal jede Menge Beleidigungen, antirassistische Äußerungen etc. etc. zusammentragen. Tolles Projekt.

GamerCrew 
Fragesteller
 08.04.2024, 11:59

Grundsätzlich wäre sowas aber möglich ?

0

eine Liste erstellen mit Wörtern, die gefiltert werden sollen, dann die Wörter aus der Liste in den Strings deiner Wörter suchen und ersetzen oder was auch immer du machen möchtest, wenn ein gesperrtes Wort auftaucht. Keine große Sache. Gibt auch bereits fertige Listen zum download.

Woher ich das weiß:Berufserfahrung – Backend Developer
GamerCrew 
Fragesteller
 08.04.2024, 12:06

Aber ich will ja auch, wenn jemand zb. hureens*hn schreibt, das es erkannt wird

0
Ginpanse  08.04.2024, 12:14
@GamerCrew

dann packst du dieses Wort mit allen Kombinationen so auch in deine Liste. ganz einfach. wie gesagt am besten ne fertige Liste runterladen.

0