Как избежать разбиения предложения nltk на аббревиатуры?
в настоящее время я использую NLTK для обработки языка, но я столкнулся с проблемой токенизации предложения.
вот в чем проблема: Предположим, у меня есть предложение: "рис. 2 показан США карте." Когда я использую Punkt tokenizer, мой код выглядит так:
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.')
он возвращает это:
['Fig. 2 shows a U.S.A.', 'map.']
токенизатор не может обнаружить аббревиатуру "U. S. A.", Но он работал на"fig". Теперь, когда я использую токенизатор по умолчанию, NLTK предоставляет:
import nltk
nltk.tokenize.sent_tokenize('Fig. 2 shows a U.S.A. map.')
этот время я получаю:
['Fig.', '2 shows a U.S.A. map.']
он распознает более распространенные "США", но не видит"fig"!
как я могу объединить эти два метода? Я хочу использовать варианты аббревиатур по умолчанию, а также добавлять свои собственные аббревиатуры.
1 ответов
Я думаю нижний регистр для u.s.а в списке сокращений будет прекрасно работать для вас Попробуйте это,
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.')
он возвращает мне это:
['Fig. 2 shows a U.S.A. map.']