Hallo,
ich hoffe, dass mir jemand, der mit Korpora arbeitet helfen kann.
habe ein Text (roman) und möchte den annotieren mit POS-Tags.
Ich brauche einen Tokenizer.
Dafür habe ich einen Sentence Splitter programmiert (nicht so gut, aber es läuft).
Jetzt soll (jeder) der Satz in Token zerlegt werden.
Ich kann zerlegen in z.B.: "sagte:" ("Er sagte: Korpus..."), oder "Korpus..."
Die Frage ist:
1. Wie kann man alle Wörter zerlegen (ohne Satzzeichen-die brauche ich aber wieder)
2. mit POS-Tags annotieren (den Annotations-Tagset habe ich), und
3. wieder zurück (mit Annotationen) in Output.
4. Gibt es einen TOKENIZER (Sprachunabhängig) for free, mit Python code.
Z.B.:
B/ (Satzanfang)
Er Pron (Pronomen)
sagte V (Verb)
:
Korpus N (Nomen)
...
$ (Satzende)
Noch eine linguistische Frage (wie sind die Konventionen):
Wörter mit Bindestrich (z.B.: "Tausender-Zahlen") - bekommt "Tausender" ein POS-Tag und "Zahlen" ein POS-Tag, oder beide bekommen nur einen POS-Tag?
Danke
TOKENIZER
Hallo Buxho, willkommen.
Ich verstehe ehrlich gesagt nicht, was du willst. Hilft dir http://www.ling.uni-potsdam.de/~timo/le ... eumann.pdf oder http://typo.uni-konstanz.de/~mayer/cour ... zung11.pdf weiter?
Oder suchst du einfach
Stefan
Ich verstehe ehrlich gesagt nicht, was du willst. Hilft dir http://www.ling.uni-potsdam.de/~timo/le ... eumann.pdf oder http://typo.uni-konstanz.de/~mayer/cour ... zung11.pdf weiter?
Oder suchst du einfach
Code: Alles auswählen
import re
s = u"Preußen besiegte Österreich in Leuthen."
print re.findall("(?u)\w+|[.,!?]", s)
sicher, dass du nur einen tokenizer brauchst?
scheint nicht so...?
schau mal beim NLTK vorbei.
http://www.nltk.org/
scheint nicht so...?
schau mal beim NLTK vorbei.
http://www.nltk.org/
http://www.kinderpornos.info
Hi, dieser re Ausdruck ist super. (ich kann es noch nicht so gut... )sma hat geschrieben:...Oder suchst du einfach
StefanCode: Alles auswählen
import re s = u"Preußen besiegte Österreich in Leuthen." print re.findall("(?u)\w+|[.,!?]", s)
Man bekommt: [u'Preu\xdfen', u'besiegte', u'\xd6sterreich', u'in', u'Leuthen', u'.']
Die Trennung von Satzzeichen ist echt super.
Nur wie macht man das wenn man in Schleife ist und eine Liste von Sätzen hat?
z.B.:
Code: Alles auswählen
satzListe = ["Sie ist Krankenschwester.", "Er ist Student."]
...
def tokenizer(satzListe):
for a in satzListe:
for satz in a.split(): ##"Sie ist Krankenschwester.".split()
...
usw...
und wie kann ich dann den obigen Satz [u'Preu\xdfen', u'besiegte', u'\xd6sterreich', u'in', u'Leuthen', u'.'] in einfache Liste (ohne u) umwandeln?
z.B. in: ['Preu\xdfen', 'besiegte', '\xd6sterreich', 'in', 'Leuthen', '.']
Vielen, vielen Dank
Edit (BlackJack): Quelltext in Code-Tags gesetzt.
@BUXHO: Das sind ziemlich grundlegende Fragen. Du solltest lernen die Dir selbst zu beantworten.
Zum Beispiel könntest Du Dir bei dem Quelltext da mal in der innersten Schleife `a` und `satz` ausgeben lassen und wirst vielleicht feststellen, dass die Namen nicht besonders passend gewählt sind. `a` sowieso nicht, weil der Namen nicht aussagekräftig ist, und `satz` repräsentiert dort keine ganzen Sätze.
Dann musst Du nur noch herausfinden was ganze Sätze dort sind und darauf dann das `re.split()` anwenden.
Was Du da hast *sind* normale Listen. Die enthalten Unicode-Objekte. Was Du anscheinend gerne hättest, sind ISO-8859-1 kodierte Zeichenketten. Dazu gibt's diese Lektüre: [wiki]Von Umlauten, Unicode und Encodings[/wiki]
Zum Beispiel könntest Du Dir bei dem Quelltext da mal in der innersten Schleife `a` und `satz` ausgeben lassen und wirst vielleicht feststellen, dass die Namen nicht besonders passend gewählt sind. `a` sowieso nicht, weil der Namen nicht aussagekräftig ist, und `satz` repräsentiert dort keine ganzen Sätze.
Dann musst Du nur noch herausfinden was ganze Sätze dort sind und darauf dann das `re.split()` anwenden.
Was Du da hast *sind* normale Listen. Die enthalten Unicode-Objekte. Was Du anscheinend gerne hättest, sind ISO-8859-1 kodierte Zeichenketten. Dazu gibt's diese Lektüre: [wiki]Von Umlauten, Unicode und Encodings[/wiki]