Nltk: Das Teilen von Sätzen schlägt in einigen Eckfällen fehl

Erstellt am 26. Aug. 2019  ·  3Kommentare  ·  Quelle: nltk/nltk

Ich verstehe, wie schwierig es ist, Sätze zu trennen, die Abkürzungen enthalten, und dass das Hinzufügen von Abkürzungen Tücken haben kann, wie in #2154 schön erklärt wird. Ich bin jedoch über einige Eckfälle gestolpert, nach denen ich gerne fragen würde. Es sieht so aus, als ob Sie eines der folgenden verwenden würden

  • z.B
  • dh
  • et al.

im Satz wird den Satz falsch aufteilen.

Beispiel für ie und eg

>>> sentence = ("Even though exempli gratia and id est are both Latin "
                "(and therefore italicized), no need to put e.g. or i.e. in "
                "italics when they’re in abbreviated form.")
>>> sent_tokenize_list = sent_tokenize(sentence)                                                                                                                           

>>> sent_tokenize_list                                                                                                                                            
['Even though exempli gratia and id est are both Latin (and therefore italicized), no need to put e.g.',
 'or i.e.',
 'in italics when they’re in abbreviated form.']

Beispiel für et al.

>>> from nltk.tokenize import sent_tokenize
>>> sentence = ("If David et al. get the financing, we can move forward "
                "with the prototype. However, this is very unlikely be cause "
                "they did not publish sufficiently last year.")
>>> sent_tokenize_list = sent_tokenize(sentence)
>>> sent_tokenize_list
['If David et al.',
 'get the financing, we can move forward with the prototype.',
 'However, this is very unlikely because they did not publish sufficiently last year.']

Auf meinem Laptop verwende ich nltk.__version__ 3.4.5.

Aus meiner Sicht unterscheidet sich dieses Problem von #2154, da dies bekannte und häufig verwendete Abkürzungen sind (insbesondere in akademischen Kreisen).

nice idea tokenizer

Hilfreichster Kommentar

Schneller Hack, nach #2154

>>> import nltk
>>> punkt = nltk.data.load('tokenizers/punkt/english.pickle')
>>> punkt._params.abbrev_types.add('al')
>>> text = 'If David et al. get the financing, we can move forward with the prototype. However, this is very unlikely be cause they did not publish sufficiently last year.'
>>> punkt.tokenize(text)
['If David et al. get the financing, we can move forward with the prototype.', 
'However, this is very unlikely be cause they did not publish sufficiently last year.']

Aber vielleicht ist es eine gute Idee, einen verbesserten Satz-Tokenizer (#2008, #1214) zu haben, wie wir es mit dem Wort-Tokenizer (#2355) gemacht haben.

ZB können wir als ersten Schritt einfach alle nltk.corpus.nonbreaking_prefixes bis zu den punkt._params.abbrev_types .

Alle 3 Kommentare

Schneller Hack, nach #2154

>>> import nltk
>>> punkt = nltk.data.load('tokenizers/punkt/english.pickle')
>>> punkt._params.abbrev_types.add('al')
>>> text = 'If David et al. get the financing, we can move forward with the prototype. However, this is very unlikely be cause they did not publish sufficiently last year.'
>>> punkt.tokenize(text)
['If David et al. get the financing, we can move forward with the prototype.', 
'However, this is very unlikely be cause they did not publish sufficiently last year.']

Aber vielleicht ist es eine gute Idee, einen verbesserten Satz-Tokenizer (#2008, #1214) zu haben, wie wir es mit dem Wort-Tokenizer (#2355) gemacht haben.

ZB können wir als ersten Schritt einfach alle nltk.corpus.nonbreaking_prefixes bis zu den punkt._params.abbrev_types .

Ich wollte gerade ein Thema in diese Richtung hinzufügen, habe aber gesehen, dass Sie mich geschlagen haben. Wenn/wenn die Leute dazu kommen, dies zu beheben, würde ich vorschlagen, die Liste der lateinischen Abkürzungen hier zu überprüfen:
https://en.wikipedia.org/wiki/List_of_Latin_abbreviations

Technisch gesehen stellen diese Abkürzungen in ihrer vollständig geschriebenen, nicht abgekürzten Form _Mehrwortausdrücke_ (_MWEs_) dar, nicht wahr? Ich meine, okay, technisch gesehen stellen sie (auch) feste _Phrasal-Vorlagen_ dar, aber das ändert nichts an ihrem MWE-Status, also frage ich mich, ob #2202 bei diesem Problem helfen könnte (obwohl ich das Gefühl habe, dass die Antwort auf "Nein" hinausläuft) ") 🤔

(PS, Fun Facts: '& al.' ist eine legale Abkürzung von 'et al.', da '&c.' eine legale Abkürzung von 'etc.' ist)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen