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
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).
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)
Hilfreichster Kommentar
Schneller Hack, nach #2154
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 denpunkt._params.abbrev_types
.