¿Cómo evitar que el tokenizador de oraciones de NLTK se divida en las abreviaturas?

Actualmente estoy usando NLTK para el procesamiento del lenguaje, pero me he encontrado con un problema de tokenización de oraciones.

Aquí está el problema: supongamos que tengo una frase: “La figura 2 muestra un mapa de EE. UU.” Cuando uso el tokenizer punkt, mi código se ve así:

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters punkt_param = PunktParameters() abbreviation = ['USA', 'fig'] punkt_param.abbrev_types = set(abbreviation) tokenizer = PunktSentenceTokenizer(punkt_param) tokenizer.tokenize('Fig. 2 shows a USA map.') 

Devuelve esto:

 ['Fig. 2 shows a USA', 'map.'] 

El tokenizer no puede detectar la abreviatura “EE. UU.”, Pero funcionó en “higo”. Ahora cuando uso el tokenizador predeterminado, NLTK proporciona:

 import nltk nltk.tokenize.sent_tokenize('Fig. 2 shows a USA map.') 

Esta vez me sale:

 ['Fig.', '2 shows a USA map.'] 

¡Reconoce el “EE. UU.” Más común, pero no ve el “higo”!

¿Cómo puedo combinar estos dos métodos? Quiero usar las opciones de abreviatura predeterminadas, así como agregar mis propias abreviaturas.

Creo que minúscula para usa en la lista de abreviaturas funcionará bien para ti Intenta esto,

 from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters punkt_param = PunktParameters() abbreviation = ['usa', 'fig'] punkt_param.abbrev_types = set(abbreviation) tokenizer = PunktSentenceTokenizer(punkt_param) tokenizer.tokenize('Fig. 2 shows a USA map.') 

Me devuelve esto:

 ['Fig. 2 shows a USA map.']