Как избежать разбиения предложения 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.']