TL; DR:
nltk.word_tokenize
Änderungen doppelte Anführungszeichen Änderungen von " -> ``
beginnen und doppelte Anführungszeichen aus " -> ''
endet.
In langen:
Zuerst wird die nltk.word_tokenize
tokenizes Basis auf, wie Penn Treebank Token versehen wurde, ist es aus nltk.tokenize.treebank
kommt, siehe https://github.com/nltk/nltk/blob/develop/nltk/tokenize/init.py#L91 und https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L23
class TreebankWordTokenizer(TokenizerI):
"""
The Treebank tokenizer uses regular expressions to tokenize text as in Penn Treebank.
This is the method that is invoked by ``word_tokenize()``. It assumes that the
text has already been segmented into sentences, e.g. using ``sent_tokenize()``.
dann eine Liste von regex kommt Ersatz für Kontraktionen bei https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L48, kommt es aus der "Robert MacIntyres Tokenizer“, also https://www.cis.upenn.edu/~treebank/tokenizer.sed
Die Kontraktionen spaltet Wörter wie "Gonna", "wollen", etc .:
>>> from nltk import word_tokenize
>>> word_tokenize("I wanna go home")
['I', 'wan', 'na', 'go', 'home']
>>> word_tokenize("I gonna go home")
['I', 'gon', 'na', 'go', 'home']
Danach haben wir die Zeichensetzung Teil erreichen, die Sie zu fragen sind, sehen https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L63:
def tokenize(self, text):
#starting quotes
text = re.sub(r'^\"', r'``', text)
text = re.sub(r'(``)', r' \1 ', text)
text = re.sub(r'([ (\[{<])"', r'\1 `` ', text)
Ah ha, ab zitiert Änderungen von „->` `:
>>> import re
>>> text = '"A"'
>>> re.sub(r'^\"', r'``', text)
'``A"'
KeyboardInterrupt
>>> re.sub(r'(``)', r' \1 ', re.sub(r'^\"', r'``', text))
' `` A"'
>>> re.sub(r'([ (\[{<])"', r'\1 `` ', re.sub(r'(``)', r' \1 ', re.sub(r'^\"', r'``', text)))
' `` A"'
>>> text_after_startquote_changes = re.sub(r'([ (\[{<])"', r'\1 `` ', re.sub(r'(``)', r' \1 ', re.sub(r'^\"', r'``', text)))
>>> text_after_startquote_changes
' `` A"'
Dann sehen wir https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L85, die mit der Endung Anführungszeichen Angebote:
#ending quotes
text = re.sub(r'"', " '' ", text)
text = re.sub(r'(\S)(\'\')', r'\1 \2 ', text)
Anwenden der Regexes:
>>> re.sub(r'"', " '' ", text_after_startquote_changes)
" `` A '' "
>>> re.sub(r'(\S)(\'\')', r'\1 \2 ', re.sub(r'"', " '' ", text_after_startquote_changes))
" `` A '' "
Also, wenn Sie die Liste der Tokens für doppelte Anführungszeichen nach nltk.word_tokenize
suchen möchten Suchen Sie einfach nach ``
und ''
anstelle von "
.
Es ermöglicht, die Fehler zu vermeiden (wie man richtig "' '?)? Wenn Sie es ändern möchten, können Sie [die Quelle] aktualisieren (http://www.nltk.org/_modules/nltk/tokenize/punkt .html # PunktLanguageVars.word_tokenize) Aber du kannst auch die falschen Zeichen in deiner Token-Liste ersetzen ... – clemtoy