Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8111[/thread]

Wortsegmentierer: Modul?



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
pktm
 2006-06-27 01:56
#67642 #67642
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Weis jemand von euch zufällig, ob es ein Modul zur Segmentierung deutschsprachiger Texte in dessen Wörter gibt?
Oder kennt jemand einen guten Algorithmus?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2006-06-27 02:57
#67643 #67643
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
was bitte ist ein wortsegmentierer?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2006-06-27 03:32
#67644 #67644
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmm, vielleicht CPAN:Text::Ngrams
Dubu
 2006-06-27 12:03
#67645 #67645
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Vielleicht auch einfach nur @woerter = $text =~ /\w+/g ?
esskar
 2006-06-27 14:02
#67646 #67646
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich weiß auch nicht was er meint! :)
pktm
 2006-06-27 15:41
#67647 #67647
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nun, mit Wortsegmentierer meine ich etwas, dass einen beliebigen Text in seine Wörter zerlegt. So soll z.B. aus dem Satz "Bernd fuhr Eva betrunken nach Hause" das hier werden: [qw(Bernd fuhr Eva betrunken nach Hause)].

CPAN:http://search.cpan.org/dist/perl-5.8.8/lib/Text/ParseWords.pm scheint das zu tun, aber damuss ich ja trotzdem noch meine eigene Regex zu schreiben. Und etwas mit einer Grammatik wäre mir auch lieber.
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2006-06-27 15:55
#67648 #67648
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
achso.
schau dir mal CPAN:Text::ExtractWords an!
vayu
 2006-06-27 19:17
#67649 #67649
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,27.06.2006, 10:03]Vielleicht auch einfach nur @woerter = $text =~ /\w+/g ?[/quote]
sollte da nicht reichen was Dubu geschrieben hat? :rock:
Gast Gast
 2006-06-27 20:00
#67650 #67650
Besser ist diese Alternative, die an whitespace splittet, so dass Bindestriche oder Umlaute keine Schwierigkeiten machen:

@woerter = split /\s+/, $text;

Je nach Verwendungszweck muss noch tokenized werden, um Sonderzeichen (Kommata, Punkte, klammern, Anführungszeichen...) zu entfernen - noch kleben diese am Wort.

$wort =~ s/(.+)[\»\:\.\,\"\)\;\]]+$/$1/;
$wort =~ s/^([\«\(\[\"]+)(.+)/$2/;

Gruß, Pida
Dubu
 2006-06-27 21:05
#67651 #67651
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Naja, solche Negativlisten gefallen mir nicht besonders. Da vergisst man zu leicht etwas.
Wer Umlaute braucht, nimmt einfach "use locale", dann klappt's auch mit dem \w oder - noch besser - dem [:alpha:].

Dann wird's aber knifflig: Wenn man vermeiden möchte, dass aus einer Formulierung wie "be- und entladen" das Wort "be" extrahiert wird, braucht man mehr als eine zeichenbasierte Analyse.

Wenn ich oben "Grammatik" lese, dann scheint es mir doch eher um Informationsextraktion zu gehen. Da kenne ich leider kein Perl-Lösung, aber wenn der Anspruch höher ist und es auch Java sein darf, würde ich mal einen Blick auf das GATE-Projekt werfen.
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-06-27 01:56.