Python 如何避免NLTK';缩略语上的句子标记符拆分?

Python 如何避免NLTK';缩略语上的句子标记符拆分?,python,nlp,nltk,tokenize,Python,Nlp,Nltk,Tokenize,我目前正在使用NLTK进行语言处理,但我遇到了一个句子标记化的问题 问题是: 假设我有一句话:“图2显示了美国地图。” 当我使用punkt标记器时,我的代码如下所示: from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktParameters punkt_param = PunktParameters() abbreviation = ['U.S.A', 'fig'] punkt_param.abbrev_types = set

我目前正在使用NLTK进行语言处理,但我遇到了一个句子标记化的问题

问题是: 假设我有一句话:“图2显示了美国地图。” 当我使用punkt标记器时,我的代码如下所示:

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”


如何将这两种方法结合起来?我想使用默认的缩写选项,同时添加我自己的缩写。

我认为缩写列表中的小写字母u.s.a对您很合适 试试这个

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.']