Attualmente sto usando NLTK per l'elaborazione del linguaggio, ma ho riscontrato un problema di tokenizzazione della frase.Come evitare il tokenizer della frase di NLTK che si divide sulle abbreviazioni?
Ecco il problema: Si supponga di avere una frase: "La Fig. 2 mostra una mappa degli Stati Uniti." Quando uso tokenizer Punkt, il mio codice simile a questo:
from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters
punkt_param = PunktParameters()
abbreviation = ['U.S.A', 'fig']
punkt_param.abbrev_types = set(abbreviation)
tokenizer = PunktSentenceTokenizer(punkt_param)
tokenizer.tokenize('Fig. 2 shows a U.S.A. map.')
Si restituisce questo:
['Fig. 2 shows a U.S.A.', 'map.']
Il tokenizzatore non può rilevare l'abbreviazione "USA", ma ha funzionato su "fico" . Ora quando uso il predefinito tokenizzatore NLTK dispone:
import nltk
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.')
Questa volta ottengo:
['Fig.', '2 shows a U.S.A. map.']
riconosce il più comune "U.S.A." ma non riesce a vedere "fig"!
Come posso combinare questi due metodi? Voglio usare le scelte di abbreviazione predefinite e aggiungere le mie abbreviazioni personali.
Wow grazie mille! Questo è davvero utile! –