Obecnie używam NLTK do przetwarzania języka, ale napotkałem problem tokenizacji zdań.Jak uniknąć tokenizera zdań NLTK dzieląc na skróty?
Oto problem: Załóżmy, że mam zdanie: "Ryc. 2 pokazuje mapę USA." Gdy używam Punkt tokenizera, mój kod wygląda następująco:
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.')
Zwraca to:
['Fig. 2 shows a U.S.A.', 'map.']
tokenizera nie może wykryć skrót „USA”, ale to działało na „rys” . Teraz gdy używam domyślnego tokenizer NLTK stanowi:
import nltk
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.')
Tym razem pojawia się:
['Fig.', '2 shows a U.S.A. map.']
Uznaje więcej wspólnego "USA" ale nie widać "fig"!
Jak mogę połączyć te dwie metody? Chcę używać domyślnych skrótów, a także dodawać własne skróty.
Wow dziękuję bardzo! To naprawdę pomocne! –