我目前正在使用NLTK进行语言处理,但是我遇到了一个句子分词的问题。
问题如下: 假设我有一个句子:"Fig. 2 shows a U.S.A. map." 当我使用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.']
它可以识别常见的“U.S.A.”,但无法识别“fig”!
我该如何将这两种方法结合起来?我想使用默认的缩写选择,同时添加自己的缩写。