Endungen von Verben entfernen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

Hallo ich möchte folgende Funktion erweitern, sodass die Endungen "ing" und "d" nur von den Wortarten VBG, VBN und VBD entfernt werden. Ich habe den Text vorher getagged und möchte nun diese Funktion anwenden, kann mir da jemand vielleicht behilflich sein? Denn die Funktion entfernt von allen Wortarten die genannten Endungen.

def stem(word):
regular = r'^(.*?)(ing|d)?$'
stem, suffix = re.findall(regular, word)[0],
return stem



LG
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

lies' dein Posting doch mal und tu' so, als hättest du keine Ahnung, was du vorher gemacht hast. Wahrscheinliches Ergebnis: dein Posting ist völlig unverständlich.

Was ist den z.B. VBG? Wenn ich im Netz nach VBG suche, bekomme ich bei Google erstmal Treffer zu Berugsgenossenschaften. Bei der Suche nach "Wortart VBG" bekomme ich ein ziemlich lustiges Wort, nämlich "vertikale bandverstärkte Gastroplastik" - meinst du aber bestimmt nicht.

Und was heißt "Ich habe den Text vorher getagged"? Ein Beispiel wäre nett.

Und wird dann nach dem "taggen" bei `def stem(word):` für `word` wirklich nur ein Wort übergeben oder Wort plus Tag?

Gruß, noisefloor
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Du weißt, dass es zu deinem Bereich Literatur gibt!? Ich kenne wenigstens ein Buch dem Namen nach und weiß, unter welchem Stichwort dein Post läuft. Mich wundert, dass es dazu dann keine Musterlösung geben soll.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

noisefloor hat geschrieben:Hallo,
Was ist den z.B. VBG? Wenn ich im Netz nach VBG suche, bekomme ich bei Google erstmal Treffer zu Berugsgenossenschaften. Bei der Suche nach "Wortart VBG" bekomme ich ein ziemlich lustiges Wort, nämlich "vertikale bandverstärkte Gastroplastik" - meinst du aber bestimmt nicht.

Und was heißt "Ich habe den Text vorher getagged"? Ein Beispiel wäre nett.
@Noisefloor:
Was er meint, sind denke ich Part-of-Speech-Tags und getaggt heißt in dem Kontext dann, dass die Elemente eines Textes automatisiert mit Wortarten annotiert worden sind. Es ist üblich dabei mit Abkürzungen zu arbeiten ('Tagset' wäre hier der Suchbegriff); VBG, VBD und VBN entstammen vmtl. dem Penn-Tree-Bank Tagset und stehen für Gerundium, Vergangenheits- bzw Partizipialform.

@merve28:
Gibt es einen Grund, weshalb du das selbst machst und nicht einen Stemmer verwendest, bzw. einen solchen Algorithmus implementierst?
Ansonsten hat noisefloor ja schon die wesentliche Frage gestellt. Die Wortarteninformation muss innerhalb der Funktion verfügbar sein und lässt sich dann leicht abfragen.
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

Ja es geht um Part-of-Speech-Tags.
Zuletzt geändert von merve28 am Mittwoch 16. März 2016, 20:20, insgesamt 1-mal geändert.
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

pixewakb hat geschrieben:Du weißt, dass es zu deinem Bereich Literatur gibt!? Ich kenne wenigstens ein Buch dem Namen nach und weiß, unter welchem Stichwort dein Post läuft. Mich wundert, dass es dazu dann keine Musterlösung geben soll.
Kannst du auch mal den Titel des Buchs nennen?
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

nezzcarth hat geschrieben:
noisefloor hat geschrieben:Hallo,
Was ist den z.B. VBG? Wenn ich im Netz nach VBG suche, bekomme ich bei Google erstmal Treffer zu Berugsgenossenschaften. Bei der Suche nach "Wortart VBG" bekomme ich ein ziemlich lustiges Wort, nämlich "vertikale bandverstärkte Gastroplastik" - meinst du aber bestimmt nicht.

Und was heißt "Ich habe den Text vorher getagged"? Ein Beispiel wäre nett.
@Noisefloor:
Was er meint, sind denke ich Part-of-Speech-Tags und getaggt heißt in dem Kontext dann, dass die Elemente eines Textes automatisiert mit Wortarten annotiert worden sind. Es ist üblich dabei mit Abkürzungen zu arbeiten ('Tagset' wäre hier der Suchbegriff); VBG, VBD und VBN entstammen vmtl. dem Penn-Tree-Bank Tagset und stehen für Gerundium, Vergangenheits- bzw Partizipialform.

@merve28:
Gibt es einen Grund, weshalb du das selbst machst und nicht einen Stemmer verwendest, bzw. einen solchen Algorithmus implementierst?
Ansonsten hat noisefloor ja schon die wesentliche Frage gestellt. Die Wortarteninformation muss innerhalb der Funktion verfügbar sein und lässt sich dann leicht abfragen.

Ja es geht um Part-of-Speech-Tags.

Der Grund warum ich das mache ist, dass der PorterStemmer und der LancasterStemmer nicht gut genug sind, dass bedeutet, dass sie vor allem bei Verben die Endung "ing" stehen lassen und ich muss als Zwischenschritt in einem Projekt an der Uni entfernen (ich bin Anfänger, was programmieren und Python angeht). Ich weiß halt nicht, was ich in der Funktion ergänzen muss, sodass die Endungen von den Verben (also von VBG, VBN und VBD laut POS-Tag) entfernt werden.
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

merve28 hat geschrieben: Ich weiß halt nicht, was ich in der Funktion ergänzen muss, sodass die Endungen von den Verben (also von VBG, VBN und VBD laut POS-Tag) entfernt werden.
Na ja, Noisefloor hatte doch schon die wesentliche Frage dazu gestellt: In welcher Form liegt das Wortarten-Tag vor? Ist der Parameter "word" ein String, oder z.B. ein (named)tuple, o.ä.? Die Wortarten-Information muss halt innerhalb der Funktion zugänglich sein.

Übrigens: Ein Lemmatisierer hilft dir nicht weiter?
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Steven Bird, Ewan Klein und Edward Loper: Natural Language Processing with Python. Sebastopol u. a.: O'Reilly 2009. ISBN 978-0-596-51649-9

Das Buch soll nicht so gut sein, sagt eine, die das an der Uni macht. Damit habe ich nichts zu tun, sehe aber verschiedentlich die Ankündigungen für Veranstaltungen in den USA durchrauschen, die NLP als Thema ankündigen. Da muss es eine eigene Community geben.
merve28
User
Beiträge: 18
Registriert: Mittwoch 9. März 2016, 19:38

nezzcarth hat geschrieben:
merve28 hat geschrieben: Ich weiß halt nicht, was ich in der Funktion ergänzen muss, sodass die Endungen von den Verben (also von VBG, VBN und VBD laut POS-Tag) entfernt werden.
Na ja, Noisefloor hatte doch schon die wesentliche Frage dazu gestellt: In welcher Form liegt das Wortarten-Tag vor? Ist der Parameter "word" ein String, oder z.B. ein (named)tuple, o.ä.? Die Wortarten-Information muss halt innerhalb der Funktion zugänglich sein.

Übrigens: Ein Lemmatisierer hilft dir nicht weiter?
"Word" ist eine List. Also ich hab meinen Text schon Lemmatisiert (mit dem WordNetLemmatizer) und da bleiben halt auch manche Endungen.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

merve28 hat geschrieben:"Word" ist eine List.
"Counter" ist ein EventHandler.
"VideoFile" ist eine Datenbankverbindung.
"SumOfItems" ist ein ThreadPool.
"Boat" ist ein Flugzeug.

Wo ist hier der Fehler?
In specifications, Murphy's Law supersedes Ohm's.
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

Ich kenne nicht ein Verb das auf ing endet.
empty Sig
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

"sing!"
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Ich kenne nicht ein Verb das auf ing endet.
Mag ja sein - hat aber mit dem Problem des TE so rein gar nichts zu tun, dass ist ja eher dein Problem ;-)

Abgesehen davon ist hier auch nirgendwo die Rede davon, dass wir nur von der deutschen Sprache reden...

Gruß, noisefloor
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

Sirius3 hat geschrieben:"sing!"
endet auf ausrufezeichen ;)
empty Sig
BlackJack

Ich habe sie jetzt nicht alle durchgesehen, aber da sind ein paar Verben dabei. :-)

Code: Alles auswählen

$ grep '^[a-z].*ing$' /usr/share/dict/ngerman
abfing
abging
abhing
anfing
anging
auffing
aufging
ausging
beging
bring
dahinging
daranging
davonging
drauflosging
einging
empfing
entging
erging
fing
fortging
gering
ging
heranging
herging
hervorging
hinausging
hindurchging
hing
kling
nachging
niederging
sing
spring
umfing
umging
unterfing
unterging
verbring
verfing
verging
verkling
verlorenging
vorausging
vorbeiging
vorging
wegging
weiterging
zerging
zuging
zurückging
zusammenhing
zwing
überging
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

ihr seid solche spielverderber..... :shock:
von umformen war keine rede.
empty Sig
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
von umformen war keine rede
Es war auch nie die Rede davon, dass der TE nur Verben in der Grundform hat. Mal abgesehen davon, dass es selten Sinn macht, bei der Grundform eines Verbs noch was abzutrennen. Dann bleibt in den seltensten Fällen ein sinnvolles Wort übrig...

Gruß, noisefloor
BlackJack

Zumal die Funktion `stem()` heisst. Wenn man nur die Stammform von Verben hat, braucht man so eine Funktion nicht. :-)
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

BlackJack hat geschrieben:Zumal die Funktion `stem()` heisst. Wenn man nur die Stammform von Verben hat, braucht man so eine Funktion nicht. :-)
Allerdings ist die von Stemmern ermittelte "Stammform" nicht (zwangsläufig) identisch mit der Ziterform (Infinitiv bei deutschen Verben) oder der Wurzel. Verschiedene Formen eines Worts sollen für den Zweck der Sprachverarbeitung auf eine gemeinsame Form abgebildet werden, die nicht zwangsläufig mit der übereinstimmen muss, die man durch grammatische Analyse erhält. Insofern kann ein Stemmer auf für "Stammformen" anwendbar sein.
Antworten