Annotator und englisches Lexikon

Joew0815

Bekanntes Mitglied
Guten Abend,

ich habe ein kleines Problem.

Ich habe einen Annotator implementiert, der einen Satz tokenisieren soll und anschließend eine Lemmatisierung und POS-Tagging durchführt.

Konkret ausgedrückt geht es darum, dass ein Satz in seine Einzelteile zerlegt wird (tokenizer).
Dann folgt eine Lemmatisierung, was bedeutet, dass einzelne Wörter auf ihre jeweilige grundform zurückgeführt werden und dann die genaue Wortart bestimmt wird.

Beispiel Eingabe:

<s>Did Robin kill him at 9 o'clock?</s>

Die Ausgabe soll lauten:

Java:
<?xml version="1.0" encoding="UTF-8"?>
<s>
  <w lemma="do" type="V">Did</w>
  <c type="UNK" />
  <w lemma="robin" type="N">Robin</w>
  <c type="UNK" />
  <w lemma="kill" type="N">kill</w>
  <c type="UNK" />
  <c type="UNK">him</c>
  <c type="UNK" />
  <w lemma="at" type="N">at</w>
  <c type="UNK" />
  <c type="NUM">9</c>
  <c type="UNK" />
  <w lemma="o" type="N">o</w>
  <c type="UNK" />
  <w lemma="clock" type="N">clock</w>
  <c type="$.">?</c>
  <c type="UNK" />
</s>

Folgende Liste soll verdeutlichen, was die Buchstaben bedeuten:

Nomen = N
Verb = V
Adjektiv = ADJ
Zahl = NUM
Adverb = ADV
unb. Wort = UNK
Sonstiges = $,
Satzende = $.

Schaut man sich die Ausgabe allerdings genauer an, fällt auf, dass z.B "kill" als N ausgezeichnet wird, also ein Nomen ist. das ist aber falsch wie wir wissen. Die Annotator arbeitet auf Grundlage eines englischen Lexikons, die vom Annotator durchlaufen wird. Wir haben eine ganze Liste von Wörtern, die sowohl Nomen als auch Verb sein können.

Meine Frage:
Wie teile ich dem Annotator mit, dass er das richtige Wort mit der richtigen Wortart heraussucht?
 

Joew0815

Bekanntes Mitglied
Vielleicht klingt das alles etwas kompliziert.

ich mache es einfacher:

Mein Annotator soll ein englisches Lexikon (Textdatei) durchgehen und auf bestimmte Wörter zugreifen.
Das problem ist, dass in diesem englischen Lexikon Wörter vorkommen, die von der Wortart her sowohl Nomen als auch ein Verb sein können.

beispielsweise das Wort "kill"

als Verb: töten
als Nomen: die Tötung

nun sind die Einträge alphabetisch (auf die Wortarten bezogen) sortiert, was bedeutet, dass zuerst alle möglichen Nomen aufgelistet werden und dann die Verben kommen.

nun soll ein übergebner englischer satz annotiert werden:

Java:
<s>Did Peter kill him?</s>

Hier ist das kill ein Verb, der Annotator versteht es jedoch als Nomen!!!

Java:
<?xml version="1.0" encoding="UTF-8"?>
<s>
  <w lemma="do" type="V">Did</w>
  <c type="UNK" />
  <w lemma="peter" type="N">Peter</w>
  <c type="UNK" />
  <w lemma="kill" type="N">kill</w>   <--
  <c type="UNK" />
  <c type="UNK">him</c>
  <c type="$.">?</c>
  <c type="UNK" />
</s>

frage: wie implementiere ich es, dass der annotator das richtige wort mit der richtigen wortart nimmt?
 
T

tröööt

Gast
kleine englisch nachhilfe : "him" ist eine form von "be" und ein sog. HILFSverb ... das kann man so nicht direkt mit der deutschen grammatik vergleichen ..
 

JCODA

Top Contributor
Das lässt sich vielleicht nicht für jedes Verb=Nomen-Wort sagen, aber vielleicht könntest du den reflexiven Teil des Prädikats (in deinem Beispielsatz: "Did") irgendwie von einem normalen Verb unterscheiden. Da ein Satz immer mind. ein Vollverb benötigt muss kill das Verb sein und kann kein Nomen sein. Müsste man zusätzlich vielleicht auch noch "modal verbs" vs normalen Verben unterschieden? Das überlass' ich dir ... :)

[EDIT]Ahhh, okay,
Auxiliary verb - Wikipedia, the free encyclopedia
Die solltest du getrennt behandeln, hier sind "Do", sowie die modal verbs und weitere drinnen.
[/EDIT]
 
Zuletzt bearbeitet:

Joew0815

Bekanntes Mitglied
Das Problem ist aber, dass kill IMMER als Nomen ausgegeben wird, egal welche Satzkonstruktion ich wähle.
Die Wörter stehen alle im Lexikon, das ist nicht das problem, die werden ohnehin gefunden, aber die Wortart ist eben die falsche.

Wie kann ich dem Annotator "mitteilen", dass er das Wort mit der richtigen Wortart aus dem Lexikon nehmen soll?
 
T

tröööt

Gast
him ist doch kein Verb, wie soll es dann eine form von be sein?

die frage ergibt doch in sich schon gar keinen sinn ... denn es hängt nicht davon ab ob "him" ein verb ist nur damit es eine form von "be" sein kann ... oder waren die finger schneller als das hirn als du den mist geschrieben hast ?

grundsätzlich ist "him" aber eine form von "be" ... und zwar 3te person singular männlich ... daran ist nichts zu rütteln ...

und ich weis zwar nicht wie es aktuelle ist und was dein bildungsstand ist .. aber zumindest wurde mir vor einigen jahren von 4 verschiedenen lehrern beigebracht das "be" im ENGLISCHEN genau so ein hilfsverb ist we do , have und can ...

das es im deutschen keinen sinn macht das "sein" ein verb sein soll ist richtig ... aber wie ich schrieb : du kannst deutsch und englisch in solchen punkten nicht direkt mit ein ander vergleichen ... es gibt im englischen nun mal andere regeln ... genau so wie es im deutschen z.b. auch keine sog. hilfsverben gibt ...

frag am besten noch mal sowohl deinen deutsch als auch deinen englisch lehrer ... die können dir das etwas besser erklären als ich ... fakt ist aber : "him" kannst du nicht einfach als "unknown" abstempeln ...
und auch deine "liste" ist nicht komplett da mindestens hilfverb und zeitangaben fehlen ... denn diese sind im englischen auch keine adverbial bestimmungen wie im deutschen ...

so wäre z.b. "9 o'clock" als EIN term anzusehen ... nämlich als "zeitangabe" ... und diese haben im englischen satzbau eine feste regelung : sie dürfen entweder nur am satz-anfang als erster term oder am satz-end als letzter term stehen ...

ich hab lange gebraucht bis ich den englischen satzbau verstanden hatte ... gut 2 jahre ... aber irgendwann hatte ich es halt drauf ... und wollte dir desshalb nur mal so diesen kleinen "hinweis" geben ...
 
T

tröööt

Gast
Das Problem ist aber, dass kill IMMER als Nomen ausgegeben wird, egal welche Satzkonstruktion ich wähle.
Die Wörter stehen alle im Lexikon, das ist nicht das problem, die werden ohnehin gefunden, aber die Wortart ist eben die falsche.

Wie kann ich dem Annotator "mitteilen", dass er das Wort mit der richtigen Wortart aus dem Lexikon nehmen soll?

tja ... genau DAS ist eben die "kunst" bei "künstlicher intiligenz" ... für einen menschen ist es einfach den kontext zu verstehen ... aber ein rechner braucht dafür mit unter mehrere hunderte beispiel-sätze als vergleich ...
 

Joew0815

Bekanntes Mitglied
dann ist die Sache doch komplexer als vorher angenommen.

der fehler liegt dann nicht am annotator sondern an der deiner meinung nach unvollständigen liste, die die genaue unterscheidung nicht hergibt?
 

JCODA

Top Contributor
grundsätzlich ist "him" aber eine form von "be" ... und zwar 3te person singular männlich ... daran ist nichts zu rütteln ...

NEIN!
Be, 3te pers. Sing ist "is".

Him ist und bleibt ein Personalpronomen. Und niemals eine Form von "be" -.-
wie es im deutschen z.b. auch keine sog. hilfsverben gibt ..
Ehrlich?
Hilfsverb ? Wikipedia

frag am besten noch mal sowohl deinen deutsch als auch deinen englisch lehrer ... die können dir das etwas besser erklären als ich
Das stimmt. Weil deine Erklärung FALSCH ist.

Hierzu tröö...ööt schau dir mal diese Folge von Dr. allwissend an.
 

Joew0815

Bekanntes Mitglied
ihr schweift ab und tröööööööööööööööööööööööööööööööööööööööööt, deine beiträge helfen mir überhaupt nicht.
was soll ich damit anfangen, dass him eine SEHR stark gebeugte form von "be" sein soll, wobei ich diesen punkt immer noch nicht teile.
 
T

trööt

Gast
ich weise dich darauf hin weil es für den KONTEXT des satzes wichtig ist ... und man nur wenn man jeden term richtig erkennt auch eine richtige aussage erhält ...

wenn du also "him" schlicht ignorierst anstatt darauf einzugehen das es "kill" in den zusammenhang einer ausgeführten tätigkeit , also eines verbs , setzt ... KANNST du "kill" nun mal auch nicht als solches richtig erkennen ...

das ist es was ich mit "kunst" meinte : für einen menschen ist es einfach den sinn hinter dem satz zu erkennen ... nämlich das irgendwer irgendwen umbringt und damit "kill" als nomen zu "(to) kill" als verb wird ... und so lange du DAS nicht richtig packst den SINN des satzes richtig zu kennen ... und das geht nun mal nicht wenn du worte schlicht als "unbekannter type" abtust oder zeit-angaben völlig aus ein ander reist ...

ich dreh es mal um : frag dein programm doch mal WANN es passiert ist ... ein mensch kann darauf antworten : 9 o'clock ... dein programm allerdings nicht weil du "9 o'clock" nicht als zusammenhängede zeitangabe erkannt hast ...

und DAS ist dein problem und der grund für die falsche ausgabe ...

eine sprache ist halt doch ETWAS komplexer als die syntax einer prgrammiersprache
 

Joew0815

Bekanntes Mitglied
das ist mein problem. darum geht es ja.

diese aufgabe ist zugegebnermaßen ein kleiner ausschnit aus dem gesamten aufgabenkontext!

ich müsste nun sehr weit rausholen, um euch alles, was damit zusammenhängt, zu erklären.

anders gefragt:

ich kann euch den quellcode vom annotator geben, der für die lemmatisierung, pos tagging zuständig ist.

würde euch das helfen?
 
G

Gast2

Gast
[OT]"him" = ihm || Bsp.: "We go to him" -> Wir gehen zu IHM
"(to) be" -> sein || Bsp.: "What should it be?" -> Was sollte es sein
Ich weiß nicht wie du darauf kommst, das him (ein PRONOMEN) von be (ein VERB) kommen soll :autsch:[/OT]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Lexikon Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben